SSL の構成

重要

Control Center を適切にセキュアにするには、以下のトピックの理解が役に立ちます。

  • 既存の SSL ドキュメント を使用した Apache Kafka® ブローカーのセットアップ。
  • 認可設定 の知識。
  • Kafka ブローカー、Connect のプロデューサーとコンシューマー、および Control Center のプロパティファイルの場所。

セキュアな Kafka ブローカーを配置しているだけで、Control Center がセキュアで適切に稼働していることが保証されるわけではありません。セキュアな Control Center インスタンスと通信する各コンポーネントには、プレフィックスによって固有の構成が設定されている必要があります。confluent.controlcenter.streams.confluent.metrics.reporter.producer.consumer.confluent.monitoring.interceptor. などのプレフィックスは、Confluent Platform スタックのさまざまなファイル内に構成して Control Center をエンドツーエンドでセキュアにすることもできます。一部の構成設定は不要な場合があります。構成する各コンポーネントの構成リファレンスを参照してください。

Control Center では、SSL 単方向認証および双方向認証をサポートしており、さまざまな通信向けに有効にできます。以下のような構成を実現できます。

  • セキュアなクライアントインターセプター(Connect、Confluent、通常のクライアント)からセキュアな Control Center ブローカー
  • セキュアな Kafka ブローカーからセキュアな Control Center ブローカー
  • セキュアな Metrics Reporter とセキュアな Kafka ブローカーからセキュアな Control Center ブローカー

Kafka ブローカー

1 台の Apache Kafka® ブローカーが SSL を使用するようにセットアップ されている場合は、同じ構成を Metrics Reporter 用に設定する必要があります。前述のリンクでは、以下の構成を使用してブローカーが設定されました。

...
ssl.keystore.location=/var/private/ssl/kafka.server.keystore.jks
ssl.keystore.password=test1234
ssl.key.password=test1234
ssl.truststore.location=/var/private/ssl/kafka.server.truststore.jks
ssl.truststore.password=test1234
...

ブローカー上の Metrics Reporter をセキュアにするには、プレフィックス confluent.metrics.reporter. と同じ値を使用します。ブローカー上のストリームモニタリングインターセプターをセキュアにするには、プレフィックス confluent.monitoring.interceptor. と同じ値を使用します。

confluent.metrics.reporter.security.protocol=SSL
confluent.metrics.reporter.ssl.keystore.location=/var/private/ssl/kafka.server.keystore.jks
confluent.metrics.reporter.ssl.keystore.password=test1234
confluent.metrics.reporter.ssl.key.password=test1234
confluent.metrics.reporter.ssl.truststore.location=/var/private/ssl/kafka.server.truststore.jks
confluent.metrics.reporter.ssl.truststore.password=test1234

認可用の設定 に、他の構成オプションがあります。インターセプター用に構成オプションをオーバーライドまたは設定することの詳細については、「インターセプターの有効化」を参照してください。

インターセプター用のすべての構成は、プレフィックスが confluent.metrics.reporter. になります。

注釈

すべての構成変更には、サービスの再起動が必要です。ブローカーを再起動するときは、各ブローカーが使用可能であることを確認してから新たなブローカーを再起動します。

Control Center Kafka Streams

Control Center では、他の任意のコンポーネントに対してセキュリティが有効になっているかどうかを知る必要があります。Control Center は、内部で Kafka Streams をステートストアとして使用します。つまり 1 台のブローカーがセキュアな場合は、Kafka Streams もセキュアにする必要があります。

環境に応じて、以下の変更を control-center.properties ファイルに加える必要があります。

confluent.controlcenter.streams.security.protocol=SSL
confluent.controlcenter.streams.ssl.keystore.location=/var/private/ssl/kafka.server.keystore.jks
confluent.controlcenter.streams.ssl.keystore.password=test1234
confluent.controlcenter.streams.ssl.key.password=test1234
confluent.controlcenter.streams.ssl.truststore.location=/var/private/ssl/kafka.server.truststore.jks
confluent.controlcenter.streams.ssl.truststore.password=test1234

注釈

Apache Kafka® クライアントインターセプターの構成の詳細については、「インターセプターの有効化」を参照してください。

Connect

このセクションでは、SSL を使用した Connect ワーカーインターセプターを構成する方法、および HTTPS を介して Connect と通信するように Control Center を構成する方法を説明します。

SSL を使用した Connect ワーカーインターセプターの構成

分散された Connect に対する変更の作用は、confluent.metrics.reporter とよく似ています。Connect ドキュメントに詳しく説明されています

HTTPS 経由で Connect と通信するように Control Center を構成する

