AWS secretsmanager、lambda、即使有管理员权限也拒绝访问

问题描述

我在配置 AWS Lambda 以访问密钥时遇到困难。我做了很多次,所有现有资源都可以正常工作,但现在新的不想。

堆栈: 我在 secretsmanager 中有一个秘密和一个 lambda(在 vpc 中)

我想要的是:从 lambda 中读取秘密。

lambda 的角色具有以下策略:

    "Statement": [
        {
            "Action": [
                "secretsmanager:GetSecretValue"
            ],"Resource": "arn:aws:secretsmanager:us-east-1:xxxxxxxxx:secret:xxxxxxxxxxxx","Effect": "Allow"
        }
    ]
}

但即使我为这个角色授予完全管理员权限,我也不能从 lambda 读取机密。我收到以下错误消息:

User: arn:aws:sts::xxxxxxxxx:assumed-role/xxxxxxx/yyyyyyyy is not authorized to perform: secretsmanager:GetSecretValue on resource: arn:aws:secretsmanager:us-east-1:xxxxxxxxx:secret:xxxxxxxxxxxx

我有其他可用的 lambda,但令人恐惧的是,重新部署我的 cloudformation 堆栈可能会因此破坏整个应用程序。

我认为 AWS 方面发生了一些变化,现有资源被更改为兼容,但现在我无法访问任何新的或已经存在的秘密,即使我可以在 lambda 配置中看到我有权限。

有人知道缺少什么吗?谢谢!

解决方法

结果我错过了一个要检查的地方。当我深入挖掘时,我发现这整个事情只有在 Lambda 绑定到 VPC 时才会发生,但删除 VPC 配置使其工作。

对我来说,缺少的部分是 secretsmanager 的端点策略(允许我从 VPC 访问 secretsmanager)