AWS CodeArtifact 权限参考 - CodeArtifact

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

AWS CodeArtifact 权限参考

AWS CodeArtifact 资源和运营

在中 AWS CodeArtifact,主要资源是一个域。在策略中,您可以使用 Amazon 资源名称 (ARN) 标识策略应用到的资源。存储库也是资源,且具有相关联的 ARN。有关更多信息,请参阅《Amazon Web Services 一般参考》中的 Amazon 资源名称 (ARN)

资源类型 ARN 格式

arn:aws:codeartifact:region-ID:account-ID:domain/my_domain

存储库

arn:aws:codeartifact:region-ID:account-ID:repository/my_domain/my_repo

Package 组

arn:aws:codeartifact:region-ID:account-ID:package-group/my_domain/encoded_package_group_pattern

带有命名空间的程序包

arn:aws:codeartifact:region-ID:account-ID:package/my_domain/my_repo/package-format/namespace/my_package

不带命名空间的程序包

arn:aws:codeartifact:region-ID:account-ID:package/my_domain/my_repo/package-format//my_package

所有 CodeArtifact 资源

arn:aws:codeartifact:*

指定 AWS 区域中指定账户拥有的所有 CodeArtifact 资源

arn:aws:codeartifact:region-ID:account-ID:*

您指定哪个资源 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:CreateDomaincodeartifact:AssociateExternalConnection)。要在单个语句中指定多项操作,请使用逗号将它们隔开(例如,"Action": [ "codeartifact:CreateDomain", "codeartifact:AssociateExternalConnection" ])。

使用通配符

您可以在策略的 Resource 字段中指定带或不带通配符(*)的 ARN 作为资源值。您可以使用通配符指定多个操作或资源。例如,codeartifact:*指定所有 CodeArtifact 动作并codeartifact:Describe*指定以单词开头的所有 CodeArtifact 动作Describe

CodeArtifact API 操作和操作所需的权限
AWS CodeArtifact API 操作 所需权限(API 操作) 资源
AssociateExternalConnection

codeartifact:AssociateExternalConnection

向存储库添加外部连接所必需。

arn:aws:codeartifact:region-ID:account-ID:repository/my_domain/my_repo

CopyPackageVersions

将程序包版本从源存储库复制到目标存储库:

codeartifact:CopyPackageVersions

对目标存储库是必需的。

codeartifact:ReadFromRepository

对源存储库是必需的。

arn:aws:codeartifact:region-ID:account-ID:repository/my_domain/my_repo

CreateDomain

codeartifact:CreateDomain

创建域时是必需的。

kms:DescribeKeykms:CreateGrant

指定非默认 encryptionKey 时,对提供的 KMS 密钥来说是必需的。

arn:aws:codeartifact:region-ID:account-ID:domain/my_domain

CreatePackageGroup

codeartifact:CreatePackageGroup

创建包组所必需的。

arn:aws:codeartifact:region-ID:account-ID:package-group/my_domain/encoded_package_group_pattern

CreateRepository

codeartifact:CreateRepository

创建存储库时是必需的。

codeartifact:AssociateWithDownstreamRepository

对存储库是必需的,因此可以将其作为上游存储库添加到下游存储库。

arn:aws:codeartifact:region-ID:account-ID:repository/my_domain/my_repo

DeleteDomain

codeartifact:DeleteDomain

删除域时是必需的。

arn:aws:codeartifact:region-ID:account-ID:domain/my_domain

DeleteDomainPermissionsPolicy

codeartifact:DeleteDomainPermissionsPolicy

删除域的资源策略时是必需的。

arn:aws:codeartifact:region-ID:account-ID:domain/my_domain

DeletePackage

codeartifact:DeletePackage

删除程序包时是必需的。

arn:aws:codeartifact:region-ID:account-ID:package/my_domain/my_repo/package-format/namespace/my_package

DeletePackageGroup

codeartifact:DeletePackageGroup

删除包群组所必需的。

arn:aws:codeartifact:region-ID:account-ID:package-group/my_domain/encoded_package_group_pattern

DeletePackageVersions

codeartifact:DeletePackageVersions

删除程序包版本时是必需的。

arn:aws:codeartifact:region-ID:account-ID:package/my_domain/my_repo/package-format/namespace/my_package

DeleteRepository

codeartifact:DeleteRepository

删除 存储库时是必需的。

