View a markdown version of this page

使用自我管理的 Apache Kafka 叢集設定 MSK Replicator 的先決條件 - Amazon Managed Streaming for Apache Kafka

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用自我管理的 Apache Kafka 叢集設定 MSK Replicator 的先決條件

建立 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 Replicator 之用戶端憑證的 CA 憑證。

將 ACL 許可授予衍生自用戶端憑證辨別名稱 (DN) 的 Kafka 主體。必要的許可包括:所有主題的讀取和描述、所有取用者群組的讀取和描述,以及叢集資源的描述。

在自我管理叢集上設定 SASL/OAUTHBEARER (OAuth)

透過 SASL/OAUTHBEARER,MSK Replicator 會從您的身分提供者 (IDP) 取得存取權杖,並在 SASL/OAUTHBEARER 交握 (RFC 7628) 期間將其呈現給自我管理的 Kafka 叢集。使用已在 中OAUTHBEARER啟用的SASL_SSL接聽程式來設定您的代理程式sasl.enabled.mechanisms,並設定 IDP 發行權杖的代理程式端驗證。

授予您的 IDP 將存取權杖映射至 MSK Replicator 在來源叢集上所需 ACL 許可的 Kafka 主體。

MSK Replicator 支援下列機制來取得存取權杖。您可以在建立複寫器時選擇一個 (請參閱 自我管理 Kafka 叢集的 CreateReplicator API 範例)。

  • 用戶端登入資料 — 標準client_credentials授權 (RFC 6749 §4.4)。您在 client_secret 中提供 client_id和 AWS Secrets Manager。將此機制與 Okta、Microsoft Entra ID、Keycloak、PingFederate 和 Google 等 IDPs 搭配使用。

  • IAM JWT 承載 — JWT 承載聲明授予 (RFC 7523)。MSK Replicator 使用服務執行角色的 AWS 身分來取得簽署的 JWT,該 JWT 會傳送到字符端點做為聲明。不需要共用秘密,但如果您的 IDP 要求用戶端也進行身分驗證,您可以選擇性地提供用戶端登入資料。

  • 用戶端憑證聲明 — 具有 JWT 用戶端聲明的client_credentials授予 (RFC 7521/7523 §2.2)。服務執行角色的已簽署 JWT 會用作 client_assertion 來驗證用戶端,無需共用秘密。

下列要求適用於字符端點:

  • tokenEndpointUrl 必須使用 HTTPS 配置並指定主機名稱 (不允許 IP 地址常值,以便可以執行 TLS 主機名稱驗證)。

  • 字符端點必須可從您為複寫器提供的 VPC 子網路連接。請參閱 設定網路連線。

  • 如果您的 IDP 提供私有 CA 發行的憑證,請將 CA 憑證存放在 中 AWS Secrets Manager ,並在您建立複寫器tokenEndpointTlsCertificateArn時參考它。

在自我管理叢集上設定 SSL

在代理程式上設定 SSL 接聽程式。對於公開信任的憑證,不需要額外的組態。對於私有或自我簽署憑證,請在存放在 AWS Secrets Manager 的秘密中包含完整的 CA 憑證鏈。

在 AWS Secrets Manager 中存放登入資料

在 AWS Secrets Manager 中建立類型為其他 (非 RDS/Redshift) 的秘密,並為您的身分驗證類型使用適當的鍵值對。

對於 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 Replicator 會辨識下列金鑰:

  • client_id — OAuth 用戶端識別符。用戶端登入資料機制的必要項目。

  • client_secret — OAuth 用戶端秘密。用戶端登入資料機制的必要項目。

  • custom_param.<name> — (選用) 針對需要超出標準 OAuth 集之參數的 IDPs,附加至字符請求的額外格式參數。每個參數新增一個金鑰 (例如 custom_param.resource)。

  • custom_header.<name> — (選用) 隨字符請求傳送的額外 HTTP 標頭。每個標頭新增一個金鑰 (例如 custom_header.X-Custom)。

  • extension.<name> — (選用) 在 SASL/OAUTHBEARER 交握期間傳送至 Kafka 代理程式的 SASL 延伸,適用於身分驗證期間需要額外金鑰/值對的 Kafka 供應商。每個延伸模組新增一個金鑰。

不使用其中一個字首client_secret的 client_id和 以外的金鑰會被忽略。以下是用戶端登入資料機制的範例秘密值:

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

MSK Replicator 會拒絕參數名稱與標準 OAuth 參數 (例如 grant_type、、client_idclient_secret、client_assertionclient_assertion_type、 assertion和 ) 衝突custom_param.的項目scope。它也會拒絕受限custom_header.項目,例如 Host、 Authorization和 Content-Type。

設定網路連線

MSK Replicator 需要連線至自我管理 Kafka 叢集的網路連線。支援的選項:

  • AWS Site-to-Site VPN — 透過網際網路將內部部署網路連接到 VPC。

  • AWS Direct Connect — 從您的內部部署建立專用的私有網路連線 AWS。

如果您使用 SASL/OAUTHBEARER,權杖端點也必須可從您為複寫器提供的 VPC 子網路連接。對於網際網路託管的 IDP,這通常需要網際網路閘道、NAT 閘道和路由表項目;對於內部部署或私有 IDP,請使用 AWS Site-to-Site或 AWS Direct Connect。字符端點不得解析為迴路、連結本機或 AWS 中繼資料地址。

設定安全群組

確保安全群組允許 MSK Replicator 與身分驗證接聽程式所用連接埠上的自我管理叢集之間的流量。更新 VPC 安全群組的傳入規則和自我管理叢集防火牆上的傳出規則。