Kafka 接続のセキュリティ設定
注意
本製品では hdp と flink の両イメージで Kafka を使用しているため、セキュリティ設定を変更する際は両方を変更する必要があります。
接続設定パラメーター
| 環境変数 | 説明 | デフォルト値 |
|---|---|---|
ENV_KAFKA_ENDPOINTS | Kafka Broker のアドレス一覧。複数の場合はカンマで区切ります | 127.0.0.1:9092 |
ENV_KAFKA_SECURITY_PROTOCOL | Kafka のセキュリティプロトコル | 空 |
ENV_KAFKA_SASL_MECHANISM | SASL 認証メカニズム | 空 |
ENV_KAFKA_SASL_USERNAME | SASL ユーザー名 | 空 |
ENV_KAFKA_SASL_PASSWORD | SASL パスワード | 空 |
ENV_KAFKA_SSL_CA_LOCATION | Kafka CA 証明書のパス | 空 |
ENV_KAFKA_SSL_CLIENT_CA_LOCATION | Kafka クライアント証明書のパス | 空 |
ENV_KAFKA_SSL_CLIENT_KEY_LOCATION | Kafka クライアント秘密鍵のパス | 空 |
セキュリティプロトコル
Kafka は Plaintext、SaslPlaintext、Ssl、SaslSsl など、複数のセキュリティ認証モードに対応しています。
1. Plaintext(デフォルト)
認証機構を有効にせず、平文で通信します。SASL や SSL のパラメーターを設定する必要はありません。
2. SaslPlaintext(SASL 認証を有効化)
SASL による認証を行いますが、データは平文で送信されます。
設定ファイルに次の環境変数を追加してください。
| 環境変数 | 説明 |
|---|---|
ENV_KAFKA_SECURITY_PROTOCOL | SaslPlaintext に設定 |
ENV_KAFKA_SASL_MECHANISM | SASL 認証メカニズム。PLAIN に固定 |
ENV_KAFKA_SASL_USERNAME | SASL ユーザー名 |
ENV_KAFKA_SASL_PASSWORD | SASL パスワード |
3. Ssl(TLS 暗号化を有効化)
TLS/SSL で通信を暗号化します。SASL 認証は有効にしません。
設定ファイルに次の環境変数を追加してください。
| 環境変数 | 説明 |
|---|---|
ENV_KAFKA_SECURITY_PROTOCOL | Ssl に設定 |
ENV_KAFKA_SSL_CA_LOCATION | CA ルート証明書のパス |
ENV_KAFKA_SSL_CLIENT_CA_LOCATION | クライアント証明書のパス |
ENV_KAFKA_SSL_CLIENT_KEY_LOCATION | クライアント秘密鍵のパス |
4. SaslSsl(SASL と TLS を有効化)
SASL 認証と SSL 暗号化通信を同時に有効にします(推奨するセキュリティモード)。
設定ファイルに次の環境変数を追加してください。
| 環境変数 | 説明 |
|---|---|
ENV_KAFKA_SECURITY_PROTOCOL | SaslSsl に設定 |
ENV_KAFKA_SASL_MECHANISM | SASL 認証メカニズム。PLAIN に固定 |
ENV_KAFKA_SASL_USERNAME | SASL ユーザー名 |
ENV_KAFKA_SASL_PASSWORD | SASL パスワード |
ENV_KAFKA_SSL_CA_LOCATION | CA ルート証明書(PEM 形式) |
ENV_KAFKA_SSL_CLIENT_CA_LOCATION | クライアント証明書(PEM 形式) |
ENV_KAFKA_SSL_CLIENT_KEY_LOCATION | クライアント秘密鍵(PEM 形式) |
TLS 証明書の設定
Ssl または SaslSsl を使用する場合は、コンテナ内に TLS 証明書を配置する必 要があります。
証明書ファイル
次の PEM 形式の証明書を用意してください。
| ファイル | 説明 |
|---|---|
ca.crt | Kafka CA ルート証明書 |
client.crt | クライアント証明書 |
client.key | クライアント秘密鍵 |
ディレクトリの例:
volume/kafka/
├─ ca.crt
├─ client.crt
└─ client.key
Docker で証明書をマウントする例
証明書をコンテナ内にマウントします。
volumes:
- ./volume/kafka/ca.crt:/usr/local/kafka/ca.crt
- ./volume/kafka/client.crt:/usr/local/kafka/client.crt
- ./volume/kafka/client.key:/usr/local/kafka/client.key
対応する環境変数は次のとおりです。環境変数に指定するパスは、コンテナ内のパスと一致させてください。
ENV_KAFKA_SSL_CA_LOCATION: "/usr/local/kafka/ca.crt"
ENV_KAFKA_SSL_CLIENT_CA_LOCATION: "/usr/local/kafka/client.crt"
ENV_KAFKA_SSL_CLIENT_KEY_LOCATION: "/usr/local/kafka/client.key"