使用密钥 - Amazon Data Firehose
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

使用密钥

我们建议您使用存储凭证或密钥, Amazon Secrets Manager 以连接流式传输目标,例如 Amazon Redshift、HTTP 端点、Snowflake、Splunk、Datadog、Dynatrace、Elastic、Honeycomb、Logz.io、MongoDB Cloud 和 New Relic。 LogicMonitor

在创建 Firehose 流时,您可以通过 Amazon 管理控制台使用 Secrets Manager 为这些目的地配置身份验证。有关更多信息,请参阅 配置目的地设置。或者,您也可以使用CreateDeliveryStreamUpdateDestinationAPI 操作来配置 Secrets Manager 的身份验证。

Firehose 使用加密方法缓存密钥,并在每次连接到目的地时使用这些密钥。它每 10 分钟刷新一次缓存,以确保可使用最新的凭证。

在流的生命周期中,您可以选择随时关闭从 Secrets Manager 检索密钥的功能。如果您不想使用 Secrets Manager 检索密钥,则可以改用用户名/密码或 API 密钥。

注意

尽管在 Firehose 中的此功能无需支付额外费用,但您需要为访问和维护 Secrets Manager 付费。有关更多信息,请参阅 Amazon Secrets Manager 定价页。

授予 Firehose 检索密钥的访问权限

要让 Firehose 从中检索密钥 Amazon Secrets Manager,您必须向 Firehose 提供访问密钥以及加密您的密钥的密钥所需的权限,并向 Firehose 提供访问密钥的权限,并提供加密您的密钥的密钥所需的权限。

使用 Amazon Secrets Manager 存储和检索密钥时,有几种不同的配置选项,具体取决于密钥的存储位置和加密方式。

  • 如果密钥与您的 IAM 角色存储在同一个 Amazon 账户中,并且使用默认的 Amazon 托管密钥(aws/secretsmanager)进行加密,则 Firehose 承担的 IAM 角色只需要对密钥的secretsmanager:GetSecretValue权限。

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

    有关 IAM 策略的更多信息,请参阅 Amazon 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" } ] }
  • 如果密钥存储在与您的角色不同的 Amazon 账户中,并且使用默认的托管密钥进行加密,则无法进行此配置,因为当使用 Amazon 托管密钥加密密钥时,Secrets Manager 不允许跨账户访问。 Amazon

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