SCRAM の構成

SASL/SCRAM の概要

Salted Challenge Response Authentication Mechanism(SCRAM)つまり SASL/SCRAM は、PLAIN のようなユーザー名とパスワードの認証を実行する従来のメカニズムにおけるセキュリティ上の懸念に対応する SASL メカニズムのファミリです。Apache Kafka® では SCRAM-SHA-256SCRAM-SHA-512 をサポートします。次のすべての例では SCRAM-SHA-256 を使用しますが、必要に応じて SCRAM-SHA-512 の構成に置き換えることができます。

Kafka の SCRAM 実装では、ZooKeeper に SCRAM 認証情報を格納します。これは ZooKeeper がプライベートネットワークにある Kafka インストールで使用するのに適しています。このため、ZooKeeper で各ユーザーの SCRAM 認証情報を作成する必要があります。

一般的には、--bootstrap-server オプションを指定して、SCRAM 認証情報を作成および管理します。

bin/kafka-configs --bootstrap-server localhost:9092 --alter --add-config 'SCRAM-SHA-256=[iterations=8192,password=alice-secret],SCRAM-SHA-512=[password=alice-secret]' --entity-type users --entity-name alice

bin/kafka-configs --bootstrap-server localhost:9092 --alter --add-config 'SCRAM-SHA-256=[password=admin-secret],SCRAM-SHA-512=[password=admin-secret]' --entity-type users --entity-name admin

ただし、ブローカーを実行する前に、SCRAM を使用して Kafka ブローカー相互の認証を行うために SCRAM 認証情報を作成する場合は、--zookeeper オプションを使用して ZooKeeper 内の各ユーザーに SCRAM 認証情報を作成する必要があります(--bootstrap-server オプションは使用できません)。

bin/kafka-configs --zookeeper localhost:2181 --alter --add-config 'SCRAM-SHA-256=[iterations=8192,password=alice-secret],SCRAM-SHA-512=[password=alice-secret]' --entity-type users --entity-name alice

bin/kafka-configs --zookeeper localhost:2181 --alter --add-config 'SCRAM-SHA-256=[password=admin-secret],SCRAM-SHA-512=[password=admin-secret]' --entity-type users --entity-name admin

イテレーションが指定されていない場合、デフォルトのイテレーションは 4096 回です。ランダムのソルトが作成され、SCRAM の ID はソルト、イテレーション、StoredKey、ServerKey で構成され、ZooKeeper に格納されます。SCRAM の概要については、『RFC 5802 Abstract 』、また、SCRAM の ID と個別のフィールドの詳細情報については、『RFC 5802 』を参照してください。

SASL/SCRAM のセキュリティの考慮事項

  • Kafka の SASL/SCRAM のデフォルト実装では、SCRAM の認証情報が ZooKeeper に格納されます。これは、ZooKeeper がセキュアで、プライベートネットワークにあるインストールにおける本稼働環境での使用に適しています。
  • ブローカーを実行する前に、SCRAM を使用して Kafka ブローカー相互の認証を行うために SCRAM 認証情報を作成する必要がある場合は、--zookeeper オプションを使用して SCRAM 認証情報を作成します。
  • Kafka でサポートするのは、強力なハッシュ関数 SHA-256 と SHA-512(最低イテレーション 4096 回)だけです。強力なハッシュ関数を強力なパスワードおよび高いイテレーション回数と組み合わせると、ZooKeeper のセキュリティが侵害された場合に、総当たり攻撃に対して保護できます。
  • SCRAM を使用できるのは、TLS 暗号化を使用して、SCRAM の相互通信の傍受を防ぐ場合だけです。これは ZooKeeper が侵害された場合に、辞書攻撃や総当たり攻撃、なりすましに対して保護します。
  • デフォルトの SASL/SCRAM 認証情報ストアは、ZooKeeper がセキュアではないインストールで、カスタムコールバックハンドラーを使用して sasl.server.callback.handler.class を構成することにより、オーバーライドできます。
  • セキュリティの考慮事項の詳細については、『RFC 5802 』を参照してください。

このページの残りの部分では、Confluent Platform の各コンポーネント用に SASL/SCRAM を構成する方法を示します。

ブローカー

Kafka クラスター内のすべてのブローカーを、クライアントからのセキュアな接続を受け付けるように構成します。ブローカーに構成の変更内容が反映されるためには、 ローリング再起動 が必要です。

次のセクションに示すとおり、Kafka ブローカーのセキュリティを有効にします。さらに、Confluent Control Center や Auto Data Balancer を使用している場合、次のコンポーネントに対してブローカーを構成します。

JAAS

注釈

個別の JAAS ファイルの使用がサポートされていますが、このアプローチは "推奨されていません"。以下の手順の代わりに、「構成」の手順 5 で指定されているリスナーの構成を使用します。

  1. まず、各 Kafka ブローカーの構成ディレクトリでブローカーの JAAS の構成ファイルを作成します。この例では、kafka_server_jaas.conf という名前です。

  2. 各ブローカーの JAAS ファイルで、KafkaServer セクションを構成します。この構成では、2 人のユーザー(adminkafkabroker1)を定義します。プロパティ usernamepassword は、他のブローカーへの接続を開始するために、ブローカーで使用されます。この例では、admin はブローカー間通信をするユーザーです。

    KafkaServer {
       org.apache.kafka.common.security.scram.ScramLoginModule required
       username="admin"
       password="admin-secret";
    };
    

構成

  1. 各ブローカーの server.properties ファイルで SASL/SCRAM メカニズムを有効にします。

    # List of enabled mechanisms, can be more than one
    sasl.enabled.mechanisms=SCRAM-SHA-256
    
    # Specify one of of the SASL mechanisms
    sasl.mechanism.inter.broker.protocol=SCRAM-SHA-256
    
  1. ブローカー間通信で、SASL を有効にする場合は、次の行をブローカーのプロパティファイルに追加します(デフォルトは PLAINTEXT )。プロトコルを次のとおり設定します。

    • SASL_SSL: SSL 暗号化が有効な場合(SASL メカニズムが PLAIN である場合、SSL 暗号化の使用が必要)
    • SASL_PLAINTEXT: SSL 暗号化が有効ではない場合
    # Configure SASL_SSL if SSL encryption is enabled, otherwise configure SASL_PLAINTEXT
    security.inter.broker.protocol=SASL_SSL
    
  2. クライアントやブローカー間の SASL 接続をリッスンするポートを Kafka ブローカーに通知します。listeners を構成する必要があります。また、listeners と値が異なる場合は、必要に応じて advertised.listeners を構成する必要があります。リスナーを次のとおり設定します。

    • SASL_SSL: SSL 暗号化が有効な場合(SASL メカニズムが PLAIN である場合、SSL 暗号化の使用が必要)
    • SASL_PLAINTEXT: SSL 暗号化が有効ではない場合
    # With SSL encryption
    listeners=SASL_SSL://kafka1:9093
    advertised.listeners=SASL_SSL://localhost:9093
    
    # Without SSL encryption
    listeners=SASL_PLAINTEXT://kafka1:9093
    advertised.listeners=SASL_PLAINTEXT://localhost:9093
    
  3. 以下に該当する場合は、SASL_SSL ポートと PLAINTEXT ポートの両方を構成します。

    • SASL をブローカー間通信に対して有効にしない
    • クラスターに接続する一部のクライアントで SASL を使用しない

    SSL 暗号化を使う SASL リスナーと、PLAINTEXT リスナーが混在する例を次に示します。

    # With SSL encryption
    listeners=PLAINTEXT://kafka1:9092,SASL_SSL://kafka1:9093
    advertised.listeners=PLAINTEXT://localhost:9092,SASL_SSL://localhost:9093
    
    # Without SSL encryption
    listeners=PLAINTEXT://kafka1:9092,SASL_PLAINTEXT://kafka1:9093
    advertised.listeners=PLAINTEXT://localhost:9092,SASL_PLAINTEXT://localhost:9093
    
  4. JAAS を構成するために、個別の JAAS の構成ファイルを使用しない場合、次のとおり、Kafka ブローカーのリスナーに対して JAAS を構成します。

    listener.name.sasl_ssl.scram-sha-256.sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required
       username="admin"
       password="admin-secret";
    

