如何为IAM用户组设置策略?



我是 AWS 的新手。我有一个 AWS CodeArtifact 存储库,我想使用该存储库的 IAM 用户组创建存储库策略。

我的存储库策略使用 IAM 用户如下所示。

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::****:user/*********"
},
"Action": [
"codeartifact:DescribePackageVersion",
"codeartifact:DescribeRepository",
"codeartifact:GetPackageVersionReadme",
"codeartifact:GetRepositoryEndpoint",
"codeartifact:ListPackages",
"codeartifact:ListPackageVersions",
"codeartifact:ListPackageVersionAssets",
"codeartifact:ListPackageVersionDependencies",
"codeartifact:ReadFromRepository"
],
"Resource": "*"
}
]
}

如何为用户组执行此操作?

我试图像我对组的IAM用户所做的那样做,但似乎有一些错误。 它看起来像这样

{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::*****:group/*********"
},
"Action": [
"codeartifact:DescribePackageVersion",
"codeartifact:DescribeRepository",
"codeartifact:GetPackageVersionReadme",
"codeartifact:GetRepositoryEndpoint",
"codeartifact:ListPackages",
"codeartifact:ListPackageVersions",
"codeartifact:ListPackageVersionAssets",
"codeartifact:ListPackageVersionDependencies",
"codeartifact:ReadFromRepository"
],
"Resource": "*"
}
]
}

不幸的是,你不能这样做

"Principal": {
"AWS": "arn:aws:iam::*****:group/*********"
},

IAM 组不能用作原则。通常,当您具有AWS类型原则时,您仅限于 IAM角色IAM 用户

一般来说(文档(:

您可以在策略中指定以下任何委托人

AWS account and root user
IAM users
Federated users (using web identity or SAML federation)
IAM roles
Assumed-role sessions
AWS services
Anonymous users (not recommended)

因此,您的 AWS CodeArtifact 存储库的权限可能与IAM 角色相关联。您的群组成员将具有该角色的sts:AssumeRole权限。这样,他们可以承担角色,并且该角色可以用作策略中的原则。

IAM 组不是委托人,因此很遗憾,您无法在策略中将这些组用作参考。

您只能使用 IAM用户IAM 角色

AWS 委托人必须是调用资源(尝试通过 API 访问此服务的资源(,IAM 组构造是应用于用户以改进策略管理的组织单位。

唯一的建议(根据任何其他资源策略(是为此组创建一个可由组中的任何用户代入的角色。然后,将主体更新为此角色,而不是列出所有组。如果这不适用于您的解决方案,则需要列出所有 IAM 用户。

如果您创建角色,则可以通过控制台、命令行甚至 SDK 代入该角色

最新更新