24.2. superUsers
スーパーユーザーとして扱われるユーザープリンシパルのリスト。このリストのユーザープリンシパルは、ACL ルールをクエリーしなくても常に許可されます。
Kafka.spec.kafka.config
を使用して、カスタムオーサライザーを初期化するための設定を追加することができます。
Kafka.spec
でのカスタム認証設定の例
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: my-cluster namespace: myproject spec: kafka: # ... authorization: type: custom authorizerClass: io.mycompany.CustomAuthorizer superUsers: - CN=client_1 - user_2 - CN=client_3 # ... config: authorization.custom.property1=value1 authorization.custom.property2=value2 # ...
Kafka
カスタムリソースの設定に加えて、カスタムオーソライザークラスとその依存関係を含む JAR ファイルが Kafka ブローカーのクラスパス上で利用可能である必要があります。
AMQ Streams の Maven ビルドプロセスでは、docker-images/kafka/kafka-thirdparty-libs
ディレクトリーの下にある pom.xml
ファイルに依存関係として追加することで、生成された Kafka ブローカーコンテナーイメージにカスタムサードパーティーライブラリーを追加する仕組みがあります。ディレクトリーには、Kafka のバージョンごとに異なるフォルダーが含まれています。適切なフォルダーを選択します。pom.xml
ファイルを修正する前に、サードパーティーのライブラリーが Maven リポジトリーで利用可能であり、その Maven リポジトリーが AMQ Streams のビルドプロセスからアクセス可能である必要があります。
Kafka.spec.kafka
の config
プロパティーにある super.user
設定オプションは無視されます。この代わりに、authorization
プロパティーでスーパーユーザーを指定します。詳細は Kafka ブローカーの設定 を参照してください。
カスタム承認では、oauth
認証を使用して groupsClaim
設定属性を設定する時に JWT トークンから抽出されたグループメンバーシップ情報を利用できます。グループは、以下のように authorize() 呼び出し中に OAuthKafkaPrincipal
オブジェクトで利用できます。
public List<AuthorizationResult> authorize(AuthorizableRequestContext requestContext, List<Action> actions) { KafkaPrincipal principal = requestContext.principal(); if (principal instanceof OAuthKafkaPrincipal) { OAuthKafkaPrincipal p = (OAuthKafkaPrincipal) principal; for (String group: p.getGroups()) { System.out.println("Group: " + group); } } }