使用秘密 - Amazon Data Firehose

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

使用秘密

我們建議您使用 AWS Secrets Manager 來存放登入資料或金鑰,以連線至串流目的地,例如 Amazon Redshift、HTTP端點、Snowflake、Splunk、Coralogix、Datadog、Dynatrace、Elastic、Honeycomb LogicMonitor、Logz.io、MongoDB Cloud 和 New Relic。

您可以在建立 Firehose 串流時, AWS 透過 管理主控台設定這些目的地的 Secrets Manager 身分驗證。如需詳細資訊,請參閱設定目的地設定。或者,您也可以使用 CreateDeliveryStreamUpdateDestinationAPI操作來設定 Secrets Manager 的身分驗證。

Firehose 會使用加密來快取秘密,並在每次連線至目的地時使用這些秘密。它會每 10 分鐘重新整理快取一次,以確保使用最新的登入資料。

您可以選擇在串流生命週期內隨時關閉從 Secrets Manager 擷取秘密的功能。如果您不想使用 Secrets Manager 擷取秘密,您可以改為使用使用者名稱/密碼或API金鑰。

注意

雖然 Firehose 中此功能沒有額外費用,但您需要支付 Secrets Manager 的存取和維護費用。如需詳細資訊,請參閱AWS Secrets Manager定價頁面。

授予 Firehose 擷取秘密的存取權

若要讓 Firehose 從中擷取秘密 AWS Secrets Manager,您必須向 Firehose 提供存取秘密所需的許可,以及加密秘密的金鑰。

使用 AWS Secrets Manager 存放和擷取秘密時,有幾種不同的組態選項,取決於秘密的存放位置和加密方式。

  • 如果秘密與您的IAM角色存放在相同的 AWS 帳戶中,並且使用預設 AWS 受管金鑰 (aws/secretsmanager) 加密,Firehose 擔任IAM的角色只需要秘密的secretsmanager:GetSecretValue許可。

    // secret role policy { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": "Secret ARN" } ] }

    如需IAM政策的詳細資訊,請參閱 的許可政策範例 AWS Secrets Manager

  • 如果秘密與 角色存放在相同的 帳戶中,但使用客戶受管金鑰 (CMK) 加密,則此角色需要 secretsmanager:GetSecretValuekms:Decrypt 許可。此CMK政策也需要允許IAM角色執行 kms:Decrypt

    { "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": "secretsmanager:GetSecretValue", "Resource": "Secret ARN" }, { "Effect": "Allow", "Action": "kms:Decrypt", "Resource": "KMSKeyARN" } ] }
  • 如果秘密存放在與您的角色不同的 AWS 帳戶中,並且使用預設 AWS 受管金鑰加密,則無法進行此組態,因為當秘密使用 AWS 受管金鑰加密時,Secrets Manager 不允許跨帳戶存取。

  • 如果秘密存放在不同的帳戶中並使用 加密CMK,IAM角色需要 秘密的secretsmanager:GetSecretValue許可和 上的kms:Decrypt許可CMK。秘密的資源政策和其他帳戶中CMK的政策也需要允許IAM角色必要的許可。如需詳細資訊,請參閱跨帳戶存取