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

使用 Amazon Secrets Manager 管理 Amazon Redshift 管理员密码

Amazon Redshift 可以与 Amazon Secrets Manager 集成,以便使用加密密钥来生成和管理您的管理员凭证。使用 Amazon Secrets Manager,您可以将管理员密码替换为 API 调用,以便在需要时以编程方式检索密钥。使用密钥而不是硬编码凭证可以降低这些凭证被公开或泄漏的风险。有关 Amazon Secrets Manager 的更多信息,请参阅 Amazon Secrets Manager 用户指南

在执行以下操作之一时,您可以使用 Amazon Secrets Manager 来指定由 Amazon Redshift 管理您的管理员密码:

  • 创建预置集群或无服务器命名空间

  • 从快照还原集群或无服务器命名空间

当您在 Amazon Secrets Manager 中指定由 Amazon Redshift 来管理管理员密码时,Amazon Redshift 会生成密码并将其存储在 Secrets Manager 中。您可以直接在 Amazon Secrets Manager 中访问密钥以检索管理员用户的凭证。(可选)如果您需要从其他 Amazon 账户访问密钥,您可以指定客户管理的密钥来加密密钥。您也可以使用 Amazon Secrets Manager 提供的 KMS 密钥。

Amazon Redshift 管理密钥的设置,默认情况下每 30 天轮换一次密钥。您可以随时手动轮换密钥。如果您删除管理 Amazon Secrets Manager 中密钥的预置集群或无服务器命名空间,则该密钥及其关联的元数据也会被删除。

要使用密钥管理的凭证连接到集群或无服务器命名空间,您可以使用 Secrets Manager 控制台或 GetSecretValue Secrets Manager API 调用,从 Amazon Secrets Manager 检索密钥。有关更多信息,请参阅《Amazon Secrets Manager 用户指南》中的从 Amazon Secrets Manager 中检索密钥使用 Amazon Secrets Manager 密钥中的凭证连接到 SQL 数据库

Amazon Secrets Manager 集成所需的权限

用户必须拥有所需的权限才能执行与 Amazon Secrets Manager 集成相关的操作。创建 IAM 策略,以便授予权限对所需的指定资源执行特定的 API 操作。然后,将这些策略附加到需要这些权限的 IAM 权限集或角色。有关更多信息,请参阅 Amazon Redshift 中的 Identity and Access Management

指定 Amazon Redshift 管理 Amazon Secrets Manager 中管理员密码的用户必须具有执行以下操作的权限:

  • secretsmanager:CreateSecret

  • secretsmanager:RotateSecret

  • secretsmanager:DescribeSecret

  • secretsmanager:UpdateSecret

  • secretsmanager:DeleteSecret

  • secretsmanager:GetRandomPassword

  • secretsmanager:TagResource

如果用户想要为预置集群在 MasterPasswordSecretKmsKeyId 参数中传递 KMS 密钥,或者想要为无服务器命名空间在 AdminPasswordSecretKmsKeyId 参数中传递 KMS 密钥,则在上面列出的权限之外,他们还需要以下权限。

  • kms:Decrypt

  • kms:GenerateDataKey

  • kms:CreateGrant

  • kms:RetireGrant

轮换管理员密码密钥

默认情况下,Amazon Redshift 每 30 天自动轮换一次密钥,以确保您的凭证不会长时间保持不变。当 Amazon Redshift 轮换管理员密码密钥时,Amazon Secrets Manager 会更新现有密钥以包含新的管理员密码。Amazon Redshift 更改集群的管理员密码,使其与更新后的密钥中的密码相匹配。

您可以立即轮换密钥,而不必等待使用 Amazon Secrets Manager 的计划轮换。有关轮换密钥的更多信息,请参阅《Amazon Secrets Manager 用户指南》中的轮换 Amazon Secrets Manager 密钥

在 Amazon Redshift 中检索密钥的 Amazon 资源名称(ARN)

您可以使用 Amazon Redshift 控制台,查看由 Amazon Secrets Manager 管理的所有密钥的 Amazon 资源名称(ARN)。在拥有密钥的 ARN 时,您可以使用 Amazon Secrets Manager 查看有关密钥的详细信息以及密钥中的加密数据。有关使用 ARN 检索密钥更多信息,请参阅《Amazon Secrets Manager 用户指南》中的检索密钥

查看有关 Amazon Redshift 预置集群的密钥的详细信息