実行

個別の JAAS の構成ファイルを使用する場合は、各 Kafka ブローカーを起動するとき、次のとおり、JVM パラメーターとして JAAS ファイルの名前を渡します。

export KAFKA_OPTS=-Djava.security.auth.login.config=/etc/kafka/kafka_server_jaas.conf
bin/kafka-server-start etc/kafka/server.properties

次に示すのは、コマンドラインから各ブローカーを起動するとき、JVM パラメーターとして渡すことができるいくつかのオプション設定です。

zookeeper.sasl.client

ZooKeeper に対して SASL 認証を有効にするために使用します。

  • 型: Boolean
  • デフォルト: true
  • 使用例: ブローカーを起動するとき、JVM パラメーターとしてパラメーターを渡すには、-Dzookeeper.sasl.client=true を指定します。
zookeeper.sasl.client.username

ZooKeeper に対する SASL 認証でユーザー名を変更する場合は、適切な名前を使用するようにシステムプロパティを設定します。

  • 型: string
  • デフォルト: zookeeper
  • 使用例: ブローカーを起動するとき、JVM パラメーターとしてパラメーターを渡すには、-Dzookeeper.sasl.clientconfig=ZkClient を指定します。
zookeeper.sasl.clientconfig

JAAS のログインファイルでコンテキストキーを指定します。これは、ZooKeeper に対する SASL 認証でセクション名を変更するために使用します。

  • 型: string
  • デフォルト: Client
  • 使用例: ブローカーを起動するとき、JVM パラメーターとしてパラメーターを渡すには、-Dzookeeper.sasl.clientconfig=ZkClient を指定します。

クライアント

新しいプロデューサーとコンシューマークライアントは、Kafka バージョン 0.9.0 以上でセキュリティをサポートします。

Kafka Streams API を使用している場合、同等の SSL パラメーターおよび SASL パラメーターを構成する方法を参照してください。

  1. 次のプロパティをクライアントのプロパティファイル client.properties で構成します。

    sasl.mechanism=SCRAM-SHA-256
    # Configure SASL_SSL if SSL encryption is enabled, otherwise configure SASL_PLAINTEXT
    security.protocol=SASL_SSL
    
  2. プロデューサーやコンシューマーなどのクライアントが Kafka ブローカーに接続できる方法を記述するため、JAAS の構成プロパティを構成します。プロパティ usernamepassword は、クライアント接続のユーザーを構成するために、クライアントで使用されます。この例では、クライアントはブローカーにユーザー kafkaclient1 として接続します。

    sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \
      username="kafkaclient1" \
      password="kafkaclient1-secret";
    

ZooKeeper

ZooKeeper では SASL/SCRAM 認証をサポートしません。ただし別のメカニズム SASL/DIGEST-MD5 をサポートします。

詳細については、次の ZooKeeper の SASL 認証を参照してください。

  1. クライアントとサーバー間の相互認証 : Kafka ブローカー(クライアント)と ZooKeeper (サーバー)間
  2. サーバー間の相互認証 : アンサンブル内の ZooKeeper ノード間

Kafka Connect

