如何解决跨账户访问 CodeArtifact 存储库
我在帐户 A 中有一个 IAM 用户,该用户具有管理员权限,并附加了 arn:aws:iam::aws:policy/AWSCodeArtifactReadOnlyAccess
。
帐户 A 中的 iam 用户的 arn 为 arn:aws:iam::***:user/test-user
。
账户 B 有一个 ARN 为 arn:aws:codeartifact:***:***:domain/test-repo
的 CodeArtifact 存储库。此 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 is notauthorized to perform: codeartifact:GetAuthorizationToken on resource: arn: aws:codeartifact::***:domain/test-repo
我相信我已经按照此处的文档进行操作:
- 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 管道复杂化
解决方法
根据 documentation,您还需要在访问策略中添加 "sts:GetServiceBearerToken"
访问权限。
调用 GetAuthorizationToken API 需要 codeartifact:GetAuthorizationToken 和 sts:GetServiceBearerToken 权限。
其次,在您的用户权限中,在您的访问策略中明确提及 codeartifact 资源,与您在资源策略中提及 IAM 用户相同。
例如
{
"Version": "2012-10-17","Statement": [
{
"Action": [
"codeartifact:*"
],"Effect": "Allow","Resource": "<insert cross account resource's IAM>"
},{
"Effect": "Allow","Action": "sts:GetServiceBearerToken","Resource": "<insert cross account resource's IAM>","Condition": {
"StringEquals": {
"sts:AWSServiceName": "codeartifact.amazonaws.com"
}
}
}
]
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。