自动轮换 Amazon RDS、Amazon DocumentDB 或 Amazon Redshift 密钥 - AWS Secrets Manager

自动轮换 Amazon RDS、Amazon DocumentDB 或 Amazon Redshift 密钥

Secrets Manager 为 Amazon RDS、Amazon DocumentDB 和 Amazon Redshift 密钥提供了完整的轮换模板。有关其他类型的密钥,请参阅 自动轮换密钥

适用于 Amazon RDS(Oracle 除外)和 Amazon DocumentDB 的轮换函数将自动使用安全套接字层 (SSL) 或传输层安全性 (TLS) 来连接到数据库(如果可用)。否则,他们将使用未加密的连接。

注意

如果您在 2021 年 12 月 20 日之前设置了自动密钥轮换,则您的轮换函数可能基于不支持 SSL/TLS 的较旧模板。请参阅确定您的轮换函数的创建时间。如果它是在 2021 年 12 月 20 日之前创建的,那么为了支持使用 SSL/TLS 的连接,您需要重新创建您的轮换函数。

编辑您的密钥,然后选择 Edit rotation(编辑轮换)。在对话框中,选择 Create a rotation function(创建轮换函数)来重新创建您的轮换函数。如果您对之前的轮换函数进行过自定义,则必须在新轮换函数中重做这些自定义。

自动轮换密钥的另一种方法是使用 AWS CloudFormation 创建密钥,然后包含 AWS::SecretsManager::RotationSchedule。请参阅在 AWS CloudFormation 中创建秘密

在开始之前,您需要:

  • 拥有 Amazon RDS、Amazon DocumentDB 或 Amazon Redshift 凭证的用户。

  • 轮换策略。请参阅轮换策略

  • 如果您将使用 交替用户轮换策略,您需要一个单独的密钥,其中包含可以更新轮换密钥凭据的凭据。

为 Amazon RDS、Amazon DocumentDB 或 Amazon Redshift 密钥(控制台)启用轮换

  1. 打开 Secrets Manager 控制台:https://console.aws.amazon.com/secretsmanager/

  2. 密钥列表页上,选择您的密钥。

  3. Secret details (密钥详细信息) 页上的 Rotation configuration (轮换配置) 部分中,选择 Edit rotation (编辑轮换)

  4. 编辑轮换配置对话框中,执行以下操作:

    1. 启用 Automatic rotation(自动轮换)。

    2. Rotation schedule(轮换时计划)下,通过执行以下操作之一以 UTC 时区输入您的计划:

      • 选择 Schedule expression builder(计划表达式生成器),以某种格式构建计划。Secrets Manager 会将您的计划存储为 rate()cron() 表达式。轮换时段将自动从午夜开始,除非您指定 Start time(开始时间)。

      • 选择 Schedule expression(计划表达式),然后执行以下操作之一:

        • 为您的计划输入 cron 表达式,例如,cron(0 21 L * ? *),它将在每月最后一天的晚上 9:00 UTC+0 轮换密钥。Secrets Manager 的 cron 表达式的分钟字段必须填写 0,因为 Secrets Manager 轮换时段将在整点开始。其年份字段必须填写 *,因为 Secrets Manager 不支持相隔一年以上的轮换计划。有关更多信息,请参阅 计划表达式

        • 为每日比率输入 rate 表达式,例如,rate(10 days),它将每 10 天轮换一次密钥。表达式必须包括 rate()。通过 rate 表达式,轮换时段将自动从午夜开始。

    3. (可选)对于 Window duration(时段持续时间),选择您希望 Secrets Manager 在其间轮换密钥的时段长度,例如 3h 表示三个小时的时段。时段不能包含下一个 UTC 日。如果您未指定 Window duration(时段持续时间),则轮换时段将自动在一天结束时结束。

    4. (可选)请选择 Rotate immediately when the secret is stored(在存储密钥时立即轮换),以在保存更改时轮换密钥。如果您清除该复选框,则第一次轮换将按照您设置的计划开始。

      如果您使用的是 交替用户轮换策略,之前版本的密钥中的凭据仍然有效,可用于访问数据库或服务。要满足合规性要求,您可能需要更频繁地轮换密钥。例如,如果最大凭证生命周期为 90 天,建议将轮换间隔设置为 44 天。这样,两个用户的凭据都将在 90 天内更新。

    5. Rotation function(轮换函数)下,执行以下操作:

      • 要让 Secrets Manager 根据 轮换函数模板 为您的密钥创建轮换函数,请选择新建 Lambda 函数,然后为新函数输入名称。Secrets Manager 将 "SecretsManager" 添加到您的函数名称的开头。

      • 要使用您或 Secrets Manager 已创建的旋转功能,请选择使用现有的 Lambda 函数. 如果轮换策略相同,则可以重复使用用于另一个密钥的轮换函数。在 Recommended VPC configurations(建议的 VPC 配置)下列出的轮换函数,与数据库具有相同的 VPC 和安全组,因此轮换函数无需任何更改即可调用数据库。

    6. 对于 Use separate credentials to rotate this secret(使用单独的凭证轮换此密钥),请执行以下操作之一:

要解决常见轮换问题的帮助,请参阅 AWS Secrets Manager 密钥轮换问题排查

AWS CLI

要启用轮换,请参阅 rotate-secret

要使 Secrets Manager 能够轮换密钥,您必须确保 JSON 符合数据库密钥的 JSON 结构。特别是,如果您需要使用 交替用户 策略,您的密钥必须包含超级用户密钥的 ARN。

您还需要一个能够轮换密钥的 Lambda 函数。您可以根据 Secrets Manager 提供的 Secrets Manager 轮换函数模板创建此函数。对于单用户,请选择适用于单用户轮换的模板。对于交替用户,请选择适用于交替用户轮换的模板。

启用自动轮换

  • 在 AWS CLI 中,以下命令会启用自动轮换。Secrets Manager 会立即轮换一次密钥,然后在每月 1 日和 15 日下午 4:00 至下午 6:00 之间轮换密钥。

    aws secretsmanager rotate-secret --secret-id MySecret --rotation-lambda-arn arn:aws:lambda:us-east-2:123456789012:function:SecretsManagerMyLambdaFunction-alt-users --rotation-rules "{\"ScheduleExpression\": \"cron(0 16 1,15 * ? *)\", \"Duration\": \"2h\"}"

AWS 开发工具包

要启用轮换,请使用 RotateSecret 操作。有关更多信息,请参阅 AWS 软件开发工具包