使用 mTLS 進行身分驗證,以便從 Amazon 擷取 Redshift 串流 MSK - Amazon Redshift

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

使用 mTLS 進行身分驗證,以便從 Amazon 擷取 Redshift 串流 MSK

相互傳輸層安全性 (mTLS) 為伺服器提供驗證其傳送資訊之用戶端的方法,以及讓用戶端驗證伺服器的方法。使用 mTLS 的好處是為多個產業垂直應用程式中的各種使用案例提供信任的身分驗證。這些包括金融、零售、政府和醫療保健產業的使用案例。在串流擷取至 Redshift 的情況下,身分驗證會在伺服器之間進行,在此情況下是 Amazon MSK、Amazon Redshift 佈建叢集或 Amazon Redshift Serverless 工作群組。

本主題提供程序和SQL命令範例,示範建立外部結構描述的方法,該結構描述使用 mTLS 在 Redshift 用戶端和 Amazon MSK 伺服器之間進行身分驗證。本主題中的步驟補充了設定來自 Amazon 的串流擷取的完整步驟。 MSK這些詳細資訊請參閱 從 Amazon Managed Streaming for Apache Kafka (Amazon MSK) 開始串流擷取

使用 mTLS 進行串流擷取的先決條件

本節提供使用 mTLS 與 AWS Certificate Manager 或 Amazon 進行串流擷取的先決條件步驟 SageMaker。

  1. 作為初步步驟,您必須擁有或建立私有憑證授權機構 (PCA),您可以使用它來發行憑證,以透過安全通訊管道啟用安全通訊。 AWS Private Certificate Authority (Private CA) 是執行此函數的可用服務。如需詳細資訊,請參閱 AWS Private Certificate Authority 使用者指南 中的建立私有 CA。在稍後的步驟中,您會發出憑證並將其連接至您的 Amazon MSK叢集,以啟用與 Redshift 的加密通訊。

  2. 建立支援 mtls 用戶端身分驗證的 Amazon MSK叢集。如需設定 Amazon MSK叢集的詳細資訊,請參閱 Amazon Managed Streaming for Apache Kafka 開發人員指南 中的如何建立支援用戶端身分驗證的叢集

  3. 編輯 Amazon MSK叢集的安全設定,使用 AWS Certificate Manager (ACM) 開啟TLS用戶端身分驗證,然後選擇您先前建立的 AWS Private CA (PCA)。如需詳細資訊,請參閱 Amazon Managed Streaming for Apache Kafka 開發人員指南 中的更新叢集的安全性設定

使用 mTLS 與 進行串流擷取 AWS Certificate Manager

下列程序說明如何利用 AWS Certificate Manager (ACM) 進行憑證儲存和管理,為 Redshift 串流擷取設定 mTLS:

  1. 透過 請求私有憑證ACM。執行此操作時,請選取PCA您在先決條件區段中建立的 做為憑證授權機構。ACM 會儲存已簽署的憑證和連接的私有金鑰,以進行安全通訊。如需使用 管理憑證的詳細資訊ACM,請參閱 AWS Certificate Manager 使用者指南 中的發行和管理憑證

  2. 對於您用來管理 Redshift 叢集或 Amazon Redshift Serverless 工作群組IAM的角色,請連接匯出憑證的許可,即 acm:ExportCertificate。如需使用 Amazon 設定串流擷取必要IAM資源的詳細資訊MSK,請參閱 從 Kafka 設定IAM許可和執行串流擷取。在下一個步驟中指定相同的IAM角色,以建立外部結構描述。

  3. 取得 Amazon MSK叢集URI的引導代理程式。取得引導代理程式URI詳述於 Amazon Managed Streaming for Apache Kafka 開發人員指南 中的取得 Amazon MSK叢集的引導代理程式。

  4. 執行類似下列範例的SQL命令,以使用 建立外部結構描述,將 Amazon MSK叢集中的串流映射至 Redshift 外部結構描述mtls

    CREATE EXTERNAL SCHEMA my_schema FROM MSK IAM_ROLE 'arn:aws:iam::012345678901:role/my_role' AUTHENTICATION mtls URI 'b-1.myTestCluster.123z8u.c2.kafka.us-west-1.amazonaws.com:9094,b-2.myTestCluster.123z8u.c2.kafka.us-west-1.amazonaws.com:9094' AUTHENTICATION_ARN 'arn:aws:acm:Region:444455556666:certificate/certificate_ID';

    重要參數:

    • IAM_ROLE – 與叢集相關聯的IAM角色,用於串流擷取。

    • URI – Amazon MSK叢集URI的引導代理程式。請注意,連接埠 9094 是指定用於與代理程式通訊以進行TLS加密。

    • AUTHENTICATION_ARN – ACM憑證ARN的 。當您選擇發行的憑證時,ACM主控台中ARN會提供 。

