Kafka ACLの構成

Kafkaアクセス制御リスト(ACL)は、Streaming with Apache Kafkaでクラスタ・リソースに対する権限を指定するために使用されます。

元金
Kafkaクラスタによって認証されるユーザーまたはアプリケーション。主体名の形式は、SASL/SCRAMやmTLSなど、使用される認証メカニズムのタイプによって異なります。
オペレーション
Kafkaクラスタ・リソースに対して実行されるアクション(作成、削除、生成または消費など)。
リソース
クラスタ、ブローカ、ブローカ・グループまたはトピックなどのKafkaクラスタ・リソース。リソースにACLが関連付けられていない場合、スーパー・ユーザーのみがリソースにアクセスできます。

Kafka ACLは、リソースに対して操作を実行できるプリンシパルを制御します。リソースにallow ACLとdeny ACLの両方を作成する場合、deny ACLはallow ACLより優先されます。

次のタスクを実行して、クラスタのACLを構成します。

  1. 承認者の有効化
  2. Kafka ACLの作成
  3. クラスタ構成の更新

承認者の有効化

Apache Kafkaでは、認可プロバイダは、アクセス制御リスト(ACL)を適用し、認可されたユーザーまたはクライアントのみがACLで定義されたアクションを実行するようにするコンポーネントです。

次の情報を使用して、クラスタのconfig_name.properties構成ファイルを更新します。
authorizer.class.name=kafka.security.authorizer.AclAuthorizer

Kafka ACLの作成

クラスタ内のACLを追加、削除またはリストするには、Apache Kafka認可プロバイダCLIを使用します。

Apache Kafka ACLのアクセス・ルールは、次の形式を使用して作成されます。

Principal P is [Allowed/Denied] Operation O From Host H on any Resource R matching ResourcePattern RP

ここで、

  • プリンシパルPは、アクセス権が付与または拒否されるユーザーまたはクライアントです。
  • Allowed/Deniedは、主体に設定されたアクセス権です。
  • 「操作O」は、読取り、書込み、作成および削除などのリソースに対するアクションです。
  • ホストHは、リクエストを行うソースです。任意のホストを表すには、ワイルドカード*が使用されます。
  • リソースRは、トピックやクラスタなどのKafkaエンティティです。
  • ResourcePattern RPは、リソースの照合方法です。たとえば、ResourcePattern RPは、logs-の値を持つPREFIXEDです。つまり、ACLは、名前がlogs-で始まるすべてのトピックに適用されます。RPが特定のリソースRと一致しない場合、Rには関連付けられたACLがありません。
次のコマンドを実行して、ユーザーAliceが任意のホストからlogs-で始まるすべてのトピックに書き込むことを許可するACLルールを作成します。
kafka-acls --bootstrap-server <bootstrap-server-url> \
--command-config <config-file-path> \
--add \
--allow-principal User:Alice \
--operation Write \
--topic logs- \
--resource-pattern-type prefixed

クラスタ構成の更新

クラスタを作成すると、そのクラスタに対してデフォルトの構成ファイルが作成されます。ACLプロパティーは、クラスタのACLが見つからない場合に、すべてのユーザーがリソースにアクセスできるように設定されています。

allow.everyone.if.no.acl.foundプロパティをfalseに変更して、デフォルトでセキュリティ・アクセスを拒否します。このプロパティの値をfalseに設定すると、ACLおよびスーパー・ユーザーで許可されているクライアントまたはユーザーのみがリソースにアクセスできます。
allow.everyone.if.no.acl.found=false
allow.everyone.if.no.acl.foundのデフォルト値trueを保持して、ACLのないリソースへの無制限のアクセスを許可し、ACLを持つリソースに対してACLを適用することもできます。