AWS CodeArtifact 权限参考
AWS CodeArtifact 资源和操作
在 AWS CodeArtifact 中,主要资源是域。在策略中,您可以使用 Amazon 资源名称 (ARN) 标识策略应用到的资源。存储库也是资源,且具有相关联的 ARN。有关更多信息,请参阅《Amazon Web Services 一般参考》中的 Amazon 资源名称 (ARN)。
| 资源类型 | ARN 格式 |
|---|---|
| 域 |
|
| 存储库 |
|
| 程序包组 |
|
| 带有命名空间的程序包 |
|
| 不带命名空间的程序包 |
|
|
所有 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/*" ]
注意
许多 AWS 服务将 ARN 中的冒号 (:) 或正斜杠 (/) 视为同一个字符。不过,CodeArtifact 在资源模式和规则中使用精确匹配。请务必在创建事件模式时使用正确的字符,以使其与资源中的 ARN 语法匹配。
AWS CodeArtifact API 操作和权限
在设置访问控制以及编写可附加到 IAM 身份的权限策略(基于身份的策略)时,您可以将下表作为参考。
您可以在 AWS CodeArtifact 策略中使用 AWS 范围的条件键来表示条件。有关更多信息,请参阅《IAM 用户指南》中的 IAM JSON 策略元素参考。
请在策略的 Action 字段中指定这些操作。要指定操作,请在 API 操作名称之前使用 codeartifact: 前缀(例如,codeartifact:CreateDomain 和 codeartifact:AssociateExternalConnection)。要在单个语句中指定多项操作,请使用逗号将它们隔开(例如,"Action": [
"codeartifact:CreateDomain", "codeartifact:AssociateExternalConnection" ])。
使用通配符
您可以在策略的 Resource 字段中指定带或不带通配符(*)的 ARN 作为资源值。您可以使用通配符指定多个操作或资源。例如,codeartifact:* 指定所有 CodeArtifact 操作,codeartifact:Describe* 指定以单词 Describe 开头的所有 CodeArtifact 操作。
| 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 |
更新存储库的描述或上游连接时是必需的。有关更多信息,请参阅修改存储库上游配置或《CodeArtifact API 指南》中的 UpdateRepository。
对存储库是必需的,因此可以将其作为上游存储库添加到下游存储库。 |
|
程序包组 ARN
注意
本节介绍程序包组 ARN 和模式编码如何提供信息。建议从控制台复制 ARN,或者使用 DescribePackageGroup API 而不是编码模式和构造 ARN 来获取 ARN。
IAM 策略使用通配符 * 来匹配多项 IAM 操作或多个资源。程序包组模式也使用 * 字符。为了更轻松地编写与单个程序包组匹配的 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 区分大小写,因此 * 必须编码为 %2a 而不是 %2A。