このセクションでは、Kafka Connect のセキュリティを有効にする方法について説明します。Kafka Connect をセキュアにするには、次の対象でセキュリティを構成する必要があります。

  1. Kafka Connect ワーカー : Kafka Connect API の一部で、ワーカーは実際には内部的に機能する高度なクライアントです。
  2. Kafka Connect コネクター: コネクターにはプロデューサーとコンシューマーを組み込むことができます。そのため、ソースコネクターで使用される Connect プロデューサーやシンクコネクターで使用される Connect コンシューマーのデフォルトの構成をオーバーライドする必要があります。
  3. Kafka Connect REST: Kafka Connect では、 追加のプロパティ を使って SSL を使用するように構成できる REST API が公開されています。

次のセクションに示すとおり、Kafka Connect のセキュリティを構成します。さらに、Confluent Control Center のストリームモニタリングを Kafka Connect に対して使用している場合、次の対象でセキュリティを構成します。

次のすべてのプロパティを connect-distributed.properties で構成します。

  1. SASL/SCRAM を使用するように Connect ワーカーを構成します。

    sasl.mechanism=SCRAM-SHA-256
    # Configure SASL_SSL if SSL encryption is enabled, otherwise configure SASL_PLAINTEXT
    security.protocol=SASL_SSL
    
  2. Connect のプロデューサーとコンシューマーが Kafka ブローカーに接続できる方法を記述するため、JAAS の構成プロパティを構成します。プロパティ usernamepassword は、接続のユーザーを構成するために、Connect で使用されます。この例では、Connect ワーカーはブローカーにユーザー connect として接続します。

    sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \
      username="connect" \
      password="connect-secret";
    
  3. セキュリティを活用するコネクターでは、ワーカーが使用するプロデューサーやコンシューマーのデフォルト構成をオーバーライドする必要もあります。ソースコネクターかシンクコネクターに応じて次のとおり実行します。

    • ソースコネクター: 同じプロパティに producer プレフィックスを追加して構成します。

      producer.sasl.mechanism=SCRAM-SHA-256
      # Configure SASL_SSL if SSL encryption is enabled, otherwise configure SASL_PLAINTEXT
      producer.security.protocol=SASL_SSL
      producer.sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \
        username="connect" \
        password="connect-secret";
      
    • シンクコネクター: 同じプロパティに consumer プレフィックスを追加して構成します。

      consumer.sasl.mechanism=SCRAM-SHA-256
      # Configure SASL_SSL if SSL encryption is enabled, otherwise configure SASL_PLAINTEXT
      consumer.security.protocol=SASL_SSL
      consumer.sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \
        username="connect" \
        password="connect-secret";
      

Confluent Replicator

Confluent Replicator は、Kafka ソースコネクターの一種で、送信元 Kafka クラスターから送信先クラスターにデータを複製します。Replicator に組み込まれたコンシューマーは、送信元クラスターからデータを読み取り、Kafka Connect ワーカーに組み込まれたプロデューサーは送信先クラスターにデータを書き込みます。

Replicator バージョン 4.0 以下では、送信元および送信先の Kafka クラスターで ZooKeeper への接続が必要です。ZooKeeper で認証を有効にする場合、クライアントで ZooKeeper のセキュリティ認証情報を、Connect ワーカーのグローバル JAAS 構成設定 -Djava.security.auth.login.config に構成します。さらに送信元と送信先のクラスターで ZooKeeper のセキュリティ認証情報が一致する必要があります。

Confluent Replicator のセキュリティを構成するには、次に示すとおり Replicator コネクターを構成し、さらに次のコンポーネントを構成する必要があります。

Confluent Replicator を構成して、SASL/SCRAM を使用するには、次のプロパティを Replicator の JSON 構成ファイルに追加します。JAAS の構成のプロパティでは、接続のユーザーを構成するため、Replicator で使用する usernamepassword を定義します。この例では、Replicator はブローカーにユーザー replicator として接続します。

{
  "name":"replicator",
    "config":{
      ....
      "src.kafka.security.protocol" : "SASL_SSL",
      "src.kafka.sasl.mechanism" : "SCRAM-SHA-256",
      "src.kafka.sasl.jaas.config" : "org.apache.kafka.common.security.scram.ScramLoginModule required username=\"replicator\" password=\"replicator-secret\";",
      ....
    }
  }
}

参考

Confluent Replicator の構成例については、SASL のソース認証デモのスクリプト を参照してください。共通のセキュリティ構成のデモについては、Replicator のセキュリティデモ を参照してください。

SASL/SCRAM 認証を使用して送信先クラスター用に Confluent Replicator を構成するには、Replicator の JSON 構成を次の内容が含まれるように変更します。

{
  "name":"replicator",
    "config":{
      ....
      "dest.kafka.security.protocol" : "SASL_SSL",
      "dest.kafka.sasl.mechanism" : "SCRAM-SHA-256",
      "dest.kafka.sasl.jaas.config" : "org.apache.kafka.common.security.scram.ScramLoginModule required username=\"replicator\" password=\"replicator-secret\";",
      ....
    }
  }
}

さらに次のプロパティが Connect ワーカーに必要です。

sasl.mechanism=SCRAM-SHA-256
security.protocol=SASL_SSL
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="replicator" password="replicator-secret";
producer.sasl.mechanism=SCRAM-SHA-256
producer.security.protocol=SASL_SSL
producer.sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="replicator" password="replicator-secret";

詳細については、こちら で Connect ワーカーの全般的なセキュリティ構成を確認してください。

参考

Confluent Replicator の構成例については、SASL の送信先認証デモのスクリプト を参照してください。共通のセキュリティ構成のデモについては、Replicator のセキュリティデモ を参照してください。

Confluent Control Center

Confluent Control Center は Kafka Streams をステートストアとして使用します。つまり Control Center が支援するクラスターにあるすべての Kafka ブローカーがセキュアである場合、Control Center アプリケーションもセキュアにする必要があります。

注釈

RBAC が有効である場合、Control Center を Kerberos とともに使用できません。Control Center では、OAUTHBEARER 以外の SASL メカニズムをサポートできないためです。

次のセクションに示すとおり、Control Center アプリケーションのセキュリティを有効にします。さらに、以下のコンポーネントのセキュリティを構成します。

  1. Control Center の SASL/SCRAM とセキュリティプロトコルを etc/confluent-control-center/control-center.properties ファイルで有効にします。

    confluent.controlcenter.streams.sasl.mechanism=SCRAM-SHA-256
    # Configure SASL_SSL if SSL encryption is enabled, otherwise configure SASL_PLAINTEXT
    confluent.controlcenter.streams.security.protocol=SASL_SSL
    
  2. Control Center が Kafka ブローカーに接続できる方法を記述するため、JAAS の構成プロパティを構成します。プロパティ usernamepassword は、接続を構成するために、Control Center で使用されます。

    confluent.controlcenter.streams.sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \
      username="confluent" \
      password="confluent-secret";
    

Confluent Metrics Reporter

このセクションでは、Confluent Control Center と Auto Data Balancer で使用される Confluent Metrics Reporter の SASL/SCRAM を有効にする方法について説明します。

Confluent Metrics Reporter の SASL/SCRAM を構成するには、モニタリング対象となる本稼働環境のクラスター内にあるすべてのブローカーの server.properties ファイルで、次のとおりに構成を変更します。

  1. Confluent Metrics Reporter が有効であることを検証します。

    metric.reporters=io.confluent.metrics.reporter.ConfluentMetricsReporter
    confluent.metrics.reporter.bootstrap.servers=kafka1:9093
    
  2. Confluent Metrics Reporter で SASL/SCRAM メカニズムを有効にします。

    confluent.metrics.reporter.sasl.mechanism=SCRAM-SHA-256
    # Configure SASL_SSL if SSL encryption is enabled, otherwise configure SASL_PLAINTEXT
    confluent.metrics.reporter.security.protocol=SASL_SSL
    

Confluent モニタリングインターセプター

