MDS を実行するブローカーの Kerberos 認証の構成¶
この構成では、MDS 用 LDAP 認証と Kerberos ブローカー認証を組み合わせる方法について説明します。基本的には、これら 2 つの認証方式を組み合わせます。
- 前提条件
- MDS 用 Kerberos 認証を構成するための前提条件は、MDS を構成するための前提条件と同じです。「Metadata Service (MDS) の構成」を参照してください。
- Kafka ブローカーのユーザーを作成します。
- キータブを生成します。「GSSAPI の構成」を参照してください。
- PEM キーペアの作成 を行います。
ちなみに
Confluent CLI confluent secret コマンドを使用すると、パスワードやその他の構成データを安全に保管できます。詳細については、「シークレット管理」を参照してください。
以下に示されている、必要な構成をオプションを
etc.kafka.server.properties
ファイルに追加します。かっこ(<>
)で囲まれた内容は、環境に応じてカスタマイズする必要があります。注釈
この例の LDAP 構成属性には、Active Directory(AD)を使用するシステムが反映されています。別のディレクトリシステムを使用している場合は、LDAP 管理者に詳細を確認してください。
1 ############################# Confluent Authorizer Settings ############################# 2 authorizer.class.name=io.confluent.kafka.security.authorizer.ConfluentServerAuthorizer 3 confluent.authorizer.access.rule.providers=ZK_ACL,CONFLUENT 4 confluent.metadata.server.listeners=http://0.0.0.0:8090 5 confluent.metadata.server.advertised.listeners=http://localhost:8090 6 #### Semi-colon separated list of super users in the format <principalType>:<principalName> #### 7 #### For example: super.users=User:admin;User:mds #### 8 super.users=User:<org-super-user>;User:<org-kerberos-principal> 9 10 ############################# Identity Provider Settings (LDAP) ############################# 11 #### JNDI Connection Settings #### 12 ldap.java.naming.factory.initial=com.sun.jndi.ldap.LdapCtxFactory 13 ldap.java.naming.provider.url=ldap://<hostname>:389 14 #### MDS Authentication Settings #### 15 ldap.java.naming.security.principal=<mds-user-DN> 16 ldap.java.naming.security.credentials=<password> 17 ldap.java.naming.security.authentication=simple 18 #### Client Authentication Settings #### 19 ldap.user.search.base=<user-search-base-DN> 20 ldap.user.name.attribute=sAMAccountName 21 ldap.group.search.base=CN=Users,DC=rbac,DC=confluent,DC=io 22 ldap.group.object.class=group 23 ldap.group.member.attribute.pattern=UID=(.*),OU=Users,DC=EXAMPLE,DC=COM 24 ldap.user.object.class=account 25 26 ############################# MDS Server Settings ############################# 27 confluent.metadata.server.authentication.method=BEARER 28 29 ############################# MDS Token Service Settings ############################# 30 confluent.metadata.server.token.key.path=<path-to-token-key-pair.pem> 31 32 ############################# Listener Settings ############################# 33 listeners=INTERNAL_SASL_PLAINTEXT://:9093,EXTERNAL_RBAC_SASL_PLAINTEXT://:9092 34 advertised.listeners=INTERNAL_SASL_PLAINTEXT://localhost:9093,EXTERNAL_RBAC_SASL_PLAINTEXT://localhost:9092 35 inter.broker.listener.name=INTERNAL_SASL_PLAINTEXT 36 37 ############################# Listener SASL Configuration Settings ############################# 38 listener.security.protocol.map=INTERNAL_SASL_PLAINTEXT:SASL_PLAINTEXT,EXTERNAL_RBAC_SASL_PLAINTEXT:SASL_PLAINTEXT 39 40 ############################# Broker Internal Listener SASL Configuration Settings ############################# 41 sasl.mechanism.inter.broker.protocol=GSSAPI 42 listener.name.internal_sasl_plaintext.sasl.enabled.mechanisms=GSSAPI 43 listener.name.internal_sasl_plaintext.sasl.kerberos.service.name=kafka 44 listener.name.internal_sasl_plaintext.gssapi.sasl.jaas.config = \ 45 com.sun.security.auth.module.Krb5LoginModule required \ 46 debug=true \ 47 useKeyTab=true \ 48 storeKey=true \ 49 keyTab="<path-to-your-keytab>" \ 50 principal="<org-kerberos-principal>"; (for example: kafka/kafka1.hostname.com@EXAMPLE.COM) 51 52############################# Broker External (Client) Listener SASL Configuration Settings ############################# 53listener.name.external_rbac_sasl_plaintext.sasl.enabled.mechanisms=OAUTHBEARER 54listener.name.external_rbac_sasl_plaintext.oauthbearer.sasl.jaas.config= \ 55 org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule required \ 56 publicKeyPath="<path-to-your-public-key"; 57listener.name.external_rbac_sasl_plaintext.oauthbearer.sasl.server.callback.handler.class=io.confluent.kafka.server.plugins.auth.token.TokenBearerValidatorCallbackHandler 58listener.name.external_rbac_sasl_plaintext.oauthbearer.sasl.login.callback.handler.class=io.confluent.kafka.server.plugins.auth.token.TokenBearerServerLoginCallbackHandler
パラメーターの説明については、以下をご覧ください。
- 行 2 ~ 8: RBAC を有効にします。詳細については、「Confluent Server Authorizer の構成」を参照してください。
- 行 11 ~ 24: LDAP を構成し、RBAC による使用を可能にします。詳細については、「MDS の LDAP グループベース認可の構成」および「LDAP 認証の構成」を参照してください。
- 行 27: リスナーを定義し、ブローカー用に HTTPS を構成します。詳細については、「Metadata Service の構成オプション」を参照してください。
- 行 30: プライベートキーの構成プロパティを定義します。詳細については、「Metadata Service の構成オプション」を参照してください。
- 行 33 ~ 58: SASL 認証と Kerberos 認証を有効にします。詳細については、「JAAS を使用した SASL による認証」および「GSSAPI の構成」を参照してください。