

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

# 使用密钥
<a name="secrets-manager-how"></a>

我们建议你使用存储凭证或密钥 Amazon Secrets Manager 来连接直播目的地，例如亚马逊 Redshift、HTTP 终端节点、Snowflake、Splunk、Coralogix、Datadog、Dynatrace、Elastic、Honeycomb、Logz.io、MongoDB Cloud 和 New Relic。 LogicMonitor

在创建 Firehose 流时，您可以通过 Amazon 管理控制台使用 Secrets Manager 为这些目的地配置身份验证。有关更多信息，请参阅 [配置目的地设置](create-destination.md)。或者，您也可以使用[CreateDeliveryStream](https://docs.amazonaws.cn/firehose/latest/APIReference/API_CreateDeliveryStream.html)和 [UpdateDestination](https://docs.amazonaws.cn/firehose/latest/APIReference/API_UpdateDestination.html)API 操作来配置 Secrets Manager 的身份验证。

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

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

**注意**  
尽管在 Firehose 中的此功能无需支付额外费用，但您需要为访问和维护 Secrets Manager 付费。有关更多信息，请参阅 [Amazon Secrets Manager](https://www.amazonaws.cn/secrets-manager/pricing/) 定价页。

## 授予 Firehose 检索密钥的访问权限
<a name="secrets-manager-permission"></a>

要让 Firehose 从中检索密钥 Amazon Secrets Manager，您必须向 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的权限策略示例](https://docs.amazonaws.cn/secretsmanager/latest/userguide/auth-and-access_examples.html)。
+ 如果密钥与角色存储在同一个账户中，但使用[客户自主管理型密钥](https://docs.amazonaws.cn/kms/latest/developerguide/concepts.html#customer-cmk)（CMK）加密，则该角色同时需要 `secretsmanager:GetSecretValue` 和 `kms:Decrypt` 权限。CMK 策略还需要允许 IAM 角色执行 `kms:Decrypt`。
+ 如果密钥存储在与您的角色不同的 Amazon 账户中，并且使用默认 Amazon 托管密钥进行加密，则无法进行此配置，因为当使用托管密钥加密密钥时，Secrets Manager 不允许跨账户访问。 Amazon 
+ 如果密钥存储在不同的账户中并使用 CMK 加密，则 IAM 角色需要对该密钥的 `secretsmanager:GetSecretValue` 权限和对 CMK 的 `kms:Decrypt` 权限。密钥的资源策略和其他账户中的 CMK 策略还需要允许 IAM 角色具有必要的权限。有关更多信息，请参阅[跨账户访问](https://docs.amazonaws.cn/secretsmanager/latest/userguide/auth-and-access_examples_cross.html)。