

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

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


**CodeArtifact API 작업 및 작업에 필요한 권한**  

| AWS CodeArtifact API 작업 | 필요한 권한(API 작업) | 리소스 | 
| --- | --- | --- | 
| 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 />기본값이 아닌 `encryptionKey`를 지정하는 경우 제공된 KMS 키에 필요합니다. | `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 />패키지 버전의 readme를 가져오는 데 필요합니다. | `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}}` | 

## 패키지 그룹 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`로 인코딩해야 합니다.