View a markdown version of this page

セルフマネージド Apache Kafka クラスターで MSK レプリケーターの前提条件を設定する - Amazon Managed Streaming for Apache Kafka

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

セルフマネージド Apache Kafka クラスターで MSK レプリケーターの前提条件を設定する

IAM 実行ロールを作成する

の信頼ポリシーを使用して IAM ロールを作成しますkafka.amazonaws.com。AWSMSKReplicatorExecutionRole 管理ポリシーをアタッチします。マネージドポリシーは、レプリケーターが必要とするクラスターレベル、トピックconsumer-group-level Kafka アクセス許可を付与しますが、SASL/SCRAM 認証と CMK で暗号化された認証情報に必要な AWS Secrets Manager または アクセス AWS KMS 許可は含まれません。追加するインラインポリシースニペットについては、「」を参照してくださいSASL/SCRAM、mTLS、SASL/OAUTHBEARER、カスタマーマネージドキーに対する追加の SER アクセス許可。

信頼ポリシーの例:

{ "Statement": [{ "Effect": "Allow", "Principal": {"Service": "kafka.amazonaws.com"}, "Action": "sts:AssumeRole" }] }

SASL/SCRAM ユーザーと ACL アクセス許可を設定する

セルフマネージド Kafka クラスターに専用の SCRAM ユーザーを作成します。次の ACL アクセス許可が必要です。

  1. すべてのトピックを読み、記述する

  2. すべてのコンシューマーグループで読み、記述する

  3. クラスターリソースで記述する

kafka-acls.sh コマンドの例:

# Grant Read and Describe on all topics kafka-acls.sh --bootstrap-server <broker>:9092 \ --add --allow-principal User:msk-replicator \ --operation Read --operation Describe \ --topic '*' # Grant Read and Describe on all consumer groups kafka-acls.sh --bootstrap-server <broker>:9092 \ --add --allow-principal User:msk-replicator \ --operation Read --operation Describe \ --group '*' # Grant Describe on cluster kafka-acls.sh --bootstrap-server <broker>:9092 \ --add --allow-principal User:msk-replicator \ --operation Describe --cluster

セルフマネージドクラスターで mTLS を設定する

でセルフマネージド Kafka ブローカーに SSL リスナーを設定しますssl.client.auth=required。ブローカーのトラストストアには、MSK レプリケーターに使用するクライアント証明書に署名した CA 証明書が含まれている必要があります。

クライアント証明書の識別名 (DN) から派生した Kafka プリンシパルに ACL アクセス許可を付与します。必要なアクセス許可は、すべてのトピックで読み取りと記述、すべてのコンシューマーグループで読み取りと記述、クラスターリソースで記述です。

セルフマネージドクラスターで SASL/OAUTHBEARER (OAuth) を設定する

SASL/OAUTHBEARER を使用すると、MSK レプリケーターは ID プロバイダー (IDP) からアクセストークンを取得し、SASL/OAUTHBEARER ハンドシェイク (RFC 7628) 中にセルフマネージド Kafka クラスターに提示します。で OAUTHBEARERが有効になっているSASL_SSLリスナーを使用してブローカーを設定しsasl.enabled.mechanisms、IDP によって発行されたトークンのブローカー側の検証を設定します。

IDP がアクセストークンをソースクラスターで MSK レプリケーターが必要とする ACL アクセス許可にマッピングする Kafka プリンシパルを付与します。

MSK レプリケーターは、アクセストークンを取得するための以下のメカニズムをサポートしています。レプリケーターを作成するときに選択します (「」を参照セルフマネージド Kafka クラスターの CreateReplicator API の例)。

  • クライアント認証情報 — 標準client_credentials権限 (RFC 6749 §4.4)。で client_idと を指定しますclient_secret AWS Secrets Manager。このメカニズムは、Okta、Microsoft Entra ID、Keycloak、PingFederate、Google などの IDPs で使用します。

  • IAM JWT ベアラー — JWT ベアラーアサーショングラント (RFC 7523)。MSK レプリケーターは、サービス実行ロールの AWS ID を使用して、トークンエンドポイントにアサーションとして送信される署名付き JWT を取得します。IDP でクライアントも認証する必要がある場合は、共有シークレットは必要ありませんが、オプションでクライアント認証情報を指定できます。

  • クライアント認証情報アサーション — JWT クライアントアサーションを持つclient_credentialsグラント (RFC 7521/7523 §2.2)。サービス実行ロールの署名付き JWT は、共有シークレットなしでクライアントを認証client_assertionする として使用されます。

トークンエンドポイントには、次の要件が適用されます。

  • は HTTPS スキームを使用してホスト名を指定tokenEndpointUrlする必要があります (TLS ホスト名の検証を実行できるように、IP アドレスリテラルは使用できません)。

  • トークンエンドポイントは、レプリケーターに提供する VPC サブネットから到達可能である必要があります。「ネットワーク接続の設定」を参照してください。

  • IDP がプライベート CA によって発行された証明書を提示する場合は、CA 証明書を に保存 AWS Secrets Manager し、レプリケーターの作成tokenEndpointTlsCertificateArn時に で参照します。

セルフマネージドクラスターで SSL を設定する

ブローカーで SSL リスナーを設定します。パブリックに信頼された証明書の場合、追加の設定は必要ありません。プライベート証明書または自己署名証明書の場合は、 AWS Secrets Manager に保存されているシークレットに CA 証明書チェーン全体を含めます。

AWS Secrets Manager に認証情報を保存する

認証タイプに適したキーと値のペアを使用して、Secrets Manager で Other (RDS/Redshift ではない) タイプの AWS シークレットを作成します。

SASL/SCRAM の場合:

  1. username — セルフマネージドクラスターの SCRAM ユーザー名

  2. password — セルフマネージドクラスターの SCRAM パスワード

  3. certificate — CA 証明書チェーン (PEM 形式。プライベート/自己署名証明書に必要)

mTLS の場合:

  1. certificate — PEM エンコードされたクライアント証明書チェーン

  2. privateKey — PEM エンコードされたプライベートキー

  3. privateKeyPassword — (オプション) 暗号化された PKCS8 キーにのみ必要なプライベートキーのパスフレーズ

SASL/OAUTHBEARER の場合:

クライアント認証情報メカニズムにはシークレットが必要であり、IAM JWT ベアラーとクライアント認証情報アサーションメカニズムにはオプションです (IDP でクライアントも認証する必要がある場合にのみシークレットを提供します)。シークレットは、キーと値のペアのフラットな JSON オブジェクトです。MSK レプリケーターは次のキーを認識します。

  • client_id — OAuth クライアント識別子。クライアント認証情報メカニズムに必要です。

  • client_secret — OAuth クライアントシークレット。クライアント認証情報メカニズムに必要です。

  • custom_param.<name> — (オプション) 標準 OAuth セットを超えるパラメータを必要とする IDPs に対して、トークンリクエストに追加される追加のフォームパラメータ。パラメータごとに 1 つのキーを追加します (例: custom_param.resource)。

  • custom_header.<name> — (オプション) トークンリクエストとともに送信される追加の HTTP ヘッダー。ヘッダーごとに 1 つのキーを追加します (例: custom_header.X-Custom)。

  • extension.<name> — (オプション) 認証中に追加のキーと値のペアを必要とする Kafka プロバイダーのために、SASL/OAUTHBEARER ハンドシェイク中に Kafka ブローカーに送信される SASL 拡張機能。拡張機能ごとに 1 つのキーを追加します。

これらのプレフィックスの 1 つclient_secretを使用しない client_idおよび 以外のキーは無視されます。クライアント認証情報メカニズムのシークレット値の例を次に示します。

{ "client_id": "my-oauth-client", "client_secret": "example-client-secret", "custom_param.resource": "urn:example:kafka" }
注記

MSK レプリケーターは、パラメータ名が標準の OAuth パラメータ (grant_type、、、client_idclient_secret、assertion、 など) client_assertion client_assertion_typeと競合するcustom_param.エントリを拒否しますscope。また、Host、、 などの制限されたcustom_header.エントリも拒否AuthorizationしますContent-Type。

ネットワーク接続の設定

MSK レプリケーターには、セルフマネージド Kafka クラスターへのネットワーク接続が必要です。サポートされているオプション:

  • AWS Site-to-Site VPN — インターネット経由でオンプレミスネットワークを VPC に接続します。

  • AWS Direct Connect — オンプレミスから への専用プライベートネットワーク接続を確立します AWS。

SASL/OAUTHBEARER を使用する場合は、レプリケーターに指定した VPC サブネットからトークンエンドポイントに到達できる必要があります。インターネットホスト IDP の場合、これには通常、インターネットゲートウェイ、NAT ゲートウェイ、ルートテーブルエントリが必要です。オンプレミス IDP またはプライベート IDP の場合は、 AWS Site-to-Site VPN または AWS Direct Connect を使用します。トークンエンドポイントは、ループバック、リンクローカル、または AWS メタデータアドレスに解決してはいけません。

セキュリティグループの設定

セキュリティグループが、認証リスナーが使用するポートで MSK レプリケーターとセルフマネージドクラスター間のトラフィックを許可していることを確認します。VPC セキュリティグループのインバウンドルールと、セルフマネージド型クラスターファイアウォールのアウトバウンドルールの両方を更新します。