6.4. 認可
Kafka ブローカーの認可は、authorizer プラグインを使用して実装されます。
このセクションでは、Kafka で提供される AclAuthorizer プラグインを使用する方法を説明します。
または、独自の認可プラグインを使用できます。たとえば、OAuth 2.0 トークンベースの認証 を使用している場合、OAuth 2.0 認可 を使用できます。
6.4.1. ACL オーソライザーの有効化 リンクのコピーリンクがクリップボードにコピーされました!
/opt/kafka/config/server.properties ファイルを編集して ACL オーソライザーを追加します。authorizer.class.name プロパティーで完全修飾名を指定して、オーソライザーを有効にします。
オーソライザーの有効化
authorizer.class.name=kafka.security.authorizer.AclAuthorizer
authorizer.class.name=kafka.security.authorizer.AclAuthorizer
AclAuthorizer の場合、完全修飾名は kafka.security.authorizer.AclAuthorizer です。
6.4.1.1. ACL ルール リンクのコピーリンクがクリップボードにコピーされました!
ACL オーソライザーは ACL ルールを使用して Kafka ブローカーへのアクセスを管理します。
ACL ルールは次の形式で定義されます。
プリンシパル P は、ホスト H から <kafka_resource> R で <operation> O を許可または拒否されます。
たとえば、ユーザー John がホスト 127.0.0.1 からのトピック コメント を 表示 できるようにルールを設定できます。ホストは、John が接続しているマシンの IP アドレスです。
ほとんどの場合、ユーザーはプロデューサーまたはコンシューマーアプリケーションです。
Consumer01 は、ホスト 127.0.0.1 からコンシューマーグループ アカウント に 書き込み できます。
特定のリソースに ACL ルールが存在しない場合は、すべてのアクションが拒否されます。この動作は、Kafka 設定ファイル /opt/kafka/config/server.properties で allow.everyone.if.no.acl.found プロパティーを true に設定すると変更できます。
6.4.1.2. プリンシパル リンクのコピーリンクがクリップボードにコピーされました!
プリンシパル はユーザーのアイデンティティーを表します。ID の形式は、クライアントが Kafka に接続するために使用される認証メカニズムによって異なります。
-
User:ANONYMOUS: 認証なしで接続する場合 User:<username>: PLAIN や SCRAM などの単純な認証メカニズムを使用して接続する場合例:
User:adminまたはUser:user1User:<DistinguishedName>: TLS クライアント認証を使用して接続する場合例:
User:CN=user1,O=MyCompany,L=Prague,C=CZ-
User:<Kerberos username>: Kerberos を使用して接続する場合
DistinguishedName はクライアント証明書からの識別名です。
Kerberos ユーザー名 は、Kerberos プリンシパルの主要部分で、Kerberos を使用して接続する場合のデフォルトで使用されます。sasl.kerberos.principal.to.local.rules プロパティーを使用して、Kerberos プリンシパルから Kafka プリンシパルを構築する方法を設定できます。
6.4.1.3. ユーザーの認証 リンクのコピーリンクがクリップボードにコピーされました!
認可を使用するには、認証を有効にし、クライアントにより使用される必要があります。そうでないと、すべての接続のプリンシパルは User:ANONYMOUS になります。
認証方法の詳細は、「認証」 を参照してください。
6.4.1.4. スーパーユーザー リンクのコピーリンクがクリップボードにコピーされました!
スーパーユーザーは、ACL ルールに関係なくすべてのアクションを実行できます。
スーパーユーザーは、super.users プロパティーを使用して Kafka 設定ファイルで定義されます。
以下に例を示します。
super.users=User:admin,User:operator
super.users=User:admin,User:operator
6.4.1.5. レプリカブローカーの認証 リンクのコピーリンクがクリップボードにコピーされました!
認可を有効にすると、これはすべてのリスナーおよびすべての接続に適用されます。これには、ブローカー間のデータのレプリケーションに使用されるブローカー間の接続が含まれます。そのため、認可を有効にする場合は、ブローカー間接続に認証を使用し、ブローカーが使用するユーザーに十分な権限を付与してください。たとえば、ブローカー間の認証で kafka-broker ユーザーが使用される場合、スーパーユーザー設定にはユーザー名 super.users=User:kafka-broker が含まれている必要があります。
ACL で制御できる Kafka リソースの操作の詳細は、Apache Kafka のドキュメント を参照してください。
6.4.2. ACL ルールの追加 リンクのコピーリンクがクリップボードにコピーされました!
ACL オーソライザーを使用して、アクセス制御リスト (ACL) に基づいて Kafka へのアクセスを制御する場合、kafka-acls.sh ユーティリティーを使用して新しい ACL ルールを追加できます。
kafka-acls.sh パラメーターオプションを使用して、ACL ルールを追加、リスト表示、および削除したり、その他の機能を実行したりします。パラメーターには、--add など、二重ハイフンの標記が必要です。
前提条件
- ユーザーが作成され、Kafka リソースにアクセスするための適切な権限が付与されています。
- Streams for Apache Kafka が 各ホストにインストールされており、設定ファイルが使用可能である。
- Kafka ブローカーで 認可が有効 になっている。
手順
--addオプションを指定してkafka-acls.shを実行します。例:
MyConsumerGroupコンシューマーグループを使用して、user1およびuser2のmyTopicからの読み取りを許可します。opt/kafka/bin/kafka-acls.sh --bootstrap-server localhost:9092 --add --operation Read --topic myTopic --allow-principal User:user1 --allow-principal User:user2 opt/kafka/bin/kafka-acls.sh --bootstrap-server localhost:9092 --add --operation Describe --topic myTopic --allow-principal User:user1 --allow-principal User:user2 opt/kafka/bin/kafka-acls.sh --bootstrap-server localhost:9092 --add --operation Read --operation Describe --group MyConsumerGroup --allow-principal User:user1 --allow-principal User:user2
opt/kafka/bin/kafka-acls.sh --bootstrap-server localhost:9092 --add --operation Read --topic myTopic --allow-principal User:user1 --allow-principal User:user2 opt/kafka/bin/kafka-acls.sh --bootstrap-server localhost:9092 --add --operation Describe --topic myTopic --allow-principal User:user1 --allow-principal User:user2 opt/kafka/bin/kafka-acls.sh --bootstrap-server localhost:9092 --add --operation Read --operation Describe --group MyConsumerGroup --allow-principal User:user1 --allow-principal User:user2Copy to Clipboard Copied! Toggle word wrap Toggle overflow user1が IP アドレスホスト127.0.0.1からmyTopicを読むためのアクセスを拒否します。opt/kafka/bin/kafka-acls.sh --bootstrap-server localhost:9092 --add --operation Describe --operation Read --topic myTopic --group MyConsumerGroup --deny-principal User:user1 --deny-host 127.0.0.1
opt/kafka/bin/kafka-acls.sh --bootstrap-server localhost:9092 --add --operation Describe --operation Read --topic myTopic --group MyConsumerGroup --deny-principal User:user1 --deny-host 127.0.0.1Copy to Clipboard Copied! Toggle word wrap Toggle overflow MyConsumerGroupでmyTopicのコンシューマーとしてuser1を追加します。opt/kafka/bin/kafka-acls.sh --bootstrap-server localhost:9092 --add --consumer --topic myTopic --group MyConsumerGroup --allow-principal User:user1
opt/kafka/bin/kafka-acls.sh --bootstrap-server localhost:9092 --add --consumer --topic myTopic --group MyConsumerGroup --allow-principal User:user1Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.4.3. ACL ルールの一覧表示 リンクのコピーリンクがクリップボードにコピーされました!
ACL オーソライザーを使用して、アクセス制御リスト (ACL) に基づいて Kafka へのアクセスを制御する場合、kafka-acls.sh ユーティリティーを使用して既存の ACL ルールをリスト表示できます。
前提条件
- ACL が追加 されている。
手順
--listオプションを指定してkafka-acls.shを実行します。以下に例を示します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
6.4.4. ACL ルールの削除 リンクのコピーリンクがクリップボードにコピーされました!
ACL オーソライザーを使用して、アクセス制御リスト (ACL) に基づいて Kafka へのアクセスを制御する場合、kafka-acls.sh ユーティリティーを使用して既存の ACL ルールを削除できます。
前提条件
- ACL が追加 されている。
手順
--removeオプションを指定してkafka-acls.shを実行します。例:
MyConsumerGroupコンシューマーグループを使用して、user1およびuser2のmyTopicからの読み取りを許可する ACL を削除します。opt/kafka/bin/kafka-acls.sh --bootstrap-server localhost:9092 --remove --operation Read --topic myTopic --allow-principal User:user1 --allow-principal User:user2 opt/kafka/bin/kafka-acls.sh --bootstrap-server localhost:9092 --remove --operation Describe --topic myTopic --allow-principal User:user1 --allow-principal User:user2 opt/kafka/bin/kafka-acls.sh --bootstrap-server localhost:9092 --remove --operation Read --operation Describe --group MyConsumerGroup --allow-principal User:user1 --allow-principal User:user2
opt/kafka/bin/kafka-acls.sh --bootstrap-server localhost:9092 --remove --operation Read --topic myTopic --allow-principal User:user1 --allow-principal User:user2 opt/kafka/bin/kafka-acls.sh --bootstrap-server localhost:9092 --remove --operation Describe --topic myTopic --allow-principal User:user1 --allow-principal User:user2 opt/kafka/bin/kafka-acls.sh --bootstrap-server localhost:9092 --remove --operation Read --operation Describe --group MyConsumerGroup --allow-principal User:user1 --allow-principal User:user2Copy to Clipboard Copied! Toggle word wrap Toggle overflow MyConsumerGroupでmyTopicのコンシューマーとしてuser1を追加する ACL を削除します。opt/kafka/bin/kafka-acls.sh --bootstrap-server localhost:9092 --remove --consumer --topic myTopic --group MyConsumerGroup --allow-principal User:user1
opt/kafka/bin/kafka-acls.sh --bootstrap-server localhost:9092 --remove --consumer --topic myTopic --group MyConsumerGroup --allow-principal User:user1Copy to Clipboard Copied! Toggle word wrap Toggle overflow user1が IP アドレスホスト127.0.0.1からmyTopicを読むためのアクセスを拒否する ACL を削除します。opt/kafka/bin/kafka-acls.sh --bootstrap-server localhost:9092 --remove --operation Describe --operation Read --topic myTopic --group MyConsumerGroup --deny-principal User:user1 --deny-host 127.0.0.1
opt/kafka/bin/kafka-acls.sh --bootstrap-server localhost:9092 --remove --operation Describe --operation Read --topic myTopic --group MyConsumerGroup --deny-principal User:user1 --deny-host 127.0.0.1Copy to Clipboard Copied! Toggle word wrap Toggle overflow