Control Center での SASL の構成

ここに示されている概念の多くは、 Kafka のセキュリティドキュメントから 採用されています。原典のドキュメントを通読して理解することは、SASL 用に Control Center を構成するうえで役立ちます。

以下の説明は、開発セットアップ専用であることを前提としてあり、概ね「Confluent クイックスタート」に従っています。開発目的のみを想定した仕様になっていますが、本稼働環境のクラスターをセキュアにする場合も同じ概念に従います。

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.confKafkaClient エントリを持つファイルを作成します。このファイルの 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 構成(&lt;path-to-confluent&gt;/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 プロパティファイル(/&lt;path-to-confluent&gt;/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