arn:aws:codeartifact:region-ID:account-ID:repository/my_domain/my_repo

DeleteRepositoryPermissionsPolicy

codeartifact:DeleteRepositoryPermissionsPolicy

删除存储库的资源策略时是必需的。

arn:aws:codeartifact:region-ID:account-ID:repository/my_domain/my_repo

DescribeDomain

codeartifact:DescribeDomain

获取有关域的信息时是必需的。

arn:aws:codeartifact:region-ID:account-ID:domain/my_domain

DescribePackage

codeartifact:DescribePackage

获取有关程序包的信息时是必需的。

arn:aws:codeartifact:region-ID:account-ID:package/my_domain/my_repo/package-format/namespace/my_package

DescribePackageGroup

codeartifact:DescribePackageGroup

获取有关包群组的信息所必需的。

arn:aws:codeartifact:region-ID:account-ID:package-group/my_domain/encoded_package_group_pattern

DescribePackageVersion

codeartifact:DescribePackageVersion

获取有关程序包版本的信息时是必需的。

arn:aws:codeartifact:region-ID:account-ID:package/my_domain/my_repo/package-format/namespace/my_package

DescribeRepository

codeartifact:DescribeRepository

获取有关存储库的信息时是必需的。

arn:aws:codeartifact:region-ID:account-ID:repository/my_domain/my_repo

DisassociateExternalConnection

codeartifact:DisassociateExternalConnection

从存储库删除外部连接时是必需的。

arn:aws:codeartifact:region-ID:account-ID:repository/my_domain/my_repo

DisposePackageVersions

codeartifact:DisposePackageVersions

处置程序包的版本时是必需的。

arn:aws:codeartifact:region-ID:account-ID:package/my_domain/my_repo/package-format/namespace/my_package

GetAssociatedPackageGroup

codeartifact:GetAssociatedPackageGroup

获取包裹的关联包组所必需的。

arn:aws:codeartifact:region-ID:account-ID:package-group/my_domain/encoded_package_group_pattern

GetAuthorizationToken

codeartifact:GetAuthorizationToken

sts:GetServiceBearerToken

获取访问存储库的临时授权令牌时是必需的。

arn:aws:codeartifact:region-ID:account-ID:domain/my_domain

GetDomainPermissionsPolicy

codeartifact:GetDomainPermissionsPolicy

获取域资源策略时是必需的。

arn:aws:codeartifact:region-ID:account-ID:domain/my_domain

GetPackageVersionAsset

codeartifact:GetPackageVersionAsset

获取程序包版本中的资产时是必需的。

arn:aws:codeartifact:region-ID:account-ID:package/my_domain/my_repo/package-format/namespace/my_package
GetPackageVersionReadme

codeartifact:GetPackageVersionReadme

获取程序包版本的自述文件时是必需的。

arn:aws:codeartifact:region-ID:account-ID:package/my_domain/my_repo/package-format/namespace/my_package

GetRepositoryEndpoint

codeartifact:GetRepositoryEndpoint

获取存储库端点时是必需的。

arn:aws:codeartifact:region-ID:account-ID:repository/my_domain/my_repo

GetRepositoryPermissionsPolicy

codeartifact:GetRepositoryPermissionsPolicy

获取存储库资源策略时是必需的。

arn:aws:codeartifact:region-ID:account-ID:repository/my_domain/my_repo

ListAssociatedPackages

codeartifact:ListAssociatedPackages

返回与包组关联的软件包列表所必需的。

arn:aws:codeartifact:region-ID:account-ID:package-group/my_domain/encoded_package_group_pattern

ListDomains

codeartifact:ListDomains

返回 AWS 账户中的域的分页列表时是必需的。

*

ListPackageGroups

codeartifact:ListPackageGroups

返回网域中软件包组的分页列表所必需的。

arn:aws:codeartifact:region-ID:account-ID:domain/my_domain

ListPackages

codeartifact:ListPackages

返回存储库中的程序包的分页列表时是必需的。

arn:aws:codeartifact:region-ID:account-ID:repository/my_domain/my_repo

ListPackageVersionAssets

codeartifact:ListPackageVersionAssets

返回程序包版本中的资产的分页列表时是必需的。

arn:aws:codeartifact:region-ID:account-ID:package/my_domain/my_repo/package-format/namespace/my_package

ListPackageVersionDependencies