Confluent Monitoring Interceptor を Confluent Control Center のストリームモニタリングで使用します。このセクションでは、Confluent Monitoring Interceptor 向けのセキュリティを次の 3 か所で有効にする方法について説明します。

  1. 一般クライアント
  2. Kafka Connect
  3. Confluent Replicator

重要

Confluent Monitoring Interceptor の典型的なユースケースは、構成が一般に異なる、個別のモニタリングクラスターにモニタリングデータを渡すことです。インターセプターの構成では、モニタリングされているコンポーネントの構成を継承しません。モニタリングされているコンポーネントの構成を使用する場合は、適切なプレフィックスを追加する必要があります。たとえば、オプション confluent.monitoring.interceptor.security.protocol=SSL では、プロデューサーに使用する場合、producer. のプレフィックスを使用して producer.confluent.monitoring.interceptor.security.protocol=SSL とする必要があります。

一般クライアント用のインターセプター

Kafka クライアントで動作する Confluent Control Center のストリームモニタリングについては、各クライアントで Confluent Monitoring Interceptor の SASL/SCRAM を構成する必要があります。

  1. クライアントでインターセプターが構成されていることを検証します。

    • プロデューサーの場合

      interceptor.classes=io.confluent.monitoring.clients.interceptor.MonitoringProducerInterceptor
      
    • コンシューマーの場合

      interceptor.classes=io.confluent.monitoring.clients.interceptor.MonitoringConsumerInterceptor
      
  2. インターセプターに対して SASL のメカニズムとセキュリティプロトコルを構成します。

    confluent.monitoring.interceptor.sasl.mechanism=SCRAM
    # Configure SASL_SSL if SSL encryption is enabled, otherwise configure SASL_PLAINTEXT
    confluent.monitoring.interceptor.security.protocol=SASL_SSL
    
  3. 一意のユーザー名とパスワードを使用して、JAAS の構成のプロパティを構成します。

    confluent.monitoring.interceptor.sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \
      username="confluent" \
      password="confluent-secret";
    

Kafka Connect 用のインターセプター

  1. Kafka Connect で動作する Confluent Control Center のストリームモニタリングについては、Kafka Connect で Confluent Monitoring Interceptor の SASL/SCRAM を構成する必要があります。コネクターがソースかシンクかに応じて、次のプロパティを connect-distributed.properties に追加することで、Connect ワーカーを構成します。

    • ソースコネクター: producer プレフィックスを使用して、Confluent Monitoring Interceptor の SASL メカニズムを構成します。

      producer.interceptor.classes=io.confluent.monitoring.clients.interceptor.MonitoringProducerInterceptor
      producer.confluent.monitoring.interceptor.sasl.mechanism=SCRAM-SHA-256
      # Configure SASL_SSL if SSL encryption is enabled, otherwise configure SASL_PLAINTEXT
      producer.confluent.monitoring.interceptor.security.protocol=SASL_SSL
      
    • シンクコネクター: consumer プレフィックスを使用して、Confluent Monitoring Interceptor の SASL メカニズムを構成します。

      consumer.interceptor.classes=io.confluent.monitoring.clients.interceptor.MonitoringConsumerInterceptor
      consumer.confluent.monitoring.interceptor.sasl.mechanism=SCRAM-SHA-256
      # Configure SASL_SSL if SSL encryption is enabled, otherwise configure SASL_PLAINTEXT
      consumer.confluent.monitoring.interceptor.security.protocol=SASL_SSL
      
  2. ユーザー名とパスワードを使用して、JAAS の構成のプロパティを構成します。

    • ソースコネクター: producer プレフィックスを使用して、Confluent Monitoring Interceptor の JAAS 構成を構成します。

      producer.confluent.monitoring.interceptor.sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \
        username="confluent" \
        password="confluent-secret";
      
    • シンクコネクター: consumer プレフィックスを使用して、Confluent Monitoring Interceptor の JAAS 構成を指定します。

      consumer.confluent.monitoring.interceptor.sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \
        username="confluent" \
        password="confluent-secret";
      

