LDAP 認証を使用した Control Center の構成

Control Center では、JAAS を通じた HTTP 基本認証を提供しています。

以下のチュートリアルでは、LDAP を利用した HTTP 基本認証を有効にするために必要な手順を説明します。AD(Active Directory)LDAP 実装について記載してありますが、他の内容も含んでいます。

特殊文字のエスケープ

重要

制限されているすべての LDAP 文字を エスケープ します。最適な結果を得るためには、エスケープが必要な文字を使用しないことをお勧めします。『 Best Practices for LDAP Naming Attributes 』に従ってください。

文字 説明
, コンマ [1]
\ バックスラッシュ
# ポンド記号(ナンバー記号)
+ 加算記号
= 等号
< 不等号(より小)
> 不等号(より大)
; セミコロン
'' 二重引用符
  スペース [2]
[1]二重バックスラッシュまたは \5c によるエスケープが必要です。RFC 2254 を参照してください。
[2]先頭または末尾のスペースをエスケープする必要があります。埋め込まれたスペースはエスケープしません。

Control Center JAAS の構成

  1. JAAS の構成ファイルを以下の内容で作成し、control-center-jaas.conf として保存します。

    注釈

    JAAS の構成ファイルにはコメント付きの行を入力しないでください。# 文字は許可されません。JAAS ファイルにコメントが含まれていると、Control Center 実行時の構成パラメーターの解析に支障が出ます。

    c3 {
      org.eclipse.jetty.jaas.spi.LdapLoginModule required
    
      useLdaps="false"
      contextFactory="com.sun.jndi.ldap.LdapCtxFactory"
      hostname="ad.confluent.io"
      port="389"
      bindDn="cn=admin,dc=confluent,dc=io"
      bindPassword="password"
      authenticationMethod="simple"
      forceBindingLogin="true"
      userBaseDn="ou=People,dc=confluent,dc=io"
      userRdnAttribute="sAMAccountName"
      userIdAttribute="sAMAccountName"
      userPasswordAttribute="userPassword"
      userObjectClass="user"
      roleBaseDn="ou=Groups,DC=confluent,DC=org"
      roleNameAttribute="cn"
      roleMemberAttribute="member"
      roleObjectClass="group";
    };
    

    重要

    bindDnuserBaseDn、または roleBaseDn に特殊文字が含まれている場合は、バックスラッシュでエスケープしてください。コンマ文字は、LDAP フィルター仕様により、CN および OU 用の予約された区切り文字として指定されています。コンマ , 文字を含むすべての CN または OU は、LDAP JAAS の構成ファイル内で二重バックスラッシュによってエスケープされる必要があります。たとえば、"CN=adminstrator, firstclass,"CN=administrator\\, firstclass,OU=users,DC=confluent,DC=io" としてエスケープされます。LDAP フィルター処理およびエスケープの詳細については、次の スタックオーバーフローの記事 を参照してください。

  2. Control Center 構成ファイル(control-center.properties)に以下の構成オプションを追加します。

    1 # The name of the configuration block in the JAAS configuration
    2 confluent.controlcenter.rest.authentication.realm=c3
    3 # HTTP authentication type
    4 confluent.controlcenter.rest.authentication.method=BASIC
    5 # To enabled restricted access, add this line
    6 confluent.controlcenter.auth.restricted.roles=RestrictedGroupName
    7 # Add roles defined in the JAAS config file here
    8 confluent.controlcenter.rest.authentication.roles=c3users,RestrictedGroupName
    

上記の行 5 および 6 に示されているように、Control Center では限定アクセスを許可します。限定アクセスでは UI を使用した編集や作成は許可されません。Control Center 構成の詳細については、「Control Center 構成リファレンス」を参照してください。

