使用秘密 - Amazon Data Firehose

将 Amazon Data Firehose 流传输到亚马逊 S3 中的 Apache Iceberg Tables 处于预览阶段,可能会发生变化。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

使用秘密

我们建议您使用 AWS Secrets Manager 存储您的凭据或密钥以连接到直播目的地,例如亚马逊 Redshift、Endpo HTTP int、Snowflake、Splunk、Coralogix、Datadog、Dynatrace、Elastic、Honeycomb、Logz.io、MongoDB Cloud 和 New Relic。 LogicMonitor

你可以通过 Secrets Manager 为这些目的地配置身份验证 AWS 创建 Firehose 直播时的管理控制台。有关更多信息,请参阅 配置目的地设置。或者,您也可以使用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 要存储和检索机密,有几种不同的配置选项,具体取决于密钥的存储位置和加密方式。

  • 如果密钥存储在同一个地方 AWS 账户作为你的IAM角色并使用默认值进行加密 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 托管密钥,此配置是不可能的,因为使用加密密钥时 Secrets Manager 不允许跨账户访问 AWS 托管密钥。

  • 如果密钥存储在不同的账户中并使用加密CMK,则IAM角色需要secretsmanager:GetSecretValue获得该密钥的kms:Decrypt权限和对的权限CMK。密钥的资源策略和其他账户中的CMK策略还需要允许该IAM角色拥有必要的权限。有关更多信息,请参阅跨账户访问