限制 AWS IAM 角色只修改其他角色的特定 IAM 权限?
Limit AWS IAM role to modify only specific IAM permissions of other roles?
我们 CI/CD-runner 具有一组特定的 IAM 权限。我们希望允许该运行器修改特定 IAM 角色的特定权限,分别在特定边界内修改特定策略。它应该只被允许,例如,添加或删除资源 to/from 一组“athena:...”操作或修改“athena:...”操作中的权限 space。不得允许添加或修改该特定角色的“iam:...”权限。
是否可以通过仅允许对另一个角色的策略进行特定修改的方式来限制角色?
我会尝试重述以检查我是否理解正确。
您有一个 CICD 代理(我们称之为 CICDUser),它可以承担一些策略的角色,还有一个 Runner(我们称之为 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 文档。就第 2 点中的操作和资源而言,每次更新都将绑定到 RunnerBoundaries 文档。您可以使用 CICDPolicy 为 CICDUser 授予此权限,如下所示:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action":
"iam:CreatePolicyVersion"
],
"Resource": "arn:aws:iam::012345678910:policy/RunnerPolicy"
}
]
}
这样,CICDUser 将只能修改 RunnerPolicy。
您可以使用策略 + 边界 + 角色的组合以许多不同的方式做很多事情。关注 this documentation 了解更多详情。
免责声明:我在AWS工作,但这不是AWS的官方回答,这只是我的观点。我没有对这些示例进行全面测试,我报告的所有内容在使用前都必须经过正确验证。
我们 CI/CD-runner 具有一组特定的 IAM 权限。我们希望允许该运行器修改特定 IAM 角色的特定权限,分别在特定边界内修改特定策略。它应该只被允许,例如,添加或删除资源 to/from 一组“athena:...”操作或修改“athena:...”操作中的权限 space。不得允许添加或修改该特定角色的“iam:...”权限。
是否可以通过仅允许对另一个角色的策略进行特定修改的方式来限制角色?
我会尝试重述以检查我是否理解正确。
您有一个 CICD 代理(我们称之为 CICDUser),它可以承担一些策略的角色,还有一个 Runner(我们称之为 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 文档。就第 2 点中的操作和资源而言,每次更新都将绑定到 RunnerBoundaries 文档。您可以使用 CICDPolicy 为 CICDUser 授予此权限,如下所示:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action":
"iam:CreatePolicyVersion"
],
"Resource": "arn:aws:iam::012345678910:policy/RunnerPolicy"
}
]
}
这样,CICDUser 将只能修改 RunnerPolicy。
您可以使用策略 + 边界 + 角色的组合以许多不同的方式做很多事情。关注 this documentation 了解更多详情。
免责声明:我在AWS工作,但这不是AWS的官方回答,这只是我的观点。我没有对这些示例进行全面测试,我报告的所有内容在使用前都必须经过正确验证。