Ansible Playbook を使用した Confluent Platform での暗号化の構成¶
Ansible Playbooks for Confluent Platform では、PLAINTEXT(暗号化なし)と TLS 暗号化がサポートされています。デフォルトは PLAINTEXT です。
TLS 暗号化¶
すべてのコンポーネントを対象にした TLS 構成¶
すべてのコンポーネントで TLS 暗号化を有効にするには、hosts.yml
ファイルに以下を追加します。
all:
vars:
ssl_enabled: true
個々のコンポーネントでの TLS 構成¶
特定のコンポーネントで TLS 暗号化を有効または無効にするには、グローバルの ssl_enabled
設定に加えて、以下の設定を true
または false
にします。
zookeeper_ssl_enabled
kafka_connect_ssl_enabled
kafka_rest_ssl_enabled
schema_registry_ssl_enabled
control_center_ssl_enabled
ksql_ssl_enabled
たとえば、Schema Registry 以外のすべてのコンポーネントで TLS を有効にするには、以下のように設定します。
all:
vars:
ssl_enabled: true
schema_registry_ssl_enabled: false
この構成では、証明書はデフォルトで自己署名されます。カスタムの証明書をデプロイする場合には、カスタムの証明書、またはカスタムのキーストアとトラストストアを用意します。
証明書¶
以下のいずれかを使用して TLS 暗号化を有効にできます。
自己署名証明書: 認証機関が Ansible Playbook で生成され、各ホストの証明書の署名に使用されます。
自己署名証明書は、テスト環境および開発環境のみで使用してください。セキュリティ上の懸念から、自己署名証明書は本稼働環境ではサポートされていません。
カスタム証明書: 証明書の署名に使用する証明機関の証明書の他に、署名済みの証明書とキーをホストごとに指定します。
カスタムのキーストアとトラストストア: キーストアとトラストストアをホストごとに指定します。
カスタム証明書を使用する TLS¶
各ホストでカスタム証明書を用意する場合には、Ansible コントロールノードの各ホストに証明機関の証明書、署名済み証明書、およびキーが必要です。
以下の手順により hosts.yml
をアップデートします。
カスタム証明書を提供することを指定します。
all: vars: ssl_custom_certs: true
各ホストの証明書の署名に使用する、証明機関の証明書へのパスを入力します。
all: vars: ssl_ca_cert_filepath: "/tmp/certs/ca.crt"
各ホストについて、署名済み証明書へのパスとキーファイルへのパスを設定します。
all: vars: ssl_signed_cert_filepath: "/tmp/certs/{{inventory_hostname}}-signed.crt" ssl_key_filepath: "/tmp/certs/{{inventory_hostname}}-key.pem"
この例の変数
{{inventory_hostname}}
は、インベントリファイルに設定された各ホスト名を Ansible が読み出せるということを表しています。このため、署名済み証明書とキーファイルのファイル名にホスト名を使用すると、インベントリファイルを短くすることができます。または、ホストの直下に変数を設定することもできます。以下に例を示します。
schema_registry: hosts: ip-192-24-10-207.us-west.compute.internal: ssl_signed_cert_filepath: "/tmp/certs/192-24-10-207-signed.crt ssl_key_filepath: "/tmp/certs/192-24-10-207-key.pem
カスタムのキーストアとトラストストアを使用する TLS¶
各ホストでカスタムのキーストアとトラストストアを用意する場合には、Ansible コントロールノードの各ホストにキーストアとトラストストア(およびそれらのパスワード)を用意し、さらに各ホストのパスワードを用意する必要があります。
以下の手順により hosts.yml
をアップデートします。
カスタムのキーストアとトラストストアを提供することを指定します。
all: vars: ssl_provided_keystore_and_truststore: true
キーストアとトラストストアのファイルパスとパスワードを指定します。
all: vars: ssl_keystore_filepath: "/tmp/certs/{{inventory_hostname}}-keystore.jks" ssl_keystore_key_password: mystorepassword ssl_keystore_store_password: mystorepassword ssl_truststore_filepath: "/tmp/certs/truststore.jks" ssl_truststore_password: truststorepass
変数
{{inventory_hostname}}
を使用し、各ホストに同じパスワードを設定すれば、上記の変数をhosts.yml
に一度設定するだけで済みます。または、各ホストの下に上記の変数を設定することもできます。以下に例を示します。
schema_registry: hosts: ip-192-24-10-207.us-west.compute.internal: ssl_keystore_filepath: "/tmp/certs/{{inventory_hostname}}-keystore.jks" ssl_keystore_key_password: mystorepassword ssl_keystore_store_password: mystorepassword ssl_truststore_filepath: "/tmp/certs/truststore.jks" ssl_truststore_password: truststorepass
FIPS 用の構成¶
Ansible を使用すると、Confluent Platform 連邦情報処理標準(Federal Information Processing Standard: FIPS)モード を構成できます。この機能は Confluent Server ではサポートされていますが、Kafka の標準のデプロイでは利用できません。
以下は、FIPS 対応で Ansible Playbooks for Confluent Platform を構成する場合の要件です。
- FIPS 対応の RHEL 7 システム
- 乱数ジェネレーターサービスが実行中であること
- Java 8(Java 11 はサポートされていません)
ssl_custom_certs
を使用する場合、ssl_signed_cert_filepath
に証明書チェーンへのパスを指定する必要があります。単一の署名済み証明書を単独で使用することはできません。- すべてのリスナーで
ssl_enabled: true
を設定しておく必要があります。
Confluent Server で FIPS 対応モードを構成するには、hosts.yml
ファイル内で以下のように設定します。
all:
vars:
fips_enabled: true
ssl_enabled: true