4.3. Kafka ブローカーへのアクセスのセキュア化
Kafka ブローカーへのセキュアなアクセスを確立するには、以下を設定し、適用します。
以下を行う
Kafka
リソース。- 指定された認証タイプでリスナーを作成します。
- Kafka クラスター全体の承認を設定します。
-
Kafka ブローカーにリスナー経由でセキュアにアクセスするための
KafkaUser
リソース。
Kafka
リソースを設定して以下を設定します。
- リスナー認証
- Kafka リスナーへのアクセスを制限するネットワークポリシー
- Kafka の承認
- ブローカーへのアクセスが制限されないスーパーユーザー
認証は、リスナーごとに独立して設定されます。承認は、常に Kafka クラスター全体に対して設定されます。
Cluster Operator はリスナーを作成し、クラスターおよびクライアント認証局 (CA) 証明書を設定して Kafka クラスター内で認証を有効にします。
独自の証明書をインストールして、Cluster Operator によって生成された証明書を置き換えることができます。外部認証局によって管理される Kafka リスナー証明書を使用するようにリスナーを設定することもできます。PKCS #12 形式 (.p12) および PEM 形式 (.crt) の証明書を利用できます。
KafkaUser
を使用して、特定のクライアントが Kafka にアクセスするために使用する認証および承認メカニズムを有効にします。
KafkaUser
リソースを設定して以下を設定します。
- 有効なリスナー認証と一致する認証
- 有効な Kafka 承認と一致する承認
- クライアントによるリソースの使用を制御するクォータ
User Operator はクライアントに対応するユーザーを作成すると共に、選択した認証タイプに基づいて、クライアント認証に使用されるセキュリティークレデンシャルを作成します。
その他のリソース
スキーマの詳細は、以下を参照してください。
-
Kafka
については、Kafka
schema reference を参照してください。 -
KafkaUser
については、KafkaUser
schema reference を参照してください。
4.3.1. Kafka ブローカーのセキュア化
この手順では、AMQ Streams の実行時に Kafka ブローカーをセキュアにするためのステップを説明します。
Kafka ブローカーに実装されたセキュリティーは、アクセスを必要とするクライアントに実装されたセキュリティーとの互換性を維持する必要があります。
-
Kafka.spec.kafka.listeners[*].authentication
matchesKafkaUser.spec.authentication
-
Kafka.spec.kafka.authorization
matchesKafkaUser.spec.authorization
この手順では、TLS 認証を使用した簡易承認とリスナーの設定を説明します。リスナーの設定の詳細については、GenericKafkaListener
schema reference を参照してください。
代わりに、リスナー認証 には SCRAM-SHA または OAuth 2.0、Kafka 承認 には OAuth 2.0 または OPA を使用することができます。
手順
Kafka
リソースを設定します。-
承認には
authorization
プロパティーを設定します。 listeners
プロパティーを設定し、認証でリスナーを作成します。以下は例になります。
apiVersion: kafka.strimzi.io/v1beta1 kind: Kafka spec: kafka: # ... authorization: 1 type: simple superUsers: 2 - CN=client_1 - user_2 - CN=client_3 listeners: - name: tls port: 9093 type: internal tls: true authentication: type: tls 3 # ... zookeeper: # ...
- 1
- Authorizationは、
AclAuthorizer
Kafka プラグインを使用して、Kafka ブローカーでのsimple
な承認を可能にします。 - 2
- Kafka へのアクセスを制限されないユーザープリンシパルのリスト。CN は、TLS による認証が使用される場合のクライアント証明書の共通名です。
- 3
- リスナーの認証メカニズムは各リスナーに対して設定でき、相互 TLS、SCRAM-SHA-512、またはトークンベース OAuth 2.0 として指定 できます。
外部リスナーを設定している場合、設定は選択した接続のメカニズムによって異なります。
-
承認には
Kafka
リソースを作成または更新します。oc apply -f KAFKA-CONFIG-FILE
Kafka クラスターは、TLS 認証を使用する Kafka ブローカーリスナーと共に設定されます。
Kafka ブローカー Pod ごとにサービスが作成されます。
サービスが作成され、Kafka クラスターに接続するための ブートストラップアドレス として機能します。
kafka ブローカーの ID を検証するためのクラスター CA 証明書も、
Kafka
リソースと同じ名前で作成されます。