Replicator 用のインターセプター

Replicator で動作する Confluent Control Center のストリームモニタリングについては、Replicator の JSON 構成ファイルで Confluent Monitoring Interceptor の SASL を構成する必要があります。追加する構成プロパティのサブセットの一例を次に示します。

{
  "name":"replicator",
    "config":{
      ....
      "src.consumer.group.id": "replicator",
      "src.consumer.interceptor.classes": "io.confluent.monitoring.clients.interceptor.MonitoringConsumerInterceptor",
      "src.consumer.confluent.monitoring.interceptor.sasl.mechanism": "SCRAM",
      "src.consumer.confluent.monitoring.interceptor.security.protocol": "SASL_SSL",
      "src.consumer.confluent.monitoring.interceptor.sasl.jaas.config": "org.apache.kafka.common.security.scram.ScramLoginModule required \nusername=\"confluent\" \npassword=\"confluent-secret\";",
      ....
    }
  }
}

Schema Registry

重要

以下の設定を Schema Registry または REST Proxy に対して構成する場合、各パラメーターのプレフィックスとして confluent.license を使用する必要があります。たとえば、sasl.mechanismconfluent.license.sasl.mechanism になります。

Schema Registry はスキーマを永続化するために Kafka を使用します。つまり、Kafka クラスターにデータを書き込むためのクライアントとして機能します。したがって、Kafka ブローカーでセキュリティが構成されている場合、Schema Registry もセキュリティを使用するように構成する必要があります。網羅的なリストについては、「Schema Registry の構成オプション」も参照してください。

  1. SASL 認証用に追加する schema-registry.properties 構成パラメーターのサブセットの一例を次に示します。

    kafkastore.bootstrap.servers=kafka1:9093
    # Configure SASL_SSL if SSL encryption is enabled, otherwise configure SASL_PLAINTEXT
    kafkastore.security.protocol=SASL_SSL
    kafkastore.sasl.mechanism=SCRAM-SHA-256
    
  2. Schema Registry が Kafka ブローカーに接続できる方法を記述するため、JAAS の構成プロパティを構成します。プロパティ usernamepassword は、接続のユーザーを構成するために Schema Registry で使用されます。この例では、Schema Registry はブローカーにユーザー schemaregistry として接続します。

    kafkastore.sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \
      username="schemaregistry" \
      password="schemaregistry-secret";
    

REST Proxy

重要

以下の設定を Schema Registry または REST Proxy に対して構成する場合、各パラメーターのプレフィックスとして confluent.license を使用する必要があります。たとえば、sasl.mechanismconfluent.license.sasl.mechanism になります。

Confluent REST Proxy を SASL でセキュアにするには、REST Proxy と Kafka クラスター間でセキュリティを構成する必要があります。

すべての構成オプションの網羅的なリストについては、「SASL の認証」を参照してください。

  1. kafka-rest.properties で SASL/SCRAM メカニズムを構成します。

    注釈

    bootstrap.servers の構成に SASL_PLAINTEXT://host:port (または SASL_SSL://host:port)エンドポイントが設定されていることを確認してください。このように設定されていない場合、誤って非 SASL ポートへの SASL 接続を開いてしまいます。詳細については、「REST Proxy の構成オプション」の「bootstrap.servers」を参照してください。

    bootstrap.servers=SASL_SSL://kafka1:9093
    client.sasl.mechanism=SCRAM-SHA-256
    # Configure SASL_SSL if SSL encryption is enabled, otherwise configure SASL_PLAINTEXT
    client.security.protocol=SASL_SSL
    
  2. REST Proxy が Kafka ブローカーに接続できる方法を記述するため、JAAS の構成プロパティを構成します。プロパティ usernamepassword は、接続のユーザーを構成するために、REST Proxy で使用されます。この例では、REST Proxy はブローカーにユーザー restproxy として接続します。

    client.sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required \
      username="restproxy" \
      password="restproxy-secret";