我们有一个具有一定IAM权限的CI/CD运行程序。我们希望允许该运行程序修改特定IAM角色的特定权限,分别在特定边界内修改特定策略。它只应被允许,例如,增加或移除一组“雅典娜:.”中的资源。操作或修改“athena:.”中的权限行动空间。不得允许添加或修改“iam:.”该特定角色的权限。
是否有可能以只允许对另一个角色的策略进行具体修改的方式来限制一个角色?
发布于 2022-05-04 16:31:13
我将尝试重述,以检查我是否正确理解。
您有一个CICD代理(让我们称它为CICDUser),它可以在某些策略中扮演一个角色,还有一个运行器(我们称之为RunnerUser),它在AWS平台上执行操作。
您希望允许CICDUser在预定义的边界内(在操作和资源方面)修改RunnerUser的IAM权限。
为此,我建议采取以下办法:
步骤1 -创建Runner的策略边界(让我们称之为RunnerBoundaries)并将其附加到RunnerUser。例如:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "athena:*",
"Resource": [
"arn:aws:athena:eu-central-1:012345678910:datacatalog/catalog-name-1",
"arn:aws:athena:eu-central-1:012345678910:datacatalog/catalog-name-2"
]
}
]
}在本例中,您只允许RunnerUser对catalog-name-1和catalog-name-2操作拥有最大权限(但实际允许的操作将由以下策略设置)。
步骤2 -为实际权限创建Runner的策略(让我们称之为RunnerPolicy),并将其附加到RunnerUser。即使您在这里授予管理员对RunnerUser的访问权限,RunnerBoundaries上的所有内容也将受到限制。
步骤3 -允许CICDUser更新(仅) RunnerPolicy文档。在操作和资源方面,每个更新都将被限制在RunnerBoundaries文档上,如第2点所示。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action":
"iam:CreatePolicyVersion"
],
"Resource": "arn:aws:iam::012345678910:policy/RunnerPolicy"
}
]
}这样,CICDUser将只能修改RunnerPolicy。
使用策略+边界+角色的组合,您可以以许多不同的方式做很多事情。请跟随这份文件了解更多细节。
免责声明:我在AWS工作,但这不是一个正式的AWS回答,这只是我的观点。我没有对这个例子进行充分的测试,在使用之前,我报告的所有内容都必须经过正确的验证。
https://stackoverflow.com/questions/72112866
复制相似问题