Control Center での SASL の構成¶
ここに示されている概念の多くは、 Kafka のセキュリティドキュメントから 採用されています。原典のドキュメントを通読して理解することは、SASL 用に Control Center を構成するうえで役立ちます。
以下の説明は、開発セットアップ専用であることを前提としてあり、概ね「Apache Kafka クイックスタート」に従っています。開発目的のみを想定した仕様になっていますが、本稼働環境のクラスターをセキュアにする場合も同じ概念に従います。
ZooKeeper¶
ここでの目的に基づき、ZooKeeper のセキュリティは設定しません。このガイドでは、Control Center が直接依存する要素をセキュアにすることを目的としています。ZooKeeper もセキュアにする場合は、 このドキュメント を参照してください。
Kafka ブローカー¶
ファイルを作成して、KafkaServer
構成を格納します。KafkaServer
セクションはブローカー上での認証用です。この例では、/tmp/kafka_server_jaas.conf
に作成します。
KafkaServer {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="admin"
password="admin-secret"
user_admin="admin-secret"
user_confluent="confluent-secret"
user_metricsreporter="metricsreporter-secret";
};
KafkaClient {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="metricsreporter"
password="metricsreporter-secret";
};
- これにより、サーバー上に複数のユーザーが構成されます。
- 内部のブローカー間トラフィック用の
admin
ユーザー - Confluent Control Center、Kafka Connect および Schema Registry 用の
confluent
ユーザー - Apache Kafka® メトリクスをパブリッシュする Metrics Reporter 用の
metricsreporter
ユーザー
- 内部のブローカー間トラフィック用の
この例でのMetrics Reporter でメトリクスをパブリッシュする先は Metrics Reporter が構成されているのと同じクラスター上です。このため、対応する KafkaClient
クライアント構成を同じファイル内に含める必要があります。
JAAS の構成ファイルの場所を JVM パラメーターとして各クライアント JVM に次のように渡すことができます。
-Djava.security.auth.login.config=/tmp/kafka_server_jaas.conf
次に Kafka ブローカー、モニタリングインターセプターおよび Metrics Reporter をセキュアにします。セキュリティを実現する方法は他にもありますが 、このブローカーは SASL_PLAINTEXT
を使用してセキュアにします。
注釈
これらの値は、Kafka ブローカープロパティファイル <path-to-confluent>/etc/kafka/server.properties
内でアップデートまたは追加する必要があります
############# Broker Security ##############
security.inter.broker.protocol=SASL_PLAINTEXT
sasl.mechanism.inter.broker.protocol=PLAIN
sasl.enabled.mechanisms=PLAIN
listeners=SASL_PLAINTEXT://:9092
############# Confluent Metrics Reporter Security ##############
confluent.metrics.reporter.sasl.mechanism=PLAIN
confluent.metrics.reporter.security.protocol=SASL_PLAINTEXT
この例では、『Control Center クイックスタート』を使用する前提であるため、Metrics Reporter およびモニタリングインターセプターを構成します。
注釈
プレフィックスが confluent.metrics.reporter.
であるすべての設定項目は明示的に設定する必要があります。使用可能なオプションの詳細については、 インターセプター構成のドキュメント を参照してください。
KAFKA_OPTS
が JAAS ファイルを指しているアップデートされた構成を指定し、confluent local services start コマンドを使用してブローカーを起動します。
KAFKA_OPTS=-Djava.security.auth.login.config=/tmp/kafka_server_jaas.conf \
<path-to-confluent>/bin/confluent local services kafka start
Control Center の構成¶
/tmp/kafka_client_jaas.conf
に KafkaClient
エントリを持つファイルを作成します。このファイルの KafkaClient
セクションで、クライアントのプリンシパルを指定する必要があります。後で Control Center および Kafka Connect を認証するために使用されます。
KafkaClient {
org.apache.kafka.common.security.plain.PlainLoginModule required
username="confluent"
password="confluent-secret";
};
JAAS の構成ファイルの場所を JVM パラメーターとして各クライアント JVM に次のように渡すことができます。
-Djava.security.auth.login.config=/tmp/kafka_client_jaas.conf
この結果、confluent.monitoring.interceptor.
と confluent.metrics.reporter.
がセキュアな Kafka ブローカーと通信できるようになります。confluent.monitoring.interceptor.
または confluent.metrics.reporter.
をプレフィックスとするすべてのブローカーでは、JAAS 構成内に有効な KafkaClient
セクションを設定する必要があります。
Control Center では、セキュリティが有効になっているかどうかを知る必要があります。Control Center は、内部で Kafka Streams をステートストアとして使用するため、セキュアなブローカーがあれば、合わせてセキュアにする必要があります。
<path-to-confluent>/etc/confluent-control-center/control-center.properties
を編集します。
########### Control Center security ###########
confluent.controlcenter.streams.sasl.mechanism=PLAIN
confluent.controlcenter.streams.security.protocol=SASL_PLAINTEXT
これで、Control Center を起動することができます。
CONTROL_CENTER_OPTS=-Djava.security.auth.login.config=/tmp/kafka_client_jaas.conf \
<path-to-confluent>/bin/control-center-start <path-to-confluent>/etc/confluent-control-center/control-center.properties
Schema Registry の構成¶
『クイックスタート』に従った場合、Connect では Schema Registry を必要とするため、まず、SASL 認証を使用するように Schema Registry をアップデートする必要があります。
Schema Registry 構成(<path-to-confluent>/etc/schema-registry/schema-registry.properties
)を編集して以下の設定を追加します。
kafkastore.security.protocol=SASL_PLAINTEXT
kafkastore.sasl.mechanism=PLAIN
追加の SCHEMA_REGISTRY_OPTS
パラメーターに 先に作成した JAAS ファイルを指定して Schema Registry を起動します。
SCHEMA_REGISTRY_OPTS=-Djava.security.auth.login.config=/tmp/kafka_client_jaas.conf \
<path-to-confluent>/bin/confluent local services schema-registry start
Connect の構成¶
Connect プロパティファイル(/<path-to-confluent>/etc/schema-registry/connect-avro-distributed.properties
)は、Kafka ブローカーと同じセキュリティプロトコルを使用するように構成する必要があります。たとえば、 SASL_PLAINTEXT
は、プロデューサー、コンシューマー、プロデューサーモニタリングインターセプターおよびコンシューマーモニタリングインターセプターに使用されます。
#### Base connect security ####
security.protocol=SASL_PLAINTEXT
sasl.mechanism=PLAIN
#### Connect producer ####
producer.sasl.mechanism=PLAIN
producer.security.protocol=SASL_PLAINTEXT
#### Connect consumer ####
consumer.sasl.mechanism=PLAIN
consumer.security.protocol=SASL_PLAINTEXT
#### Monitoring producer interceptor ####
producer.confluent.monitoring.interceptor.sasl.mechanism=PLAIN
producer.confluent.monitoring.interceptor.security.protocol=SASL_PLAINTEXT
#### Monitoring consumer interceptor ####
consumer.confluent.monitoring.interceptor.sasl.mechanism=PLAIN
consumer.confluent.monitoring.interceptor.security.protocol=SASL_PLAINTEXT
注釈
Control Center 上のすべてのカスタムクライアントでは、これらの設定を対象のプロデューサーまたはコンシューマーのプレフィックスに対して設定できます。
Connect セキュリティの構成が完了したら、追加の CONNECT_OPTS
パラメーターに ここで作成した JAAS ファイルを指定して Connect を起動します。
CONNECT_OPTS=-Djava.security.auth.login.config=/tmp/kafka_client_jaas.conf \
<path-to-confluent>/bin/ confluent local services connect start