![](/img/trans.png)
[英]Terraform AWS IAM Role “inline_policy.0.policy” contains an invalid JSON policy using ${file xyz} and jsonencode
[英]Using aws:ResourceTag in conditions on an IAM policy for lambda functions does not work
我需要分配给开发人员的角色才能读取具有特定标签的 lambda 函数。
为此,我在所有资源上分配了以下标签:
标签 | 价值 |
---|---|
团队 | 开发人员、devops 等... |
环境 | 开发、STG、产品 |
团队标签可以有多个团队,以空格分隔,因为多个团队可以拥有同一资源。
team: developers
team: developers devops finance
根据显示可以通过标签授予访问权限的 AWS 文档(尽管有部分支持,因为有些操作不允许这样做),我为分配给开发人员的 IAM 角色创建了以下策略,包括标签的条件:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowReadingFunctionsByTags",
"Effect": "Allow",
"Action": [
"lambda:ListTags",
"lambda:GetFunction"
],
"Resource": "*",
"Condition": {
"StringLike": { "aws:ResourceTag/team": "*developers*" },
"StringEquals": { "aws:ResourceTag/environment": [ "dev" , "stg" ] }
}
},
{
"Sid": "ListAllFunctions",
"Effect": "Allow",
"Action": [
"lambda:ListFunctions",
"lambda:GetAccountSettings"
],
"Resource": "*"
}
]
}
最后,为了对其进行测试,我承担了在 AWS 控制台上分配策略的角色。
我期待我可以看到 function 没有错误,但是,显示以下错误:
User: arn:aws:sts::[REDACTED]:assumed-role/lambda_role/[REDACTED] is not authorized to perform: lambda:GetFunction on resource: arn:aws:lambda:eu-central-1:[REDACTED]:function:[LAMBDA NAME] because no identity-based policy allows the lambda:GetFunction action
我还尝试了以下内容:
arn:aws:lambda:*:*:function:*
作为资源选择器:不工作。此外,IAM 策略模拟器根据输入显示以下内容。
该政策有什么问题,我该如何进一步调试它?
在我们与 AWS 支持人员交谈后,他们发现有一个关于使用旧帐户禁用的标签过滤的功能,以防止破坏。 此功能块未在新帐户上设置。
要解决此问题,您需要联系 AWS Support。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.