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を構成します。
承認者の有効化
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を適用することもできます。