本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
AWS CodeArtifact 权限参考
AWS CodeArtifact 资源和运营
在中 AWS CodeArtifact,主要资源是一个域。在策略中,您可以使用 Amazon 资源名称 (ARN) 标识策略应用到的资源。存储库也是资源,且具有相关联的 ARN。有关更多信息,请参阅《Amazon Web Services 一般参考》中的 Amazon 资源名称 (ARN)。
资源类型 | ARN 格式 |
---|---|
域 |
|
存储库 |
|
Package 组 |
|
带有命名空间的程序包 |
|
不带命名空间的程序包 |
|
所有 CodeArtifact 资源 |
|
指定 AWS 区域中指定账户拥有的所有 CodeArtifact 资源 |
|
您指定哪个资源 ARN 取决于您要控制访问权限的一个或多个操作。
您可以使用其 ARN 在语句中指定特定域 (myDomain
),如下所示。
"Resource": "arn:aws:codeartifact:
us-east-2
:123456789012
:domain/myDomain
"
您可以使用特定存储库 (myRepo
) 的 ARN 在语句中指定该存储库,如下所示。
"Resource": "arn:aws:codeartifact:
us-east-2
:123456789012
:domain/myDomain
/myRepo
"
要在单个语句中指定多个资源,请使用逗号分隔其 ARN。以下语句适用于特定域中的所有程序包和存储库。
"Resource": [ "arn:aws:codeartifact:
us-east-2
:123456789012
:domain/myDomain
", "arn:aws:codeartifact:us-east-2
:123456789012
:repository/myDomain
/*", "arn:aws:codeartifact:us-east-2
:123456789012
:package/myDomain
/*" ]
注意
在 ARN 中,许多 AWS 服务将冒号 (:) 或正斜杠 (/) 视为同一个字符。但是,在资源模式和规则中 CodeArtifact 使用精确匹配。请务必在创建事件模式时使用正确的字符,以使其与资源中的 ARN 语法匹配。
AWS CodeArtifact API 操作和权限
在设置访问控制以及编写可附加到 IAM 身份的权限策略(基于身份的策略)时,您可以将下表作为参考。
您可以在 AWS CodeArtifact 策略中使用 AWS-wide 条件键来表达条件。有关列表,请参阅 IAM 用户指南中的 IAM JSON 策略元素参考。
请在策略的 Action
字段中指定这些操作。要指定操作,请在 API 操作名称之前使用 codeartifact:
前缀(例如,codeartifact:CreateDomain
和 codeartifact:AssociateExternalConnection
)。要在单个语句中指定多项操作,请使用逗号将它们隔开(例如,"Action": [
"codeartifact:CreateDomain", "codeartifact:AssociateExternalConnection" ]
)。
使用通配符
您可以在策略的 Resource
字段中指定带或不带通配符(*)的 ARN 作为资源值。您可以使用通配符指定多个操作或资源。例如,codeartifact:*
指定所有 CodeArtifact 动作并codeartifact:Describe*
指定以单词开头的所有 CodeArtifact 动作Describe
。
AWS CodeArtifact API 操作 | 所需权限(API 操作) | 资源 |
---|---|---|
AssociateExternalConnection |
向存储库添加外部连接所必需。 |
|
CopyPackageVersions |
将程序包版本从源存储库复制到目标存储库:
对目标存储库是必需的。
对源存储库是必需的。 |
|
CreateDomain |
创建域时是必需的。
指定非默认 |
|
CreatePackageGroup |
创建包组所必需的。 |
|
CreateRepository |
创建存储库时是必需的。
对存储库是必需的,因此可以将其作为上游存储库添加到下游存储库。 |
|
DeleteDomain |
删除域时是必需的。 |
|
DeleteDomainPermissionsPolicy |
删除域的资源策略时是必需的。 |
|
DeletePackage |
删除程序包时是必需的。 |
|
DeletePackageGroup |
删除包群组所必需的。 |
|
DeletePackageVersions |
删除程序包版本时是必需的。 |
|
DeleteRepository |
删除 存储库时是必需的。 |
|
DeleteRepositoryPermissionsPolicy |
删除存储库的资源策略时是必需的。 |
|
DescribeDomain |
获取有关域的信息时是必需的。 |
|
DescribePackage |
获取有关程序包的信息时是必需的。 |
|
DescribePackageGroup |
获取有关包群组的信息所必需的。 |
|
DescribePackageVersion |
获取有关程序包版本的信息时是必需的。 |
|
DescribeRepository |
获取有关存储库的信息时是必需的。 |
|
DisassociateExternalConnection |
从存储库删除外部连接时是必需的。 |
|
DisposePackageVersions |
处置程序包的版本时是必需的。 |
|
GetAssociatedPackageGroup |
获取包裹的关联包组所必需的。 |
|
GetAuthorizationToken |
获取访问存储库的临时授权令牌时是必需的。 |
|
GetDomainPermissionsPolicy |
获取域资源策略时是必需的。 |
|
GetPackageVersionAsset |
获取程序包版本中的资产时是必需的。 |
arn:aws:codeartifact: |
GetPackageVersionReadme |
获取程序包版本的自述文件时是必需的。 |
|
GetRepositoryEndpoint |
获取存储库端点时是必需的。 |
|
GetRepositoryPermissionsPolicy |
获取存储库资源策略时是必需的。 |
|
ListAssociatedPackages |
返回与包组关联的软件包列表所必需的。 |
|
ListDomains |
返回 AWS 账户中的域的分页列表时是必需的。 |
|
ListPackageGroups |
返回网域中软件包组的分页列表所必需的。 |
|
ListPackages |
返回存储库中的程序包的分页列表时是必需的。 |
|
ListPackageVersionAssets |
返回程序包版本中的资产的分页列表时是必需的。 |
|
ListPackageVersionDependencies |
返回程序包版本的依赖项的分页列表时是必需的。 |
|
ListPackageVersions |
返回存储库中的程序包版本的分页列表时是必需的。 |
|
ListRepositories |
返回 AWS 账户中的存储库的分页列表时是必需的。 |
|
ListRepositoriesInDomain |
返回域中的存储库的分页列表时是必需的。 |
|
ListSubPackageGroups |
需要返回包组的直接子包组列表。 |
|
ListTagsForResource |
列出指定资源的标签所必需的。 |
|
PublishPackageVersion |
将程序包版本发布到存储库时是必需的。 |
|
PutDomainPermissionsPolicy |
将资源策略添加到域时是必需的。 |
|
PutPackageMetadata |
将 Maven 程序包版本发布到存储库,或者在 npm 程序包版本中添加或删除 npm 标签时是必需的。 |
|
PutPackageOriginConfiguration |
更新程序包的源配置时是必需的。 |
|
PutRepositoryPermissionsPolicy |
将资源策略添加到存储库时是必需的。 |
|
ReadFromRepository |
使用程序包管理器客户端从存储库读取时是必需的。 |
|
TagResource |
标记资源时是必需的。 |
|
UntagResource |
从资源中删除标签时是必需的。 |
|
UpdatePackageGroup |
更新软件包组所必需的。 |
|
UpdatePackageGroupOriginConfiguration |
更新包组的原始配置所必需的。 |
|
UpdatePackageVersionsStatus |
更改程序包版本的状态时是必需的。 |
|
UpdateRepository |
更新存储库的描述或上游连接时是必需的。有关更多信息 UpdateRepository,请参阅 CodeArtifact API 指南中的修改存储库上游配置或。
对存储库是必需的,因此可以将其作为上游存储库添加到下游存储库。 |
|
Package 组 ARN
注意
本节介绍包组 ARN 和模式编码是如何提供信息的。建议从控制台复制 ARN,或者使用 DescribePackageGroup
API 而不是编码模式和构建 ARN 来获取 ARN。
IAM 策略使用通配符来匹配多个 IAM 操作或多个资源。*
Package 组模式也使用该*
字符。为了更轻松地编写与单个包组匹配的 IAM 策略,包组 ARN 格式使用包组模式的编码版本。
具体而言,包组 ARN 格式如下所示:
arn:aws:codeartifact:
region
:account-ID
:package-group/my_domain
/encoded_package_group_pattern
其中编码后的包组模式是包组模式,某些特殊字符替换为其百分比编码值。以下列表包含字符及其相应的百分比编码值:
*
:%2a
$
:%24
%
:%25
例如,域的根包组 (/*
) 的 ARN 将是:
arn:aws:codeartifact:
us-east-1
:111122223333
:package-group/my_domain
/%2a
请注意,列表中未包含的字符无法进行编码,而且 ARN 区分大小写,因此*
必须编码为 and not。%2a
%2A