我在账户 A 中有一个具有管理员权限的 IAM 用户,并且arn:aws:iam::aws:policy/AWSCodeArtifactReadOnlyAccess
附加了很好的措施。
来自账户 A 的 iam 用户的 arn 为arn:aws:iam::***:user/test-user
。
账户 B 有一个 CodeArtifact 存储库,其 arn 为arn:aws:codeartifact:***:***:domain/test-repo
. 这个 repo 的资源策略是
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::***:user/test-user"
},
"Action": "codeartifact:*",
"Resource": "*"
}
]
}
运行 AWS CLI 命令时,我使用来自账户 A 的 IAM 用户的访问密钥。以下命令有效:
$ aws codeartifact get-repository-endpoint --domain test-repo --domain-owner *** --query repositoryEndpoint --output text --repository test --format pypi
结果是
https://test-repo-***.d.codeartifact.***.amazonaws.com/pypi/test/
这表明我的资源策略正在运行(将 翻转Effect
为Deny
成功会使上述命令失败)。
但是,以下命令
$ aws codeartifact get-authorization-token --domain test-repo --domain-owner *** --query authorizationToken --output text
失败了
调用 GetAuthorizationToken 操作时发生错误 (AccessDeniedException):用户:arn:aws:iam::: user/test-user 无权执行:codeartifact:GetAuthorizationToken on resource:arn:aws:codeartifact:: ***:域/测试仓库
我相信我已经关注了这里的文档:
- https://docs.aws.amazon.com/codeartifact/latest/ug/repo-policies.html#granting-read-access-to-specific-principals
- https://docs.aws.amazon.com/codeartifact/latest/ug/auth-and-access-control-iam-identity-based-access-control.html
我想使用指定的委托人来完成此任务,并且不想承担任何角色,因为它会使我的 CI/CD 管道复杂化