我正在编写一个自定义的lambda函数来实现在SecretsManager中使用的通用旋转密钥算法。
python lambda函数在我的pycharm IDE中本地运行时工作得很好,然而,当我将它粘贴到lambda控制台并部署它时,在SecretsManager中执行“立即旋转秘密”时,我得到了一个AccessDeniedException。有问题的代码是:
resp = service_client.list_secret_version_ids(SecretId=arn, IncludeDeprecated=True)登录的用户位于附加了AdministratorAccess策略的组中。我还添加了kicks的SecretsManagerReadWrite策略。
我打印了一条错误消息,其中包含密钥的arn,并且它是正确的。这段代码是在“正常”代码完成后从finishSecret方法中调用的,所以这个秘密确实旋转得很好。然而,我添加了自定义代码,以确保我保留版本2年(通过分配版本阶段,以便SM不会删除它们)。为此,我需要list-secret-version-ids方法。
当从SecretsManager调用此函数时,是否有某种限制?
有什么想法吗?
发布于 2020-10-16 06:01:14
我解决了这个问题。显然,当我创建lambda函数时,分配给它的默认IAM角色不包括运行ListSecretversionIds方法的权限。我遵循了AWS SecretsManager用户指南(从第84页开始)中标题为“使用AWS无服务器应用程序存储库模板创建Lambda旋转函数”的部分。
因此,要添加权限,请执行以下操作:
1. Bring up the lambda function just created
2. Click the Permissions tab
3. Click the role that was assigned (at top of page)
4. On the Permissions tab (already displayed)
1. Click Show 2 more
2. Open SecretsManagerRotationTemplateRolePolicy1
3. Click [Edit Policy] button
4. Click [JSON]
5. Add "secretsmanager:ListSecretVersionIds” to the list of Actions allowed so it looks like:
"Action": [
"secretsmanager:DescribeSecret",
"secretsmanager:GetSecretValue",
"secretsmanager:PutSecretValue",
"secretsmanager:UpdateSecretVersionStage",
"secretsmanager:ListSecretVersionIds"
],
6. Click [Review...]
7. Click [Save Changes]或者,如果您不喜欢编辑JSON,则可以使用Visual Editor选项卡上的交互式方法。
https://stackoverflow.com/questions/64327761
复制相似问题