LDAP 認証を使用した Control Center の構成¶
Control Center では、JAAS を通じた HTTP 基本認証を提供しています。
以下のチュートリアルでは、LDAP を利用した HTTP 基本認証を有効にするために必要な手順を説明します。AD(Active Directory)LDAP 実装について記載してありますが、他の内容も含んでいます。
特殊文字のエスケープ¶
重要
制限されているすべての LDAP 文字を エスケープ します。最適な結果を得るためには、エスケープが必要な文字を使用しないことをお勧めします。『 Best Practices for LDAP Naming Attributes 』に従ってください。
文字 | 説明 |
---|---|
, |
コンマ [1] |
\ |
バックスラッシュ |
# |
ポンド記号(ナンバー記号) |
+ |
加算記号 |
= |
等号 |
< |
不等号(より小) |
> |
不等号(より大) |
; |
セミコロン |
'' |
二重引用符 |
スペース [2] |
[2] | 先頭または末尾のスペースをエスケープする必要があります。埋め込まれたスペースはエスケープしません。 |
Control Center JAAS の構成¶
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"; };
重要
bindDn
、userBaseDn
、またはroleBaseDn
に特殊文字が含まれている場合は、バックスラッシュでエスケープしてください。コンマ文字は、LDAP フィルター仕様により、CN
およびOU
用の予約された区切り文字として指定されています。コンマ,
文字を含むすべてのCN
またはOU
は、LDAP JAAS の構成ファイル内で二重バックスラッシュによってエスケープされる必要があります。たとえば、"CN=adminstrator, firstclass,
は"CN=administrator\\, firstclass,OU=users,DC=confluent,DC=io"
としてエスケープされます。LDAP フィルター処理およびエスケープの詳細については、次の スタックオーバーフローの記事 を参照してください。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 構成リファレンス」を参照してください。
注釈
- 複数グループのメンバーシップを持つユーザーは、最も限定されたアクセス権限のみ許可されます。たとえば、ユーザーが
admin
とreadonly
の 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\_
です。