Amazon web services 无法使用iam传递角色:已传递代码生成的服务
我试图允许用户执行Amazon web services 无法使用iam传递角色:已传递代码生成的服务,amazon-web-services,amazon-iam,aws-codebuild,Amazon Web Services,Amazon Iam,Aws Codebuild,我试图允许用户执行codebuild:StartBuild,同时限制iam:PassRole仅将自定义codebuild角色传递给codebuild服务 固定策略从不限制iam:PassRole,甚至使用“资源”:“*”,有效地允许将任何角色传递给任何服务。这让我觉得有点马虎,但也许只是我 下面的策略是一个摘录–codebuild:StartBuild,codebuild:List*等都是允许的 {“版本”:“2012-10-17”, “声明”:[ {“效果”:“允许”, “操作”:“iam:P
codebuild:StartBuild
,同时限制iam:PassRole
仅将自定义codebuild角色传递给codebuild服务
固定策略从不限制iam:PassRole
,甚至使用“资源”:“*”
,有效地允许将任何角色传递给任何服务。这让我觉得有点马虎,但也许只是我
下面的策略是一个摘录–codebuild:StartBuild
,codebuild:List*
等都是允许的
{“版本”:“2012-10-17”,
“声明”:[
{“效果”:“允许”,
“操作”:“iam:PassRole”,
“资源”:“arn:aws:iam::*:角色/我的代码构建角色”,
“条件”:{
“线状”:{
“iam:PassedToService”:“*
}
}
}
]
}
此策略使codebuild:StartBuild
返回错误:
User: arn:aws:sts::123456789:assumed-role/MyDevRole/me@example.com
is not authorized to perform: iam:PassRole on resource:
arn:aws:iam::123456789:role/my-codebuild-role
现在,删除策略的条件部分将使codebuild:StartBuild
成功。
CloudTrail日志的状态完全相同,没有提供任何附加信息,无论是在该特定事件中,还是在该事件之前或之后的事件中
我还尝试了条件
匹配的变体,包括:指定codebuild.amazonaws.com
作为服务;指定codebuild.eu-west-1.amazonaws.com
作为服务;同上,使用StringEquals
;指定所有AWS主体的列表,并使用for anyvalue:StringLike
*
上的StringLike
匹配失败是没有意义的,而删除条件
可以使其工作
我做错了什么?AWS没有告诉我什么?或者,AWS在这里做错了什么?我遇到了同样的问题,但当我在AssumePolicyDocument中插入条件时。我和你一样测试了很多条件,但没有一个有效。所以StringEqualsIfExists有效。这让我认为codebuild.amazonaws.com不在请求中。codebuild+CodeCommit不支持
PassedToService
条件: