

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# AWS CodeArtifact 許可參考
<a name="auth-and-access-control-permissions-reference"></a>

## AWS CodeArtifact 資源和操作
<a name="arn-formats"></a>

在 AWS CodeArtifact 中，主要資源是網域。在政策中，您使用 Amazon Resource Name (ARN) 來識別要套用政策的資源。儲存庫也是 資源，並具有與其相關聯的 ARNs。如需詳細資訊，請參閱 中的 [Amazon Resource Name (ARNs)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)*Amazon Web Services 一般參考*。


| Resource Type (資源類型) | ARN 格式 | 
| --- | --- | 
| 網域 | `arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:domain/{{my_domain}}` | 
| 儲存庫 | `arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:repository/{{my_domain}}/{{my_repo}}` | 
| 套件群組 | `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}}"
```

您可以使用其 ARN 在陳述式中指出特定儲存庫 ({{myRepo}})，如下所示。

```
"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 服務會將冒號 (：) 或正斜線 (/) 視為 ARNs中的相同字元。不過，CodeArtifact 在資源模式和規則中使用完全相符的項目。在建立事件模式時，請務必使用正確的字元，使這些字元符合資源中的 ARN 語法。

## AWS CodeArtifact API 操作和許可
<a name="permission-ref"></a>

當您設定存取控制和撰寫可連接到 IAM 身分的許可政策 （以身分為基礎的政策） 時，您可以使用下表做為參考。

您可以在 AWS CodeArtifact 政策中使用 AWS整體條件索引鍵來表達條件。如需清單，請參閱《[IAM 使用者指南》中的 IAM JSON 政策元素參考](https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements.html#AvailableKeys)。 **

您可以在政策的 `Action` 欄位中指定動作。若要指定動作，請使用 `codeartifact:` 字首，後面接著 API 操作名稱 (例如 `codeartifact:CreateDomain` 和 `codeartifact:AssociateExternalConnection`)。若要在單一陳述式中指定多個動作，請用逗號加以分隔 (例如 `"Action": [ "codeartifact:CreateDomain", "codeartifact:AssociateExternalConnection" ]`)。

**使用萬用字元**

您可以使用或不使用萬用字元 (\*)，指定 ARN 做為政策之 `Resource` 欄位中的資源值。您可以使用萬用字元指定多個動作或資源。例如， `codeartifact:*`會指定所有 CodeArtifact 動作，並`codeartifact:Describe*`指定以字詞 開頭的所有 CodeArtifact 動作`Describe`。


**CodeArtifact API 操作和動作所需的許可**  

| AWS CodeArtifact API 操作 | 所需許可 (API 動作) | Resources | 
| --- | --- | --- | 
| AssociateExternalConnection | `codeartifact:AssociateExternalConnection`<br />將外部連線新增至儲存庫時需要。 | `arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:repository/{{my_domain}}/{{my_repo}}` | 
| CopyPackageVersions | 若要將套件版本從來源儲存庫複製到目的地儲存庫：<br />`codeartifact:CopyPackageVersions`<br />目的地儲存庫上的必要項目。<br />`codeartifact:ReadFromRepository`<br />來源儲存庫上的必要項目。 | `arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:repository/{{my_domain}}/{{my_repo}}` | 
| CreateDomain | `codeartifact:CreateDomain`<br />建立網域時需要。<br />`kms:DescribeKey` 和 `kms:CreateGrant`<br />指定非預設 時，在提供的 KMS 金鑰上為必要`encryptionKey`。 | `arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:domain/{{my_domain}}` | 
| CreatePackageGroup | `codeartifact:CreatePackageGroup`<br />建立套件群組時需要。 | `arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:package-group/{{my_domain}}/{{encoded_package_group_pattern}}` | 
| CreateRepository | `codeartifact:CreateRepository`<br />建立儲存庫時需要。<br />`codeartifact:AssociateWithDownstreamRepository`<br />儲存庫上的必要項目，以便將其新增為下游儲存庫的上游儲存庫。 | `arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:repository/{{my_domain}}/{{my_repo}}` | 
| DeleteDomain | `codeartifact:DeleteDomain`<br />刪除網域時需要。 | `arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:domain/{{my_domain}}` | 
| DeleteDomainPermissionsPolicy | `codeartifact:DeleteDomainPermissionsPolicy`<br />刪除網域的資源政策時需要。 | `arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:domain/{{my_domain}}` | 
| DeletePackage | `codeartifact:DeletePackage`<br />刪除套件時需要。 | `arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:package/{{my_domain}}/{{my_repo}}/{{package-format}}/{{namespace}}/{{my_package}}` | 
| DeletePackageGroup | `codeartifact:DeletePackageGroup`<br />刪除套件群組時需要。 | `arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:package-group/{{my_domain}}/{{encoded_package_group_pattern}}` | 
| DeletePackageVersions | `codeartifact:DeletePackageVersions`<br />刪除套件版本時需要。 | `arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:package/{{my_domain}}/{{my_repo}}/{{package-format}}/{{namespace}}/{{my_package}}` | 
| DeleteRepository | `codeartifact:DeleteRepository`<br />刪除 儲存庫時需要。 | `arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:repository/{{my_domain}}/{{my_repo}}` | 
| DeleteRepositoryPermissionsPolicy | `codeartifact:DeleteRepositoryPermissionsPolicy`<br />刪除儲存庫的資源政策時需要。 | `arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:repository/{{my_domain}}/{{my_repo}}` | 
| DescribeDomain | `codeartifact:DescribeDomain`<br />取得網域的相關資訊時需要。 | `arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:domain/{{my_domain}}` | 
| DescribePackage | `codeartifact:DescribePackage`<br />取得套件的相關資訊時需要。 | `arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:package/{{my_domain}}/{{my_repo}}/{{package-format}}/{{namespace}}/{{my_package}}` | 
| DescribePackageGroup | `codeartifact:DescribePackageGroup`<br />取得套件群組的相關資訊時需要。 | `arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:package-group/{{my_domain}}/{{encoded_package_group_pattern}}` | 
| DescribePackageVersion | `codeartifact:DescribePackageVersion`<br />取得套件版本的相關資訊時需要。 | `arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:package/{{my_domain}}/{{my_repo}}/{{package-format}}/{{namespace}}/{{my_package}}` | 
| DescribeRepository | `codeartifact:DescribeRepository`<br />取得儲存庫的相關資訊時需要。 | `arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:repository/{{my_domain}}/{{my_repo}}` | 
| DisassociateExternalConnection | `codeartifact:DisassociateExternalConnection`<br />從儲存庫移除外部連線時需要。 | `arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:repository/{{my_domain}}/{{my_repo}}` | 
| DisposePackageVersions | `codeartifact:DisposePackageVersions`<br />處置套件版本時需要。 | `arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:package/{{my_domain}}/{{my_repo}}/{{package-format}}/{{namespace}}/{{my_package}}` | 
| GetAssociatedPackageGroup | `codeartifact:GetAssociatedPackageGroup`<br />取得套件的相關聯套件群組時需要。 | `arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:package-group/{{my_domain}}/{{encoded_package_group_pattern}}` | 
| GetAuthorizationToken | `codeartifact:GetAuthorizationToken`<br />`sts:GetServiceBearerToken`<br />取得存取儲存庫的臨時授權字符時需要。 | `arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:domain/{{my_domain}}` | 
| GetDomainPermissionsPolicy | `codeartifact:GetDomainPermissionsPolicy`<br />取得網域資源政策時需要。 | `arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:domain/{{my_domain}}` | 
| GetPackageVersionAsset | `codeartifact:GetPackageVersionAsset`<br />取得套件版本中的資產時需要。 | arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:package/{{my\_domain}}/{{my\_repo}}/{{package-format}}/{{namespace}}/{{my\_package}} | 
| GetPackageVersionReadme | `codeartifact:GetPackageVersionReadme`<br />取得套件版本的讀我檔案時需要。 | `arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:package/{{my_domain}}/{{my_repo}}/{{package-format}}/{{namespace}}/{{my_package}}` | 
| GetRepositoryEndpoint | `codeartifact:GetRepositoryEndpoint`<br />取得儲存庫端點時需要。 | `arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:repository/{{my_domain}}/{{my_repo}}` | 
| GetRepositoryPermissionsPolicy | `codeartifact:GetRepositoryPermissionsPolicy`<br />取得儲存庫資源政策時需要。 | `arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:repository/{{my_domain}}/{{my_repo}}` | 
| ListAssociatedPackages | `codeartifact:ListAssociatedPackages`<br />傳回與套件群組相關聯的套件清單時需要。 | `arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:package-group/{{my_domain}}/{{encoded_package_group_pattern}}` | 
| ListDomains | `codeartifact:ListDomains`<br />傳回 AWS 帳戶中網域分頁清單時需要。 | `*` | 
| ListPackageGroups | `codeartifact:ListPackageGroups`<br />傳回網域中套件群組的分頁清單時需要。 | `arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:domain/{{my_domain}}` | 
| ListPackages | `codeartifact:ListPackages`<br />傳回儲存庫中套件的分頁清單時需要。 | `arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:repository/{{my_domain}}/{{my_repo}}` | 
| ListPackageVersionAssets | `codeartifact:ListPackageVersionAssets`<br />傳回套件版本中資產的分頁清單時需要。 | `arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:package/{{my_domain}}/{{my_repo}}/{{package-format}}/{{namespace}}/{{my_package}}` | 
| ListPackageVersionDependencies | `codeartifact:ListPackageVersionDependencies`<br />傳回套件版本相依性的分頁清單時需要。 | `arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:package/{{my_domain}}/{{my_repo}}/{{package-format}}/{{namespace}}/{{my_package}}` | 
| ListPackageVersions | `codeartifact:ListPackageVersions`<br />傳回儲存庫中套件版本的分頁清單時需要。 | `arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:package/{{my_domain}}/{{my_repo}}/{{package-format}}/{{namespace}}/{{my_package}}` | 
| ListRepositories | `codeartifact:ListRepositories`<br />傳回 AWS 帳戶中儲存庫的分頁清單時需要。 | `*` | 
| ListRepositoriesInDomain | `codeartifact:ListRepositoriesInDomain`<br />傳回網域中儲存庫的分頁清單時需要。 | `arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:domain/{{my_domain}}` | 
| ListSubPackageGroups | `codeartifact:ListSubPackageGroups`<br />傳回套件群組的直接子套件群組清單時需要。 | `arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:package-group/{{my_domain}}/{{encoded_package_group_pattern}}` | 
| ListTagsForResource | `codeartifact:ListTagsForResource`<br />必須列出特定資源的標籤。 | `arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:domain/{{my_domain}}`<br />`arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:repository/{{my_domain}}/{{my_repo}}` | 
| PublishPackageVersion | `codeartifact:PublishPackageVersion`<br />將套件版本發佈至儲存庫時需要。 | `arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:package/{{my_domain}}/{{my_repo}}/{{package-format}}/{{namespace}}/{{my_package}}` | 
| PutDomainPermissionsPolicy | `codeartifact:PutDomainPermissionsPolicy`<br />將資源政策新增至網域時需要。 | `arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:domain/{{my_domain}}` | 
| PutPackageMetadata | `codeartifact:PutPackageMetadata`<br />將 Maven 套件版本發佈至儲存庫，或從 npm 套件版本新增或移除 npm 標籤時需要。 | `arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:package/{{my_domain}}/{{my_repo}}/{{package-format}}/{{namespace}}/{{my_package}}` | 
| PutPackageOriginConfiguration | `codeartifact:PutPackageOriginConfiguration`<br />更新套件的原始伺服器組態時需要。 | `arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:package/{{my_domain}}/{{my_repo}}/{{package-format}}/{{namespace}}/{{my_package}}` | 
| PutRepositoryPermissionsPolicy | `codeartifact:PutRepositoryPermissionsPolicy`<br />將資源政策新增至儲存庫時需要。 | `arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:repository/{{my_domain}}/{{my_repo}}` | 
| ReadFromRepository | `codeartifact:ReadFromRepository`<br />使用套件管理員用戶端從儲存庫讀取時需要。 | `arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:repository/{{my_domain}}/{{my_repo}}` | 
| TagResource | `codeartifact:TagResource`<br />標記資源時需要。 | `arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:domain/{{my_domain}}`<br />`arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:repository/{{my_domain}}/{{my_repo}}` | 
| UntagResource | `codeartifact:UntagResource`<br />從資源移除標籤時需要。 | `arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:domain/{{my_domain}}`<br />`arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:repository/{{my_domain}}/{{my_repo}}` | 
| UpdatePackageGroup | `codeartifact:UpdatePackageGroup`<br />更新套件群組時需要。 | `arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:package-group/{{my_domain}}/{{encoded_package_group_pattern}}` | 
| UpdatePackageGroupOriginConfiguration | `codeartifact:UpdatePackageGroupOriginConfiguration`<br />更新套件群組的原始伺服器組態時需要。 | `arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:package-group/{{my_domain}}/{{encoded_package_group_pattern}}` | 
| UpdatePackageVersionsStatus | `codeartifact:UpdatePackageVersionsStatus`<br />變更套件版本的狀態時需要。 | `arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:package/{{my_domain}}/{{my_repo}}/{{package-format}}/{{namespace}}/{{my_package}}` | 
| UpdateRepository | `codeartifact:UpdateRepository`<br />更新儲存庫的描述或上游連線時需要。如需詳細資訊，請參閱 *CodeArtifact API 指南*中的 [修改儲存庫上游組態](config-repos.md#modify-upstream)或 [UpdateRepository](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_UpdateRepository.html)。<br />`codeartifact:AssociateWithDownstreamRepository`<br />儲存庫上的必要項目，以便將其新增為下游儲存庫的上游儲存庫。 | `arn:aws:codeartifact:{{region-ID}}:{{account-ID}}:repository/{{my_domain}}/{{my_repo}}` | 

## 套件群組 ARNs
<a name="package-group-arns"></a>

**注意**  
本節說明套件群組 ARNs和模式編碼如何提供資訊。建議您從主控台複製 ARNs，或使用 `DescribePackageGroup` API 擷取 ARNs，而不是編碼模式和建構 ARNs。

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
```

請注意，清單中未包含的字元無法編碼，且 ARNs 區分大小寫，因此`*`必須編碼為 `%2a`而非 `%2A`。