使用 Amazon Redshift 控制台查看集群的密钥的 Amazon 资源名称(ARN),步骤如下:

  1. 登录 Amazon Web Services Management Console 并打开 Amazon Redshift 控制台。

  2. 集群概览窗格中,选择要查看其密钥的集群。

  3. 选择属性选项卡。

  4. 查看管理员凭证 ARN 下密钥的 ARN。此 ARN 是密钥的标识符,您可以在 Amazon Secrets Manager 中用它来查看密钥的详细信息。

查看有关 Amazon Redshift Serverless 命名空间的密钥的详细信息

使用 Amazon Redshift 控制台查看无服务器命名空间的密钥的 Amazon 资源名称(ARN),步骤如下:

  1. 登录 Amazon Web Services Management Console 并打开 Amazon Redshift 控制台。

  2. 预置集群控制面板中,选择页面右上角的转到无服务器

  3. 无服务器控制面板中,滚动到命名空间/工作组窗格,然后选择要查看其密钥的命名空间。

  4. 一般信息窗格中,在管理员凭证 ARN 下查看密钥的 ARN。此 ARN 是密钥的标识符,您可以在 Amazon Secrets Manager 中用它来查看密钥的详细信息。

为数据库连接凭证创建密钥

您可以创建 Secrets Manager 密钥来存储用于连接到 Amazon Redshift 预置集群或 Redshift Serverless 命名空间和工作组的凭证。

创建用于连接到预置集群中的数据库的密钥
  1. 打开 Secrets Manager 控制台(https://console.aws.amazon.com/secretsmanager/)。

  2. 选择 存储新密钥

  3. 选择 Amazon Redshift 集群的凭证

    输入以下信息:

    • 用户名称

    • 密码

    • 加密密钥

    选择要为其创建密钥凭证的集群。

  4. 选择下一步,进入下一个屏幕。

  5. 添加一个以字符串“Redshift”开头的标签键。

  6. 继续通过多个屏幕输入有关密钥的信息,直到您存储更改。

确认出现一条消息,说明已成功存储密钥。您也可以在 Secrets Manager 控制台中查看密钥。您可以使用该密钥,在 Amazon Redshift 控制台和 Amazon Redshift 查询编辑器 v2 中通过 Amazon Secrets Manager 连接方法连接到集群中的数据库。该密钥的标签键必须以字符串“Redshift”开头,才能在查询编辑器 v2 Web 应用程序中列出该密钥。

在 Redshift Serverless 工作组中创建用于连接数据库的密钥
  1. 打开 Redshift Serverless 控制台。

  2. 导航到命名空间配置

  3. 选择要为其创建密钥凭证的命名空间。

  4. 打开操作编辑管理员凭证

  5. 对于管理员密码,请选择在 Amazon Secrets Manager 中管理管理员凭证

  6. 选择保存更改以保存您的更改。

确认出现一条消息,说明已成功更改密码。您也可以在 Secrets Manager 控制台中查看密钥。您可以使用该密钥,在 Redshift Serverless 控制台和 Amazon Redshift 查询编辑器 v2 中通过 Amazon Secrets Manager 连接方法连接到工作组中的数据库。该密钥的标签键必须以字符串“Redshift”开头,才能在查询编辑器 v2 Web 应用程序中列出该密钥。

将 Amazon Secrets Manager 与 Amazon Redshift 配合使用时的注意事项

使用 Amazon Secrets Manager 管理您的预置集群或无服务器命名空间的管理员凭证时,请注意以下几点:

  • 当您暂停某个集群而集群的管理员凭证由 Amazon Secrets Manager 管理时,您集群的密钥不会被删除,并且系统将继续向您收取该密钥的费用。只有在您删除集群时才会删除密钥。

  • 如果您的集群在 Amazon Redshift 尝试轮换其上附加的密钥时处于暂停状态,则轮换将失败。在这种情况下,Amazon Redshift 会停止自动轮换,即使在您恢复集群后也不会尝试再次轮换。您必须使用 secretsmanager:RotateSecret API 调用重新启动自动轮换计划,才能让 Amazon Secrets Manager 继续自动轮换您的密钥。

  • 如果在 Amazon Redshift 尝试轮换其上附加的密钥时,您的无服务器命名空间没有关联工作组,则轮换将失败并且不会尝试再次轮换,即使您关联了工作组也是如此。您必须使用 secretsmanager:RotateSecret API 调用重新启动自动轮换计划,才能让 Amazon Secrets Manager 继续自动轮换您的密钥。