Confluent Control Center は HTTP プロトコルを使用して Connect と通信します。この通信は SSL(別名 HTTPS)を使用してセキュアにできます。Control Center のトラストストア内に、Connect によって信頼された HTTPS を介して通信するための証明書があることを確認します。Connect との HTTPS 通信のためには Control Center 内に以下の変数が必要です。

# HTTP and HTTPS to Control Center UI
CONTROL_CENTER_REST_LISTENERS: "<http://0.0.0.0:9021,https://0.0.0.0:9022">
CONTROL_CENTER_REST_SSL_TRUSTSTORE_LOCATION: /etc/kafka/secrets/kafka.control-center.truststore.jks
CONTROL_CENTER_REST_SSL_TRUSTSTORE_PASSWORD: confluent
CONTROL_CENTER_REST_SSL_KEYSTORE_LOCATION: /etc/kafka/secrets/kafka.control-center.keystore.jks
CONTROL_CENTER_REST_SSL_KEYSTORE_PASSWORD: confluent
CONTROL_CENTER_REST_SSL_KEY_PASSWORD: confluent

HTTPS を介した Connect へのアクセスの詳細については、「HTTP または HTTPS を使用するための Connect REST API の構成」を参照してください。

ksqlDB

Confluent Control Center は HTTP プロトコルを使用して ksqlDB と通信します。この通信は SSL(別名 HTTPS)を使用してセキュアにできます。HTTPS を介して ksqlDB に接続するように Control Center を構成するには、「ksqlDB を https 用に構成する」を参照してください。

Control Center のトラストストア内に、ksqlDB によって信頼された HTTPS を介して通信するための証明書があることを確認します。control-center.properties ファイルに以下のプロパティが含まれている必要があります。

confluent.controlcenter.ksql.ksql.ssl.truststore.location=<truststore-location>
confluent.controlcenter.ksql.ksql.ssl.truststore.password=<password>
confluent.controlcenter.ksql.ksql.ssl.keystore.location=<keystore-location>
confluent.controlcenter.ksql.ksql.ssl.keystore.password=<password>
confluent.controlcenter.ksql.ksql.ssl.key.password=<password>

Schema Registry

Confluent Control Center が Schema Registry に接続し、Schema Registry が SSL 有効の場合

  • Schema Registry は Kafka プロトコルを使用して Kafka と通信します。このプロトコルは SSL を使用したセキュアなものです。
  • Control Center は Kafka プロトコルを使用して Kafka と通信します。このプロトコルは SSL を使用したセキュアなものです。
  • Control Center は HTTP プロトコル(別名 HTTPS)を介して Schema Registry と通信します。このプロトコルは SSL を使用したセキュアなものです。

本質的に、Control Center は Schema Registry に対して HTTPS クライアントとして機能します。HTTPS を使用して Control Center をセキュアにするには、「REST API の HTTP または HTTPS の構成」の説明に従い HTTPS を許可するように Schema Registry を構成します。

さらに、「HTTPS 用の追加構成」で説明されているように、Control Center のトラストストアに、HTTPS を介して Schema Registry と接続するための信頼された証明書が含まれている必要があります。

control-center.properties 内の Control Center 構成属性には必ず confluent.controlcenter. のプレフィックスを付けます。以下に例を示します。

confluent.controlcenter.schema.registry.schema.registry.ssl.truststore.location=/etc/kafka/secrets/kafka.client.truststore.jks
confluent.controlcenter.schema.registry.schema.registry.ssl.truststore.password=<password>
confluent.controlcenter.schema.registry.schema.registry.ssl.keystore.location=/etc/kafka/secrets/kafka.client.keystore.jks
confluent.controlcenter.schema.registry.schema.registry.ssl.keystore.password=<password>
confluent.controlcenter.schema.registry.schema.registry.ssl.key.password=<password>

注釈

Control Center はさまざまなコンポーネントにとってのクライアントであるため、クライアントプレフィックスにはコンポーネントが含まれます。この場合は、Schema Registry ですので confluent.controlcenter.schema.registry となります。confluent.controlcenter.schema.registry.url を例外として、追加の Schema Registry 構成は、confluent.controlcenter.schema.registry プレフィックスと Schema Registry 構成サフィックスを付けてフォーマットされます。たとえば、SSL トラストストアの場所は以下のように設定されます。

confluent.controlcenter.schema.registry.schema.registry.ssl.truststore.location=<value>

これらの構成内で繰り返されている schema.registry は意図的です。

Schema Registry のセキュリティの概要」の Schema Registry へのクライアントの構成方法 も参照してください。