使用 AWS Secrets Manager 管理 Amazon Redshift 管理员密码
Amazon Redshift 可以与 AWS Secrets Manager 集成,以便使用加密密钥来生成和管理您的管理员凭证。使用 AWS Secrets Manager,您可以将管理员密码替换为 API 调用,以便在需要时以编程方式检索密钥。使用密钥而不是硬编码凭证可以降低这些凭证被公开或泄漏的风险。有关 AWS Secrets Manager 的更多信息,请参阅 AWS Secrets Manager 用户指南。
在执行以下操作之一时,您可以使用 AWS Secrets Manager 来指定由 Amazon Redshift 管理您的管理员密码:
-
创建预置集群或无服务器命名空间
-
编辑、更新或修改预置集群或无服务器命名空间的管理员凭证
-
从快照还原集群或无服务器命名空间
当您在 AWS Secrets Manager 中指定由 Amazon Redshift 来管理管理员密码时,Amazon Redshift 会生成密码并将其存储在 Secrets Manager 中。您可以直接在 AWS Secrets Manager 中访问密钥以检索管理员用户的凭证。(可选)如果您需要从其他 AWS 账户访问密钥,您可以指定客户管理的密钥来加密密钥。您也可以使用 AWS Secrets Manager 提供的 KMS 密钥。
Amazon Redshift 管理密钥的设置,默认情况下每 30 天轮换一次密钥。您可以随时手动轮换密钥。如果您删除管理 AWS Secrets Manager 中密钥的预置集群或无服务器命名空间,则该密钥及其关联的元数据也会被删除。
要使用密钥管理的凭证连接到集群或无服务器命名空间,您可以使用 Secrets Manager 控制台或 GetSecretValue
Secrets Manager API 调用,从 AWS Secrets Manager 检索密钥。有关更多信息,请参阅《AWS Secrets Manager 用户指南》中的从 AWS Secrets Manager 中检索密钥和使用 AWS Secrets Manager 密钥中的凭证连接到 SQL 数据库。
AWS Secrets Manager 集成所需的权限
用户必须拥有所需的权限才能执行与 AWS Secrets Manager 集成相关的操作。创建 IAM 策略,以便授予权限对所需的指定资源执行特定的 API 操作。然后,将这些策略附加到需要这些权限的 IAM 权限集或角色。有关更多信息,请参阅 Amazon Redshift 中的 Identity and Access Management。
指定 Amazon Redshift 管理 AWS 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 轮换管理员密码密钥时,AWS Secrets Manager 会更新现有密钥以包含新的管理员密码。Amazon Redshift 更改集群的管理员密码,使其与更新后的密钥中的密码相匹配。
您可以立即轮换密钥,而不必等待使用 AWS Secrets Manager 的计划轮换。有关轮换密钥的更多信息,请参阅《AWS Secrets Manager 用户指南》中的轮换 AWS Secrets Manager 密钥。
将 AWS Secrets Manager 与 Amazon Redshift 配合使用时的注意事项
使用 AWS Secrets Manager 管理您的预置集群或无服务器命名空间的管理员凭证时,请注意以下几点:
-
当您暂停某个集群而集群的管理员凭证由 AWS Secrets Manager 管理时,您集群的密钥不会被删除,并且系统将继续向您收取该密钥的费用。只有在您删除集群时才会删除密钥。
-
如果您的集群在 Amazon Redshift 尝试轮换其上附加的密钥时处于暂停状态,则轮换将失败。在这种情况下,Amazon Redshift 会停止自动轮换,即使在您恢复集群后也不会尝试再次轮换。您必须使用
secretsmanager:RotateSecret
API 调用重新启动自动轮换计划,才能让 AWS Secrets Manager 继续自动轮换您的密钥。 -
如果在 Amazon Redshift 尝试轮换其上附加的密钥时,您的无服务器命名空间没有关联工作组,则轮换将失败并且不会尝试再次轮换,即使您关联了工作组也是如此。您必须使用
secretsmanager:RotateSecret
API 调用重新启动自动轮换计划,才能让 AWS Secrets Manager 继续自动轮换您的密钥。