Connect ワーカー用の RBAC の構成¶
ちなみに
Kafka Connect 用の RBAC を構成する前に、ホワイトペーパー『 Kafka Connect のロールベースアクセス制御(RBAC) 』をお読みください。このホワイトペーパーでは、基本的な RBAC の概念を紹介し、Kafka Connect およびコネクターでの RBAC の使用について詳しく説明しています。また、GitHub のデモへのリンクも含まれており、ローカルにインストールした Confluent Platform で動作を確認することができます。
RBAC が有効な環境では、各 Connect ワーカーファイルに RBAC の構成を数行追加する必要があります。各 Connect ワーカーファイルに追加する必要がある内容については、以下を参照してください。
以下のパラメーターを追加して、コネクターごとのプリンシパルを有効にします。
connector.client.config.override.policy=All
以下のパラメーターを追加して、Connect フレームワークで サービスプリンシパル を使用して Kafka での認証を行えるようにします。service principal は、Connect で内部の構成トピックの読み取りと書き込みを行うために使用されます。
<username>
と<passsword>
は、 サービスプリンシパル のセットアップ時にアクセス許可を付与された service principal のユーザー名とパスワードです。# Or SASL_SSL if using SSL security.protocol=SASL_PLAINTEXT sasl.mechanism=OAUTHBEARER sasl.login.callback.handler.class=io.confluent.kafka.clients.plugins.auth.token.TokenUserLoginCallbackHandler sasl.jaas.config=org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule required \ username="<username>" \ password="<password>" \ metadataServerUrls="http(s)://<host>:<port>";
以下のパラメーターを追加して、クラスター内のコネクターで使用されるそれぞれの種類の Kafka クライアント用に ワーカー全体のデフォルトプロパティ を設定します。
producer.security.protocol=SASL_PLAINTEXT producer.sasl.mechanism=OAUTHBEARER producer.sasl.login.callback.handler.class=io.confluent.kafka.clients.plugins.auth.token.TokenUserLoginCallbackHandler
注釈
べき等性を持つプロデューサーによって使用されるすべてのプリンシパルは、クラスターに対する IdempotentWrite として認可される必要があります。Kafka クラスターに対する DeveloperWrite または ResourceOwner の RBAC ロールをバインドすると、IdempotentWrite のアクセス許可が付与されます。2 つのロールのうちアクセス許可が低いのは DeveloperWrite であり、こちらが第一に推奨されます。消費については、べき等性を持つコンシューマーになるために追加の Kafka のアクセス許可は必要ありません。以下のロールバインディングにより、IdempotentWrite でクラスターにアクセスできるようになります。
confluent iam rolebinding create \ --principal $PRINCIPAL \ --role DeveloperWrite \ --resource Cluster:kafka-cluster \ --kafka-cluster-id $KAFKA_CLUSTER_ID
consumer.security.protocol=SASL_PLAINTEXT consumer.sasl.mechanism=OAUTHBEARER consumer.sasl.login.callback.handler.class=io.confluent.kafka.clients.plugins.auth.token.TokenUserLoginCallbackHandler
admin.security.protocol=SASL_PLAINTEXT admin.sasl.mechanism=OAUTHBEARER admin.sasl.login.callback.handler.class=io.confluent.kafka.clients.plugins.auth.token.TokenUserLoginCallbackHandler
以下のパラメーターを追加すると、ユーザーに Connect への RBAC 認証が必須となります。ユーザーにコネクターの作成、コネクターの構成の読み取り、コネクターの削除を許可するには、RBAC 認証が必要です。
# Adds the RBAC REST extension to the Connect worker rest.extension.classes=io.confluent.connect.security.ConnectSecurityExtension # The location of a running metadata service confluent.metadata.bootstrap.server.urls=<mds_server_url> # Credentials to use when communicating with the MDS confluent.metadata.basic.auth.user.info=<username>:<password> confluent.metadata.http.auth.credentials.provider=BASIC
次のパラメーターを追加すると、Connect でユーザーリクエスト、および権限を借用するリクエスト(REST プロキシからのリクエストなど)のトークン認証に HTTP 基本認証が使用されます。
rest.servlet.initializor.classes=io.confluent.common.security.jetty.initializer.InstallBearerOrBasicSecurityHandler # The path to a directory containing public keys that should be used to verify json web tokens # during authentication public.key.path=<public key path>
コネクターの認証情報にシークレットレジストリを使用する場合は、「シークレットレジストリ」を参照してください。