AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门。
本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
授予轮换函数访问单独控制密钥的权限
在使用控制台或 AWS CLI 命令通过提供的 AWS Serverless Application Repository 模板创建 Lambda 轮换函数时,附带到函数角色的默认策略控制函数操作。默认情况下,该策略仅 为将该 Lambda 函数配置为密钥轮换函数的密钥授予访问权限。
如果密钥中的凭证不允许用户在受保护数据库或服务上更改其密码的权限,则您需要在轮换期间使用一组具有提升权限的单独凭证(超级用户)以更改该密钥。Secrets Manager 将超级用户凭证存储在单独的“主”密钥中。然后,在您轮换密钥时,Lambda 轮换函数使用主凭证登录到数据库或服务以更改或更新密钥凭证。如果您选择实施该策略,则必须在附加到该函数的角色策略中添加一个额外的语句,以便授予该主密钥以及主密钥的访问权限。
如果使用控制台通过具有主密钥的策略配置轮换,您可以在为密钥配置轮换时选择主密钥。
您必须具有控制密钥的 GetSecretValue 权限才能在控制台中选择该密钥。
在控制台中配置轮换后,您必须手动执行以下步骤,以便为 Lambda 函数授予主密钥的访问权限。
为 Lambda 轮换函数授予对主密钥的访问权限
请按照以下选项卡之一中的步骤进行操作:
- Using the console
-
-
在启用轮换的情况下完成密钥创建或编辑密钥以启用轮换时,控制台将显示类似于以下内容的消息:
Your secret MyNewSecret
has been successfully stored [and secret rotation is enabled].
To finish configuring rotation, you need to grant the role MyLambdaFunctionRole
permission to retrieve the secret <ARN of master secret>
.
-
将消息中的主密钥 ARN 复制到剪贴板中。您将在后面的步骤中用到它。
-
上述消息中的角色名称提供了指向 IAM 控制台的链接,并为您直接导航到该角色。请选择该链接。
-
在 Permissions (权限) 选项卡上,可以有一个或两个内联策略。Secrets Manager 将一个内联策略命名为 SecretsManager<Name of
Template>
0
。 该模板包含在轮换函数和受保护服务均在 VPC 中运行且无法直接从 Internet 访问时所需的 EC2 相关权限。另一个名为 SecretsManager<Name of
Template>
1
的模板包含允许轮换函数调用 Secrets Manager 操作的权限。选择策略左侧的展开箭头并检查权限以打开策略(以“1”结尾的策略)。
-
选择编辑策略,然后执行以下某个选项卡中的步骤:
Using the IAM Visual EditorUsing the JSON editor
- Using the IAM Visual Editor
-
在可视化编辑器选项卡上,选择添加额外的权限,然后设置以下值:
-
对于服务,请选择 Secrets Manager。
-
对于 Actions (操作),选择 GetSecretValue。
-
对于资源,请选择密钥资源类型条目旁边的添加 ARN。
-
在添加 ARN 对话框中,粘贴您以前复制的主密钥的 ARN。
- Using the JSON editor
-
在 JSON 选项卡上,检查脚本顶部。在第 3 行 ("Statement": [
) 和第 4 行 ({
) 之间,输入以下行:
{
"Action": "secretsmanager:GetSecretValue",
"Resource": "arn:aws-cn:secretsmanager:region
:123456789012
:secret:MyDatabaseMasterSecret
",
"Effect": "Allow"
},
-
在编辑完策略后,选择查看策略,然后选择保存更改。
-
您现在可以关闭 IAM 控制台并返回到 Secrets Manager 控制台。