

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# AWS CodeArtifact 권한 참조
<a name="auth-and-access-control-permissions-reference"></a>

## AWS CodeArtifact 리소스 및 작업
<a name="arn-formats"></a>

In AWS CodeArtifact에서 기본 리소스는 도메인입니다. 정책에서 Amazon 리소스 이름(ARN)을 사용하여 정책이 적용되는 리소스를 식별합니다. 리포지토리도 리소스이며 리포지토리에는 이와 연결된 ARN이 들어 있습니다. 자세한 내용은 *Amazon Web Services 일반 참조*의 [Amazon 리소스 이름(ARN)](https://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html)을 참조하세요.


| 리소스 유형 | 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 자격 증명에 연결할 수 있는 액세스 제어 및 쓰기 권한 정책(자격 증명 기반 정책)을 설정할 때 다음 표를 참조로 사용할 수 있습니다.

your 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" ]`).

**와일드카드 문자 사용**

정책의 `Resource` 필드에 리소스 값으로 와일드카드 문자(\$1)를 사용하거나 사용하지 않고 ARN을 지정합니다. 와일드카드를 사용하여 여러 작업 또는 리소스를 지정할 수 있습니다. 예를 들어, `codeartifact:*`는 모든 CodeArtifact 작업을 지정하고, `codeartifact:Describe*`는 `Describe`이라는 단어로 시작하는 모든 CodeArtifact 작업을 지정합니다.


**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:DescribeKey` 및 `kms: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\$1domain/my\$1repo/package-format/namespace/my\$1package | 
| GetPackageVersionReadme |  `codeartifact:GetPackageVersionReadme` 패키지 버전의 readme를 가져오는 데 필요합니다.  |  `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` 리포지토리의 설명 또는 업스트림 연결을 업데이트하는 데 필요합니다. 자세한 내용은 *CodeArtifact API 가이드*의 [리포지토리 업스트림 구성 수정](config-repos.md#modify-upstream) 또는 [UpdateRepository](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_UpdateRepository.html)를 참조하세요. `codeartifact:AssociateWithDownstreamRepository` 다운스트림 리포지토리에 업스트림 리포지토리로 추가할 수 있도록 리포지토리에 필요합니다.  |  `arn:aws:codeartifact:region-ID:account-ID:repository/my_domain/my_repo`  | 

## 패키지 그룹 ARN
<a name="package-group-arns"></a>

**참고**  
이 섹션에서는 패키지 그룹 ARN 및 패턴 인코딩이 정보를 제공하는 방법에 대해 설명합니다. 콘솔에서 ARN을 복사하거나, 패턴을 인코딩하고 ARN을 구성하는 대신 `DescribePackageGroup` API를 사용하여 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`로 인코딩해야 합니다.