SASL/SCRAMの構成

OCI Streaming with Apache Kafkaは、SCRAM-SHA-512をサポートしています。

SASL/SCRAM認証は、ユーザー名とパスワードの資格情報を使用してセキュリティーを保証します。SCRAMは、ユーザーの資格情報を保護するために、saltパスワードと暗号化ハッシュアルゴリズムを使用します。資格証明はプレーン・テキストで格納または送信されません。

必要なIAMポリシーを作成し、次のタスクを実行して、KafkaクラスタのSASL/SCRAM認証を構成します。

  1. OCI Vaultでのサインイン資格証明の作成
  2. 作成された資格証明でKafkaクラスタを更新します
  3. セキュアな資格証明を使用するようにKafkaクライアントを構成します

必要なIAMポリシー

KafkaクラスタのSASL/SCRAM認証を構成する前に、次のポリシー・ステートメントを追加します。

allow service rawfka to {SECRET_UPDATE} in compartment <compartment>
allow service rawfka to use secrets in compartment <compartment> where request.operation = 'UpdateSecret'

Vaultでの資格証明の作成

OCI Vaultサービスを使用して、セキュアなユーザー資格証明を作成します。

  1. ボールトを作成します(ボールトがまだない場合は)。
  2. シークレットの暗号化に使用するボールトにマスター暗号化キーを作成します。
  3. ボールトにシークレットを作成します。Kafkaクラスタの場合、シークレットは手動シークレット生成方式で作成する必要があります。シークレットを手動でローテーションするたびに、クラスタのSASL SCRAMの更新も行う必要があります。それ以外の場合、Kafkaクラスタは、更新されたシークレット・バージョンを自動的に検出または同期できず、認証が失敗するため、古いシークレットを引き続き使用します。

KafkaクラスタのSASL/SCRAMの更新

作成または更新されたセキュア資格証明でKafkaクラスタを更新します。

    1. 「Kafkaクラスタ」リスト・ページで、操作するクラスタを選択します。
    2. 詳細ページで、「アクション」メニューを選択し、「SASL SCRAMの更新」を選択します。
    3. 「SASL SCRAMの更新」パネルで、セキュアな資格を持つボールトを選択します。
    4. ボールト内のシークレットを選択します。
    5. 「更新」を選択します。
  • cluster enable-superuserコマンドおよび必須パラメータを使用して、クラスタ構成にSASL/SCRAMプロパティを追加します。

    oci kafka cluster enable-superuser --compartment-id <compartment-ocid> --kafka-cluster-id <cluster-ocid> --secret-id <secret-ocid>

    必須オプション

    <コンパートメント-ocid>
    ボールト・シークレットが作成されるコンパートメントのOCID。
    <クラスタ-ocid>
    SASL/SCRAM資格証明を更新する必要があるKafkaクラスタのOCID。
    <シークレットID>
    新しい資格証明を更新する必要があるボールト・シークレットのOCID。

    cluster disable-superuserコマンドおよび必須パラメータを使用して、クラスタ構成内のSASL/SCRAMプロパティを削除します。

    oci kafka cluster disable-superuser  --kafka-cluster-id <cluster-ocid>

    CLIコマンドのパラメータおよび値の完全なリストは、CLIコマンド・リファレンスを参照してください。

  • enableSuperuser操作を実行して、KafkaクラスタのSASL/SCRAM資格証明を追加または更新します。

Kafkaクライアントの構成

SASL/SCRAMを使用してKafkaクラスタに接続するには、Kafkaクライアント・プロパティ・ファイルを更新する必要があります。

次の情報を使用してclient.propertiesファイルを作成します。
security.protocol=SASL_SSL
sasl.mechanism=SCRAM-SHA-512
ssl.truststore.location=/path/to/truststore.jks
ssl.truststore.password=<your-truststore-password>
sasl.jaas.config=org.apache.kafka.common.security.scram.ScramLoginModule required username="<your-username>" password="<your-password>";