codeartifact:ListPackageVersionDependencies

返回程序包版本的依赖项的分页列表时是必需的。

arn:aws:codeartifact:region-ID:account-ID:package/my_domain/my_repo/package-format/namespace/my_package

ListPackageVersions

codeartifact:ListPackageVersions

返回存储库中的程序包版本的分页列表时是必需的。

arn:aws:codeartifact:region-ID:account-ID:package/my_domain/my_repo/package-format/namespace/my_package

ListRepositories

codeartifact:ListRepositories

返回 AWS 账户中的存储库的分页列表时是必需的。

*

ListRepositoriesInDomain

codeartifact:ListRepositoriesInDomain

返回域中的存储库的分页列表时是必需的。

arn:aws:codeartifact:region-ID:account-ID:domain/my_domain

ListSubPackageGroups

codeartifact:ListSubPackageGroups

需要返回包组的直接子包组列表。

arn:aws:codeartifact:region-ID:account-ID:package-group/my_domain/encoded_package_group_pattern

ListTagsForResource

codeartifact:ListTagsForResource

列出指定资源的标签所必需的。

arn:aws:codeartifact:region-ID:account-ID:domain/my_domain

arn:aws:codeartifact:region-ID:account-ID:repository/my_domain/my_repo

PublishPackageVersion

codeartifact:PublishPackageVersion

将程序包版本发布到存储库时是必需的。

arn:aws:codeartifact:region-ID:account-ID:package/my_domain/my_repo/package-format/namespace/my_package

PutDomainPermissionsPolicy

codeartifact:PutDomainPermissionsPolicy

将资源策略添加到域时是必需的。

arn:aws:codeartifact:region-ID:account-ID:domain/my_domain

PutPackageMetadata

codeartifact:PutPackageMetadata

将 Maven 程序包版本发布到存储库,或者在 npm 程序包版本中添加或删除 npm 标签时是必需的。

arn:aws:codeartifact:region-ID:account-ID:package/my_domain/my_repo/package-format/namespace/my_package

PutPackageOriginConfiguration

codeartifact:PutPackageOriginConfiguration

更新程序包的源配置时是必需的。

arn:aws:codeartifact:region-ID:account-ID:package/my_domain/my_repo/package-format/namespace/my_package

PutRepositoryPermissionsPolicy

codeartifact:PutRepositoryPermissionsPolicy

将资源策略添加到存储库时是必需的。

arn:aws:codeartifact:region-ID:account-ID:repository/my_domain/my_repo

ReadFromRepository

codeartifact:ReadFromRepository

使用程序包管理器客户端从存储库读取时是必需的。

arn:aws:codeartifact:region-ID:account-ID:repository/my_domain/my_repo

TagResource

codeartifact:TagResource

标记资源时是必需的。

arn:aws:codeartifact:region-ID:account-ID:domain/my_domain

arn:aws:codeartifact:region-ID:account-ID:repository/my_domain/my_repo

UntagResource

codeartifact:UntagResource

从资源中删除标签时是必需的。

arn:aws:codeartifact:region-ID:account-ID:domain/my_domain

arn:aws:codeartifact:region-ID:account-ID:repository/my_domain/my_repo

UpdatePackageGroup

codeartifact:UpdatePackageGroup

更新软件包组所必需的。

arn:aws:codeartifact:region-ID:account-ID:package-group/my_domain/encoded_package_group_pattern

UpdatePackageGroupOriginConfiguration

codeartifact:UpdatePackageGroupOriginConfiguration

更新包组的原始配置所必需的。

arn:aws:codeartifact:region-ID:account-ID:package-group/my_domain/encoded_package_group_pattern

UpdatePackageVersionsStatus

codeartifact:UpdatePackageVersionsStatus

更改程序包版本的状态时是必需的。

arn:aws:codeartifact:region-ID:account-ID:package/my_domain/my_repo/package-format/namespace/my_package

UpdateRepository

codeartifact:UpdateRepository

更新存储库的描述或上游连接时是必需的。有关更多信息 UpdateRepository,请参阅 CodeArtifact API 指南中的修改存储库上游配置或。

codeartifact:AssociateWithDownstreamRepository

对存储库是必需的,因此可以将其作为上游存储库添加到下游存储库。

arn:aws:codeartifact:region-ID:account-ID:repository/my_domain/my_repo

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