Connect ワーカー用の RBAC の構成

ちなみに

Kafka Connect 用の RBAC を構成する前に、ホワイトペーパー『 Kafka Connect のロールベースアクセス制御(RBAC) 』をお読みください。このホワイトペーパーでは、基本的な RBAC の概念を紹介し、Kafka Connect およびコネクターでの RBAC の使用について詳しく説明しています。また、GitHub のデモへのリンクも含まれており、ローカルにインストールした Confluent Platform で動作を確認することができます。

RBAC が有効な環境では、各 Connect ワーカーファイルに RBAC の構成を数行追加する必要があります。各 Connect ワーカーファイルに追加する必要がある内容については、以下を参照してください。

  1. 以下のパラメーターを追加して、コネクターごとのプリンシパルを有効にします。

    connector.client.config.override.policy=All
    
  2. 以下のパラメーターを追加して、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>";
    
  3. 以下のパラメーターを追加して、クラスター内のコネクターで使用されるそれぞれの種類の Kafka クライアント用に ワーカー全体のデフォルトプロパティ を設定します。

    producer.security.protocol=SASL_PLAINTEXT
    producer.sasl.mechanism=OAUTHBEARER
    producer.sasl.login.callback.handler.class=io.confluent.kafka.clients.plugins.auth.token.TokenUserLoginCallbackHandler
    

    注釈

    べき等性を持つプロデューサーによって使用されるすべてのプリンシパルは、クラスターに対する Write として認可される必要があります。Kafka クラスターに対する DeveloperWrite または ResourceOwner の RBAC ロールをバインドすると、Write のアクセス許可が付与されます。2 つのロールのうちアクセス許可が低いのは DeveloperWrite であり、こちらが第一に推奨されます。消費については、べき等性を持つコンシューマーになるために追加の Kafka のアクセス許可は必要ありません。以下のロールバインディングにより、Write でクラスターにアクセスできるようになります。

    confluent iam rbac role-binding 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
    
  4. 以下の Metadata Service(MDS)パラメーターを追加すると、ユーザーに 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
    

    注釈

    MDS と通信するクライアントが利用できる追加の構成については、Confluent Platform のセキュリティに関するドキュメントの「REST クライアントの構成」を参照してください。

  5. 次のパラメーターを追加すると、Connect でユーザーリクエスト、および権限を借用するリクエスト(REST プロキシからのリクエストなど)のトークン認証に基本認証が使用されます。

    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>
    

コネクターの認証情報にシークレットレジストリを使用する場合は、「シークレットレジストリ」を参照してください。