4.2. 仮想クラスターの設定
Kafka クラスターは、プロキシーによって仮想クラスターとして表されます。クライアントは実際のクラスターではなく仮想クラスターに接続します。Streams for Apache Kafka Proxy をデプロイすると、プロキシーに仮想クラスターを作成するための設定が含まれています。
仮想クラスターにはターゲットクラスターが 1 つだけありますが、複数の仮想クラスターが同じクラスターをターゲットにすることができます。各仮想クラスターはターゲットクラスター上の単一のリスナーをターゲットとするため、Kafka 側の複数のリスナーはプロキシーによって複数の仮想クラスターとして表されます。クライアントは、bootstrap_servers
アドレスを使用して仮想クラスターに接続します。仮想クラスターには、ターゲットクラスター内の各ブローカーにマップされるブートストラップアドレスがあります。クライアントがプロキシーに接続すると、アドレスを書き換えることで通信がターゲットブローカーにプロキシーされます。クライアントへの応答は、仮想クラスターの適切なネットワークアドレスを反映するように書き換えられます。
クライアントからターゲットクラスターへの仮想クラスター接続を保護できます。
Streams for Apache Kafka Proxy では、PEM (Privacy Enhanced Mail)、PKCS #12 (Public-Key Cryptography Standards)、または JKS (Java KeyStore) キーストア形式の鍵と証明書を使用できます。
4.2.1. クライアントからの接続の保護
仮想クラスターへのクライアント接続を保護するには、次の手順を実行して仮想クラスターで TLS を設定します。
認証局から仮想クラスターの CA (証明局) 証明書を取得します。証明書を要求するときは、それが仮想クラスターのブートストラップとブローカーのアドレスの名前と一致していることを確認してください。これには、ワイルドカード証明書とサブジェクト別名 (SAN) が必要になる場合があります。
tls
プロパティーを使用して、仮想クラスター設定で TLS 認証情報を指定します。
PKCS #12 設定の例
virtualClusters: my-cluster-proxy: tls: key: storeFile: <path>/server.p12 1 storePassword: passwordFile: <path>/store.password 2 keyPassword: passwordFile: <path>/key.password 3 storeType: PKCS12 4 # ...
実稼働設定では、Kafka クライアントと仮想クラスターで TLS が推奨されます。
PEM 設定の例
virtualClusters: my-cluster-proxy: tls: key: privateKeyFile: <path>/server.key 1 certificateFile: <path>/server.crt 2 keyPassword: passwordFile: <path>/key.password 3 # …
必要に応じて、insecure
プロパティーを設定して信頼を無効にし、証明書の有効性に関係なく、Kafka クラスターとの安全でない接続を確立します。ただし、このオプションは実稼働環境での使用には推奨されません。
安全でない TLS を有効にする例
virtualClusters:
demo:
targetCluster:
bootstrap_servers: myprivatecluster:9092
tls:
trust:
insecure: true 1
#...
# …
- 1
- 安全でない TLS を有効にします。
4.2.2. ターゲットクラスターへの接続のセキュリティー保護
ターゲットクラスターへの仮想クラスター接続を保護するには、仮想クラスターで TLS を設定します。ターゲットクラスターは、TLS を使用するようにすでに設定されている必要があります。
targetCluster.tls
プロパティーを使用して仮想クラスター設定の TLS を指定します。
OpenShift プラットフォームから信頼を継承するには、空のオブジェクト ({}
) を使用します。このオプションは、ターゲットクラスターがパブリック CA によって署名された TLS 証明書を使用している場合に適しています。
TLS のターゲットクラスター設定の例
virtualClusters: my-cluster-proxy: targetCluster: bootstrap_servers: my-cluster-kafka-bootstrap.kafka.svc.cluster.local:9093 tls: {} #...
プライベート CA によって署名された TLS 証明書を使用している場合は、ターゲットクラスターのトラストストア設定を追加する必要があります。
ターゲットクラスターのトラストストア設定の例
virtualClusters: my-cluster-proxy: targetCluster: bootstrap_servers: my-cluster-kafka-bootstrap.kafka.svc.cluster.local:9093 tls: trust: storeFile: <path>/trust.p12 1 storePassword: passwordFile: <path>/store.password 2 storeType: PKCS12 3 #...
mTLS の場合、仮想クラスターのキーストア設定も追加できます。
mTLS のキーストアとトラストストアの設定例
virtualClusters: my-cluster-proxy: targetCluster: bootstrap_servers: my-cluster-kafka-bootstrap.kafka.svc.cluster.local:9093:9092 tls: key: privateKeyFile: <path>/client.key 1 certificateFile: <path>/client.crt 2 trust: storeFile: <path>/server.crt storeType: PEM # ...
実稼働環境外でテストする目的で、insecure
プロパティーを true
に設定して TLS をオフにし、Streams for Apache Kafka Proxy が任意の Kafka クラスターに接続できるようにすることができます。
TLS をオフにする設定例
virtualClusters: my-cluster-proxy: targetCluster: bootstrap_servers: myprivatecluster:9092 tls: trust: insecure: true #...