brn*_*o32 10 amazon-web-services amazon-iam aws-codeartifact
我在账户 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。该仓库的资源政策为
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::***:user/test-user"
},
"Action": "codeartifact:*",
"Resource": "*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
运行 AWS CLI 命令时,我使用账户 A 中 IAM 用户的访问密钥。以下命令有效:
$ aws codeartifact get-repository-endpoint --domain test-repo --domain-owner *** --query repositoryEndpoint --output text --repository test --format pypi
Run Code Online (Sandbox Code Playgroud)
结果是
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
Run Code Online (Sandbox Code Playgroud)
失败了
调用 GetAuthorizationToken 操作时发生错误 (AccessDeniedException):用户:arn:aws:iam:: : user/test-user 无权对资源执行:codeartifact:GetAuthorizationToken:arn:aws:codeartifact: :***:域/测试仓库
我相信我已经遵循了这里的文档:
我想通过指定的主体来完成此任务,并且不想承担角色,因为这会使我的 CI/CD 管道变得复杂
我几天来也遇到同样的问题,最后发现需要对存储库和 codeartifact 域应用一个策略。
此示例使用基于组织的策略,但任何主体都应该有效,唯一的其他重要部分是权限sts:GetServiceBearerToken
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ContributorPolicy",
"Effect": "Allow",
"Principal": "*",
"Action": [
"codeartifact:*",
"sts:GetServiceBearerToken"
],
"Resource": "*",
"Condition": {
"StringEquals": {
"aws:PrincipalOrgID": "o-xxxxxxxxxx"
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我们必须做一些事情:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<OTHER_AWS_ACCCOUNT_ID>:root"
},
"Action": "codeartifact:GetAuthorizationToken",
"Resource": "*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<OTHER_AWS_ACCCOUNT_ID>:root"
},
"Action": [
"codeartifact:GetRepositoryEndpoint",
"codeartifact:ReadFromRepository"
],
"Resource": "arn:aws:codeartifact:*:<CURRENT_AWS_ACCCOUNT_ID>:repository/<REPOSITORY_NAME>/*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"codeartifact:GetAuthorizationToken",
"codeartifact:GetRepositoryEndpoint",
"codeartifact:ReadFromRepository",
"sts:GetServiceBearerToken"
],
"Resource": "*"
}
]
}
Run Code Online (Sandbox Code Playgroud)
这解决了我们跨帐户 NPM 包运行 Angular 应用程序的问题。
| 归档时间: |
|
| 查看次数: |
11918 次 |
| 最近记录: |