繁体   English   中英

AWS 资源策略中的条件不允许 lambda 访问 Secrets Manager Secret

[英]Condition in AWS resource policy not allowing lambda to access Secrets Manager Secret

我对 Secrets Manager 密钥有以下资源策略

{
  "Version" : "2012-10-17",
  "Statement" : [ {
    "Sid" : "rp1",
    "Effect" : "Allow",
    "Principal" : {
      "AWS" : ["*"]
    },
    "Action" : [ "secretsmanager:UpdateSecret", "secretsmanager:GetSecretValue" ],
    "Resource" : "arn:aws:secretsmanager:us-east-1:1111111111111111:secret:my-secret-VH7Qgf",
    "Condition" : {
      "ArnLike" : {
        "aws:PrincipalArn" : "arn:aws:iam::1111111111111111:role/my-role*"
      }
    }
  } ]
}

我的 lambda 具有以下执行者角色 arn; arn:aws:iam::1111111111111111:role/my-role-foo

但是它的执行失败了:

"errorMessage": "An error occurred (AccessDeniedException) when calling the GetSecretValue operation: User: arn:aws:sts::1111111111111111:assumed-role/my-secret/my-lambda is not authorized to perform: secretsmanager:GetSecretValue on resource: my-secret because no identity-based policy allows the secretsmanager:GetSecretValue action",

这是为什么?

AWS 资源策略无法授予对附加资源的权限。

因此,即使您在资源策略中允许“操作”,也不意味着尝试访问的资源(使用者)具有特权。

要使资源(消费者)具有访问权限,它需要通过附加到它的 AWS IAM 角色授予的权限。

因此,您需要将secretsmanager:GetSecretValue作为附加到 AWS Lambda function 的 AWS IAM 角色arn:aws:iam::1111111111111111:role/my-role-foo的一部分。

我希望它有帮助

虽然不是 100% 确定,但我认为这受到可应用于 Secrets Manager 的Condition语句的限制。

文档表明可以应用StringLikeArnLike

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM