通信セキュリティ設定

以下のセクションでは、通信設定の構成について説明します。

MQTT Proxy と MQTT クライアント間

MQTT Proxy と MQTT 間で使用可能な通信設定は、以下のとおりです。

セキュリティ設定

以下のモードがサポートされています。

  • PLAINTEXT
  • SSL
  • TLS
  • SASL_PLAINTEXT
  • SASL_SSL
  • SASL_TLS

listeners.security.protocol プロパティを設定して、これらを構成することができます。デフォルトでは、認証および暗号化されないチャンネルが使用されます。

listeners.security.protocol 認証 暗号化
PLAINTEXT × ×
SSL ×
TLS ×
SASL_PLAINTEXT ×
SASL_SSL
SASL_TLS

認証設定

認証を構成および使用するには、listeners.security.protocol=SASL_PLAINTEXTlisteners.security.protocol=SASL_SSL、または listeners.security.protocol=SASL_TLS を設定する必要があります。次に、通常の JAAS 構成ファイルを JVM オプションとして渡すことができます。たとえば、

export KAFKA_OPTS="-Djava.security.auth.login.config=<path/to/JAAS-config-file>"

MQTT Proxy には、デフォルトのログインモジュールである io.confluent.mqtt.protocol.security.PropertyFileLoginModule が付属します。このモジュールは、ローカルのプロパティファイルと照合してユーザーを認証します。これは開発テストにおいて使用できますが、本稼働環境では使用しません。

# Sample JAAS file

ConfluentKafkaMqtt {
  io.confluent.mqtt.protocol.security.PropertyFileLoginModule required
  file="/tmp/credentials.txt";
};

暗号化設定

デフォルトでは、暗号化は無効になっています。有効にするには、listeners.security.protocol=SSLlisteners.security.protocol=SASL_SSLlisteners.security.protocol=TLS、または listeners.security.protocol=SASL_TLS を設定する必要があります。次に、目的の org.apache.kafka.common.config.SslConfigs <../clients/javadocs/index.html?org/apache/kafka/common/config/SslConfigs.html> を渡すことができます。セキュリティの設定の詳細については、「セキュリティのチュートリアル」を参照してください。暗号化の問題をデバッグするには、VM オプションの -Djavax.net.debug=all を追加します。

MQTT Proxy と Kafka 間

MQTT Proxy と Kafka 間で使用可能な通信設定は、以下のとおりです。

セキュリティ設定

以下のモードがサポートされています。

  • PLAINTEXT
  • SSL
  • SASL_PLAINTEXT
  • SASL_SSL

producer.security.protocol プロパティを設定して、これらを構成することができます。デフォルトでは、認証および暗号化されないチャンネルが使用されます。

producer.security.protocol 認証 暗号化
PLAINTEXT × ×
SSL ×
SASL_PLAINTEXT ×
SASL_SSL

producer.security.protocal に加えて、他にもいくつかのセキュリティプロパティを構成する必要があります。producer* のプレフィックスが付いたすべてのプロパティは、(Kafka への書き込みのために)プロキシにより作成された基盤となるプロデューサーに伝播されることに注意してください。以下は、SASL_SSL 構成プロパティの例を示しています。

producer.security.protocol=SASL_SSL
producer.ssl.truststore.location=/var/ssl/private/kafka.client.truststore.jks
producer.ssl.truststore.password=<password>
producer.sasl.mechanism=PLAIN
producer.sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required \
  username="<username>" \
  password="<password>";