Amazon Redshift 將不再支援從修補程式 198 開始建立新的 Python UDFs。現有 Python UDF 將繼續正常運作至 2026 年 6 月 30 日。如需詳細資訊,請參閱部落格文章
本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
從 Apache Kafka 來源執行 Redshift 串流擷取時使用 mTLS 進行身分驗證
雙向 Transport Layer Security (mTLS) 為提供身分驗證的方法,讓伺服器對其傳送資訊的用戶端進行身分驗證,以及讓用戶端對伺服器進行身分驗證。使用 mTLS 的好處在於提供信任的身分驗證,供數種垂直產業應用程式中的各種使用案例使用。這些包括金融、零售、政府和醫療保健產業的使用案例。在串流擷取至 Redshift 的案例中,身分驗證會發生在伺服器 (如 Amazon MSK、Apache Kafka 或 Confluent Cloud) 與 Amazon Redshift 佈建叢集或 Amazon Redshift Serverless 工作群組之間。
本主題提供多項程序和 SQL 命令範例,示範如何建立外部結構描述,以使用 mTLS 在 Redshift 用戶端與任何 Apache Kafka 伺服器之間進行身分驗證。本主題中的步驟補充了設定從 Apache Kafka 來源進行串流擷取的完整步驟。如需詳細資訊,請參閱開始從 Apache Kafka 來源進行串流擷取。
使用 mTLS 進行串流擷取的先決條件
本節提供使用 mTLS 搭配 AWS Certificate Manager 或 AWS Secrets Manager進行串流擷取的先決條件步驟。
作為初步步驟,您必須擁有或建立私有憑證授權機構 (PCA),可用來發行憑證,以透過安全通訊管道啟用安全通訊。 AWS 私有憑證授權單位 (私有 CA) 是執行此功能的可用服務。如需詳細資訊,請參閱《AWS 私有憑證授權單位 使用者指南》中的建立私有 CA。建立私有 CA 之後,匯出根 CA 憑證,並將其儲存至副檔名為 .pem 的檔案。
若要建立使用 CA 憑證的叢集,請執行下列操作:
使用 mTLS 搭配 進行串流擷取 AWS Certificate Manager
下列程序說明如何使用 AWS Certificate Manager (ACM) 儲存和管理憑證,以設定 Redshift 串流擷取使用的 mTLS:
透過 ACM 請求私有憑證。當您執行此操作時,請選取您在「先決條件」一節中建立的 PCA 作為憑證認證機構。ACM 會儲存已簽署的憑證和附加的私有金鑰,以進行安全通訊。如需使用 ACM 管理憑證的詳細資訊,請參閱《AWS Certificate Manager 使用者指南》中的發行和管理憑證。
對於您用來管理 Redshift 叢集或 Amazon Redshift Serverless 工作群組的 IAM 角色,請附加許可以匯出憑證,即 acm:ExportCertificate。如需設定串流擷取所需 IAM 資源的詳細資訊,請參閱 設定從 Kafka 執行串流擷取。在下一個步驟中指定相同的 IAM 角色,以建立外部結構描述。
注意
請求在您的 VPC 中 AWS Certificate Manager 需要網際網路閘道 (IGW) 或 NAT 閘道 (NGW)。如果您的 VPC 沒有 IGW 或 NGW,請執行下列操作:
使用 Secrets Manager 儲存您的憑證,而不要使用 ACM。
將 Secrets Manager VPC 端點附加至您的 VPC。
如需使用 Secrets Manager 搭配 mTLS 進行串流擷取的詳細資訊,請參閱後續的 使用 mTLS 搭配 進行串流擷取 AWS Secrets Manager。
取得 Amazon MSK、Apache Kafka 或 Confluent Cloud 叢集的啟動程序代理系統 URI。如需取得 Amazon MSK 的啟動程序代理系統 URI 的相關資訊,請參閱《Amazon Managed Streaming for Apache Kafka 開發人員指南》中的取得 Amazon MSK 叢集的啟動程序代理系統。
執行如下列範例所示的 SQL 命令,以使用
mtls建立將叢集對應至 Redshift 外部結構描述的外部結構描述。重要參數:
IAM_ROLE - 與叢集相關聯的 IAM 角色,用於串流擷取。
URI - 叢集的啟動程序代理系統 URI。請注意,對於 Amazon MSK,指定連接埠 9094 與代理系統通訊以進行 TLS 加密。
AUTHENTICATION_ARN - ACM 憑證的 ARN。當您選擇發出憑證時,ACM 主控台中就會提供 ARN。
執行這些組態設定步驟後,您可以建立 Redshift 具體化視觀表,以參考範例中定義的結構描述,然後使用 REFRESH MATERIALIZED VIEW 來串流資料。如需詳細資訊,請參閱開始從 Apache Kafka 來源進行串流擷取。
使用 mTLS 搭配 進行串流擷取 AWS Secrets Manager
如果您不想在 AWS Certificate Manager中參考憑證,您可以使用 AWS Secrets Manager 進行憑證管理,藉此為 Redshift 串流擷取設定 mTLS。下列步驟說明如何使用 Secrets Manager 設定 mTLS。
使用您選擇的工具建立憑證簽署請求和私有金鑰。然後,您可以使用簽署請求來產生已簽署憑證,以使用您用來為叢集產生憑證的相同 AWS 私有 CA (PCA)。如需發行憑證的詳細資訊,請參閱 AWS 私有憑證授權單位 API 參考中的 IssueCertificate。
使用 擷取憑證 AWS 私有憑證授權單位。如需詳細資訊,請參閱《AWS 私有憑證授權單位 使用者指南》中的擷取私有憑證。
將上一個步驟中產生的憑證和私有金鑰儲存在 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-----"}連接許可政策以將機密擷取至您用來管理 Amazon Redshift 叢集或 Amazon Redshift Serverless 工作群組的 IAM 角色。此許可為
secretsmanager:GetSecretValue。如需詳細資訊,請參閱設定身分驗證。如需管理 IAM 政策的詳細資訊,請參閱編輯 IAM 政策。在下一個步驟中指定相同的 IAM 角色,以建立外部結構描述。在 Redshift 中執行 SQL 命令,以建立外部結構描述。您使用 AUTHENTICATION 類型
mtls。您也可以在 AWS Secrets Manager中指定叢集的 URI 和機密 ARN。CREATE EXTERNAL SCHEMA my_schema FROM KAFKA 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 - 叢集的啟動程序代理系統 URI。請注意,對於 Amazon MSK,指定連接埠 9094 與代理系統通訊以進行 TLS 加密。
SECRET_ARN - Secrets Manager 中機密的 ARN,包含用於 mTLS 的憑證。
針對現有外部結構描述啟用 mTLS 身分驗證
如果您有用於串流擷取的現有外部結構描述,而且想要實作雙向 TLS 進行身分驗證,您可以執行下列命令,以指定 mTLS 身分驗證和 ACM 中的 ACM 憑證 ARN。
ALTER EXTERNAL SCHEMA schema_name AUTHENTICATION mtls AUTHENTICATION_ARN 'arn:aws:acm:Region:444455556666:certificate/certificate_ID';
或者,您可以指定 mTLS 身分驗證,並參考 AWS Secrets Manager中的機密 ARN。
ALTER EXTERNAL SCHEMA schema_name AUTHENTICATION mtls SECRET_ARN 'arn:aws:secretsmanager:us-east-1:012345678910:secret:myMTLSSecret';
如需 ALTER EXTERNAL SCHEMA 命令的相關資訊,請參閱 ALTER EXTERNAL SCHEMA。