本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
在 Lambda 中設定叢集身分驗證方法
Lambda 需要存取 Amazon MSK 叢集、擷取記錄和執行其他任務的許可。Amazon MSK 支援多種向 MSK 叢集進行身分驗證的方式。
未驗證的存取
如果沒有用戶端透過網際網路存取叢集,您可以使用未驗證存取。
SASL/SCRAM 身分驗證
Lambda 支援使用 SHA-512 雜湊函數和 Transport Layer Security (TLS) 加密的 Simple Authentication and Security Layer/Salted Challenge Response Authentication Mechanism (SASL/SCRAM) 身分驗證。若要讓 Lambda 連線到叢集,請將身分驗證憑證 (使用者名稱和密碼) 存放在 Secrets Manager 秘密中,並在設定事件來源映射時參考此秘密。
如需使用 Secrets Manager 的詳細資訊,請參閱《Amazon Managed Streaming for Apache Kafka 開發人員指南》中的使用 Secrets Manager 進行登入憑證身分驗證。
注意
Amazon MSK 不支援 SASL/PLAIN 身分驗證。
交互 TLS 驗證
相互 TLS (mTLS) 在用戶端和伺服器之間提供雙向身分驗證。用戶端會將憑證傳送至伺服器,供伺服器驗證用戶端。伺服器也會傳送憑證給用戶端,讓用戶端驗證伺服器。
對於與 Lambda 的 Amazon MSK 整合,您的 MSK 叢集充當伺服器,而 Lambda 充當用戶端。
-
若要讓 Lambda 驗證您的 MSK 叢集,您可以在 Secrets Manager 中將用戶端憑證設定為秘密,並在事件來源映射組態中參考此憑證。用戶端憑證必須由伺服器信任存放區中的憑證授權機構 (CA) 簽署。
-
MSK 叢集也會將伺服器憑證傳送至 Lambda。伺服器憑證必須由 AWS 信任存放區中的憑證授權機構 (CA) 簽署。
Amazon MSK 不支援自我簽署的伺服器憑證。Amazon MSK 中的所有代理程式都會使用由 Amazon Trust Services CAs
CLIENT_CERTIFICATE_TLS_AUTH 機密必須有憑證欄位和私有金鑰欄位。若為加密的私有金鑰,機密需要私有金鑰密碼。憑證與私有金鑰均必須為 PEM 格式。
注意
Lambda 支援 PBES1
憑證欄位必須包含憑證清單,以用戶端憑證開頭,隨後則是任何中繼憑證,並以根憑證結尾。每個憑證均必須以新的一行開始,結構如下:
-----BEGIN CERTIFICATE----- <certificate contents> -----END CERTIFICATE-----
Secrets Manager 支援高達 65,536 個位元組的機密,此空間足以容納長憑證鏈。
私有金鑰必須為 PKCS #8
-----BEGIN PRIVATE KEY----- <private key contents> -----END PRIVATE KEY-----
對於已加密的私有金鑰,請使用下列結構:
-----BEGIN ENCRYPTED PRIVATE KEY----- <private key contents> -----END ENCRYPTED PRIVATE KEY-----
下列範例顯示的是使用了已加密私有金鑰之 mTLS 身分驗證的機密內容。若為加密的私有金鑰,您可以在機密中包含私有金鑰密碼。
{ "privateKeyPassword": "testpassword", "certificate": "-----BEGIN CERTIFICATE----- MIIE5DCCAsygAwIBAgIRAPJdwaFaNRrytHBto0j5BA0wDQYJKoZIhvcNAQELBQAw ... j0Lh4/+1HfgyE2KlmII36dg4IMzNjAFEBZiCRoPimO40s1cRqtFHXoal0QQbIlxk cmUuiAii9R0= -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- MIIFgjCCA2qgAwIBAgIQdjNZd6uFf9hbNC5RdfmHrzANBgkqhkiG9w0BAQsFADBb ... rQoiowbbk5wXCheYSANQIfTZ6weQTgiCHCCbuuMKNVS95FkXm0vqVD/YpXKwA/no c8PH3PSoAaRwMMgOSA2ALJvbRz8mpg== -----END CERTIFICATE-----", "privateKey": "-----BEGIN ENCRYPTED PRIVATE KEY----- MIIFKzBVBgkqhkiG9w0BBQ0wSDAnBgkqhkiG9w0BBQwwGgQUiAFcK5hT/X7Kjmgp ... QrSekqF+kWzmB6nAfSzgO9IaoAaytLvNgGTckWeUkWn/V0Ck+LdGUXzAC4RxZnoQ zp2mwJn2NYB7AZ7+imp0azDZb+8YG2aUCiyqb6PnnA== -----END ENCRYPTED PRIVATE KEY-----" }
如需 mTLS for Amazon MSK 的詳細資訊,以及如何產生用戶端憑證的指示,請參閱《Amazon Managed Streaming for Apache Kafka 開發人員指南》中的 Amazon MSK 的相互 TLS 用戶端身分驗證。
IAM 身分驗證
您可以使用 AWS Identity and Access Management (IAM) 驗證連線至 MSK 叢集之用戶端的身分。透過 IAM 身分驗證,Lambda 倚賴函數執行角色中的許可來連線至叢集、擷取記錄,以及執行其他必要的動作。如需包含必要許可的範例政策,請參閱《Amazon Managed Streaming for Apache Kafka 開發人員指南》中的建立 IAM 角色的授權政策。
如果您的 MSK 叢集上已啟用 IAM 身分驗證,而且您未提供秘密,則 Lambda 會自動預設為使用 IAM 身分驗證。
如需 Amazon MSK 中 IAM 身分驗證的詳細資訊,請參閱 IAM 存取控制。
Lambda 選擇引導代理程式的方法
Lambda 會依據叢集上可用的身分驗證方法,以及您是否提供了身分驗證密碼,以此選擇引導代理程式。若您提供了 MTL 或 SASL/SCRAM 的密碼,則 Lambda 會自動選擇該身分驗證方法。若您未提供密碼,Lambda 會選取叢集上作用中的安全強度最高的身分驗證方法。以下是 Lambda 選擇代理程式的優先順序,身分驗證安全強度依次遞減:
mTLS (已提供 mTLS 密碼)
SASL/SCRAM (已提供 SASL /SCROM 密碼)
SASL IAM (未提供任何密碼,且 IAM 身分驗證在作用中)
未驗證的 TLS (未提供任何密碼,且 IAM 身分驗證未在作用中)
純文字 (未提供任何密碼,且 IAM 身分驗證和未經身分驗證的 TLS 皆未在作用中)
注意
若 Lambda 無法連線至最安全的代理程式類型,Lambda 便不會嘗試連線至其他 (安全強度較弱) 的代理程式類型。若您要讓 Lambda 選擇安全強度較弱較弱的代理程式類型,請停用叢集上所有安全強度較弱更高的身分驗證方法。