執行這些組態步驟後,您可以建立 Redshift 具體化檢視,參考範例中定義的結構描述,然後使用 REFRESH MATERIALIZED VIEW 串流資料。這在從 Amazon 開始串流的步驟中詳細說明MSK,網址為:從 Amazon Managed Streaming for Apache Kafka 開始串流擷取 (MSK)。

使用 mTLS 與 進行串流擷取 AWS Secrets Manager

如果您不想在 中參考憑證,則可以利用 AWS Secrets Manager 進行憑證管理,為 Redshift 串流擷取設定 mTLSACM。以下步驟說明如何設定它。

  1. 使用您選擇的工具建立憑證簽署請求和私有金鑰。然後,您可以使用簽署請求來產生簽署的憑證,使用與用來產生 Amazon MSK叢集憑證的相同 AWS 私有 CA (PCA)。如需發出憑證的詳細資訊,請參閱 參考 IssueCertificate中的 。 AWS Private Certificate Authority API

  2. 使用 擷取憑證 AWS Private Certificate Authority。如需詳細資訊,請參閱 AWS Private Certificate Authority 使用者指南 中的擷取私有憑證>

  3. 將上一個步驟中產生的憑證和私有金鑰儲存在 中 AWS Secrets Manager。選擇Other type of secret並使用純文字格式。索引鍵值對的格式應該為 {"certificate":"<cert value>","privateKey":"<pkey value>"},如下列範例所示。如需在 中建立和管理秘密的詳細資訊 AWS Secrets Manager,請參閱 AWS Secrets Manager 使用者指南 中的使用 建立和管理秘密 AWS Secrets Manager

    {"certificate":"-----BEGIN CERTIFICATE----- klhdslkfjahksgdfkgioeuyihbflahabhbdslv6akybeoiwv1hoaiusdhbahsbdi H4hAX8/eE96qCcjkpfT84EdvHzp6fC+/WwM0oXlwUEWlvfMCXNaG5D8SqRq3qA== -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- klhdslkfjahksgdfkgioeuyihbflahabhbdslv6akybeoiwv1hoaiusdhbahsbdi wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY -----END CERTIFICATE-----", "privateKey":"-----BEGIN PRIVATE KEY----- klhdslkfjahksgdfkgioeuyihbflahabhbdslv6akybeoiwv1hoaiusdhbahsbdi 7OD4m1dBEs3Fj++hDMH9rYRp99RqtCOf0EWOUe139KOilOsW+cyhAoc9Ci2+Jo/k 17u2N1iGILMQEZuCRtnJOkFYkw== -----END PRIVATE KEY-----"}
  4. 在 Redshift 中,執行 SQL命令以建立外部結構描述。您可以使用 AUTHENTICATION類型mtls。您也可以在 ARN中指定 Amazon MSK叢集URI的 和秘密 AWS Secrets Manager。

    CREATE EXTERNAL SCHEMA my_schema FROM MSK IAM_ROLE 'arn:aws:iam::012345678901:role/my_role' AUTHENTICATION mtls URI 'b-1.myTestCluster.123z8u.c2.kafka.us-west-1.amazonaws.com:9094,b-2.myTestCluster.123z8u.c2.kafka.us-west-1.amazonaws.com:9094' SECRET_ARN 'arn:aws:secretsmanager:us-east-1:012345678910:secret:myMTLSSecret';

重要參數:

  • IAM_ROLE – 與叢集相關聯的IAM角色,用於串流擷取。

  • URI – Amazon MSK叢集URI的引導代理程式。請注意,連接埠 9094 是指定用於與代理程式通訊以進行TLS加密。

  • SECRET_ARN – Secrets Manager ARN的秘密,其中包含用於 m 的憑證TLS。

啟用現有外部結構描述的 mTLS 身分驗證

如果您有用於串流擷取的現有外部結構描述,而且想要實作相互TLS身分驗證,您可以執行下列命令,指定 ARN中的 mTLS 身分驗證和ACM憑證ACM。

ALTER EXTERNAL SCHEMA schema_name AUTHENTICATION mtls AUTHENTICATION_ARN 'arn:aws:acm:Region:444455556666:certificate/certificate_ID';

或者,您可以參考 中的秘密來指定 mTLS ARN 身分驗證 AWS Secrets Manager。

ALTER EXTERNAL SCHEMA schema_name AUTHENTICATION mtls SECRET_ARN 'arn:aws:secretsmanager:us-east-1:012345678910:secret:myMTLSSecret';