注釈

  • 複数グループのメンバーシップを持つユーザーは、最も限定されたアクセス権限のみ許可されます。たとえば、ユーザーが adminreadonly の 2 つのグループのメンバーであり、readonly が限定されたロールである場合、ユーザーは readonly グループの権限のみ許可されます。
  • 限定ロールを有効にすると、ユーザーが トピックを検査 することや ksqlDB クエリを実行 することも防止できます。
  • きめ細かいアクセス制御が必要な場合は、ロールベースアクセス制御(RBAC) を構成することを検討してください。

Control Center の起動

Control Center のスタートアップ時にいくつかのシステムフラグを JVM に渡す必要があります。これを行うには、以下のように CONTROL_CENTER_OPTS フラグをエクスポートします。

注釈

/path/to は実際のファイルパスで置き換えます。

CONTROL_CENTER_OPTS="-Djava.security.auth.login.config=/path/to/propertyfile.jaas" \
control-center-start /path/to/control-center.properties``

Control Center プロパティファイルの詳細については、「Control Center プロパティファイル」を参照してください。

LdapLoginModule の構成

LdapLoginModule を構成します。

debug
デバッグ出力をオンにするかどうかを示します。
contextFactory
LDAP コンテキストファクトリクラスを指定します。たとえば、com.sun.jndi.ldap.LdapCtxFactory です。
hostname
LDAP サーバーのホスト名を指定します。
port
LDAP サーバーでリッスンするポートを指定します。デフォルトポートは非 SSL LDAP および AD の場合は 389、SSL LDAP および AD の場合は 636 です。
bindDn

これは必須です。バインディング認証を使用していない場合は、バインドする必要のあるルート DN に設定します。たとえば、cn=administrator,dc=confluent,dc=io です。

特殊文字のエスケープ」を参照してください。

bindPassword

bindDn のパスワードを指定します。

特殊文字のエスケープ」を参照してください。

authenticationMethod
authenticationMethod=simple を使用します。これが、現在 Control Center でサポートされている唯一の LDAP 認証方式です。
forceBindingLogin
認証を行っているユーザーとしてバインドするのか(true)、そうではなくマネージャーとしてバインドし、検索を実行してユーザーのパスワードを検証するのか(false)を指定します。
forceBindingLoginUseRootContextForRoles
Indicate whether role membership searches will be performed in the root context. If set to true and forceBindingLogin is true, then role membership searches will be performed in the root context, rather than in the bound user context.
useLdaps
Secure LDAP(LDAPS)を使用するかどうかを示します。SSL が有効の場合は必須です。LDAPS を使用する場合は true に設定します。デフォルト値は false です。
userBaseDn

ユーザーを検索するベース DN を指定します。例: ou=People,dc=cops,dc=confluent,dc=io

特殊文字のエスケープ」を参照してください。

userRdnAttribute
DN によってユーザーロールメンバーシップを検索するときに使用されるユーザー名の属性名を指定します。デフォルトは uid です。
userIdAttribute
ユーザー名によってユーザーを識別するための属性名を指定します。デフォルト値は acn です。
userPasswordAttribute
ユーザーパスワードの属性名を指定します。デフォルト値は userPassword です。
userObjectClass
ユーザーオブジェクトクラスの属性名を指定します。デフォルト値は inetOrgPerson です。
roleBaseDn

ロールメンバーシップ検索のベース DN を指定します。例: ou=Groups,dc=cops,dc=confluent,dc=io

特殊文字のエスケープ」を参照してください。

roleNameAttribute
ロール名の属性名を指定します。デフォルト値は roleName です。
roleMemberAttribute
ユーザーの DN を格納したロールの属性名を指定します。デフォルト値は uniqueMember です。
roleUsernameMemberAttribute
ユーザーのユーザー名を格納したロールの属性名を指定します。設定すると、roleMemberAttribute 動作がオーバーライドされます。
roleObjectClass
ロールのオブジェクトクラスを指定します。デフォルト値は groupOfUniqueNames です。
rolePrefix
アプリケーションに返す前にロール名から削除するプレフィックス文字列を指定します。たとえば、confluent\_ です。