本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用设置自动旋转 Amazon CLI
本教程介绍如何使用通过 Lambda 函数进行轮换进行设置 Amazon CLI。轮换密钥时,会同时更新密钥以及拥有密钥的数据库或服务中的凭证。
您也可以使用控制台设置轮换。有关数据库密钥的信息,请参阅 自动轮换数据库密钥(控制台)。有关所有其他类型的密钥,请参阅 自动轮换非数据库密钥(控制台)。
要使用设置轮换 Amazon CLI,如果您要轮换数据库密钥,则首先需要选择轮换策略。如果选择 alternating users strategy(交替用户策略),您必须存储一个单独密钥,其中包含数据库超级用户凭证。接下来,编写轮换函数代码。Secrets Manager 会提供模板,您可以基于该模板创建函数。然后,使用代码创建 Lambda 函数,并为 Lambda 函数和 Lambda 执行角色设置权限。下一步是确保 Lambda 函数可以通过网络访问 Secrets Manager 和数据库或服务。最后,配置密钥以进行轮换。
数据库密钥的先决条件:选择轮换策略
有关 Secrets Manager 提供的策略的信息,请参阅 Lambda 函数轮换策略。
选项 1:单用户策略
如果选择单用户策略,则可以继续执行步骤 1。
选项 2:交替用户策略
如果选择交替用户策略,则必须:
-
创建一个密钥并在其中存储数据库超级用户凭证。您需要一个包含超级用户凭证的密钥,因为交替用户轮换会克隆第一个用户,而大多数用户没有该权限。
-
将ARN超级用户密钥添加到原始密钥中。有关更多信息,请参阅 Amazon Secrets Manager 密钥的 JSON 结构 。
请注意,Amazon RDS Proxy 不支持交替用户策略。
步骤 1:编写轮换函数代码
要轮换密钥,您需要轮换函数。轮换函数是 Secrets Manager 为轮换密钥而调用的 Lambda 函数。有关更多信息,请参阅 通过 Lambda 函数进行轮换。在此步骤中,您将编写用于更新密钥以及该密钥所针对的服务或数据库的代码。
Secrets Manager 为亚马逊RDS、亚马逊 Aurora、亚马逊 Redshift 和亚马逊 DocumentDB 数据库密钥提供了模板。轮换函数模板
编写轮换函数代码
-
请执行以下操作之一:
查看轮换函数模板列表。如果有与您的服务和轮换策略匹配的模板,请复制代码。
对于其他类型的密钥,请编写您自己的轮换函数。有关说明,请参阅 Lambda 轮换函数。
将ZIP文件
my-function.zip
连同所有必需的依赖项一起保存在文件中。
第 2 步:创建 Lambda 函数
在此步骤中,您将使用在步骤 1 中创建ZIP的文件创建 Lambda 函数。您还将设置 Lambda 执行角色,即调用函数时 Lambda 代入的角色。
创建 Lambda 轮换函数和执行角色
为 Lambda 执行角色创建信任策略并将其另存为文件。JSON有关示例和更多信息,请参阅 适用于 Amazon Secrets Manager 的 Lambda 轮换函数执行角色权限。该策略必须:
允许角色对密钥调用 Secrets Manager 操作。
允许角色调用密钥所针对的服务,例如创建新密码。
-
通过调用
iam create-role
来创建 Lambda 执行角色并应用在上一步中创建的信任策略。aws iam create-role \ --role-name
rotation-lambda-role
\ --assume-role-policy-document file://trust-policy.json
-
通过调用从ZIP文件创建 Lambda 函数。
lambda create-function
aws lambda create-function \ --function-name my-rotation-function \ --runtime python3.7 \ --zip-file fileb://
my-function.zip
\ --handler .handler \ --role arn:aws:iam::123456789012
:role/service-role/rotation-lambda-role
-
在 Lambda 函数上设置资源策略,以允许 Secrets Manager 通过调用
lambda add-permission
来调用该资源策略。aws lambda add-permission \ --function-name
my-rotation-function
\ --action lambda:InvokeFunction \ --statement-id SecretsManager \ --principal secretsmanager.amazonaws.com \ --source-account123456789012
步骤 3:设置网络访问
有关更多信息,请参阅 Lambda 轮换函数的网络访问。
步骤 4:配置要轮换的密钥
要为密钥开启自动轮换功能,请调用 rotate-secret
。您可以使用 cron()
或 rate()
计划表达式设置轮换计划,也可以设置轮换时段持续时间。有关更多信息,请参阅 轮换计划。
aws secretsmanager rotate-secret \ --secret-id MySecret \ --rotation-lambda-arn arn:aws:lambda:
Region
:123456789012
:function:my-rotation-function
\ --rotation-rules "{\"ScheduleExpression\": \"cron(0 16 1,15 * ? *)
\", \"Duration\": \"2h
\"}"
后续步骤
请参阅 排除 Amazon Secrets Manager 轮换故障。