首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >λ旋转函数中的AWS SecretsManager list_secret_version_ids返回AccessDeniedException

λ旋转函数中的AWS SecretsManager list_secret_version_ids返回AccessDeniedException
EN

Stack Overflow用户
提问于 2020-10-13 10:47:18
回答 1查看 48关注 0票数 0

我正在编写一个自定义的lambda函数来实现在SecretsManager中使用的通用旋转密钥算法。

python lambda函数在我的pycharm IDE中本地运行时工作得很好,然而,当我将它粘贴到lambda控制台并部署它时,在SecretsManager中执行“立即旋转秘密”时,我得到了一个AccessDeniedException。有问题的代码是:

代码语言:javascript
复制
 resp = service_client.list_secret_version_ids(SecretId=arn, IncludeDeprecated=True)

登录的用户位于附加了AdministratorAccess策略的组中。我还添加了kicks的SecretsManagerReadWrite策略。

我打印了一条错误消息,其中包含密钥的arn,并且它是正确的。这段代码是在“正常”代码完成后从finishSecret方法中调用的,所以这个秘密确实旋转得很好。然而,我添加了自定义代码,以确保我保留版本2年(通过分配版本阶段,以便SM不会删除它们)。为此,我需要list-secret-version-ids方法。

当从SecretsManager调用此函数时,是否有某种限制?

有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2020-10-16 06:01:14

我解决了这个问题。显然,当我创建lambda函数时,分配给它的默认IAM角色不包括运行ListSecretversionIds方法的权限。我遵循了AWS SecretsManager用户指南(从第84页开始)中标题为“使用AWS无服务器应用程序存储库模板创建Lambda旋转函数”的部分。

因此,要添加权限,请执行以下操作:

代码语言:javascript
复制
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选项卡上的交互式方法。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64327761

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档