도메인 정책 - CodeArtifact

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

도메인 정책

CodeArtifact 리소스 기반 권한을 사용하여 액세스를 제어할 수 있도록 지원합니다. 리소스 기반 권한을 사용하면 리소스에 액세스할 수 있는 사람과 이러한 사람이 리소스를 대상으로 수행할 수 있는 작업을 지정할 수 있습니다. 기본적으로 도메인을 소유한 AWS 계정만 도메인에서 리포지토리를 만들고 액세스할 수 있습니다. 도메인에 정책 문서를 적용하여 다른 주체가 액세스하도록 허용할 수 IAM 있습니다.

자세한 내용은 정책 및 권한자격 증명 기반 정책 및 리소스 기반 정책을 참조하세요.

도메인에 대한 크로스 계정 액세스 활성화

리소스 정책은 형식의 텍스트 파일입니다. JSON 파일은 보안 주체(액터), 하나 이상의 작업과 단일 효과(Allow또는Deny)를 지정해야 합니다. 다른 계정이 소유한 도메인에 리포지토리를 만들려면, 보안 주체는 도메인 리소스에 대한 CreateRepository 권한을 부여받아야 합니다.

예를 들어 다음 리소스 정책은 도메인에 리포지토리를 만들 수 있는 권한을 123456789012 계정에 부여합니다.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "codeartifact:CreateRepository" ], "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:root" }, "Resource": "*" } ] }

태그가 있는 리포지토리를 만들 수 있게 하려면 codeartifact:TagResource 권한을 포함해야 합니다. 이렇게 하면 도메인과 도메인 안에 있는 모든 리포지토리에 태그를 추가할 수 있는 액세스 권한도 계정에 부여됩니다.

도메인 정책은 도메인에 대한 모든 작업과 도메인 내의 모든 리소스에 대해 평가됩니다. 즉, 도메인 정책을 사용하여 도메인의 리포지토리와 패키지에 권한을 적용할 수 있습니다. Resource요소가 로 * 설정되면 도메인의 모든 리소스에 명령문이 적용됩니다. 예를 들어 위의 정책이 허용된 IAM 작업 codeartifact:DescribeRepository 목록에도 포함된 경우 정책은 도메인의 모든 저장소에 DescribeRepository 대한 호출을 허용합니다. 도메인 정책은 Resource 요소의 특정 리소스를 사용하여 도메인의 특정 리소스에 사용 권한을 적용하는 데 사용될 수 있습니다. ARNs

참고

도메인 및 리포지토리 정책을 모두 사용하여 권한을 구성할 수 있습니다. 두 정책이 모두 존재하면 두 정책이 모두 평가되고 두 정책 중 하나에서 허용하는 경우 조치가 허용됩니다. 자세한 내용은 리포지토리와 도메인 정책 간의 상호 작용 단원을 참조하십시오.

다른 계정이 소유한 도메인에 있는 패키지에 액세스하려면, 보안 주체는 도메인 리소스에 대한 GetAuthorizationToken 권한을 부여받아야 합니다. 이렇게 하면 도메인 소유자는 도메인 내 리포지토리의 콘텐츠를 읽을 수 있는 계정을 제어할 수 있습니다.

예를 들어 다음 리소스 정책은 도메인 내 모든 리포지토리에 대한 인증 토큰을 검색할 수 있는 권한을 123456789012 계정에 부여합니다.

{ "Version": "2012-10-17", "Statement": [ { "Action": [ "codeartifact:GetAuthorizationToken" ], "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:root" }, "Resource": "*" } ] }
참고

리포지토리 엔드포인트에서 패키지를 가져오려는 보안 주체는 도메인에 대한 ReadFromRepository 권한 외에 리포지토리 리소스에 대한 GetAuthorizationToken 권한도 부여받아야 합니다. 마찬가지로, 리포지토리 엔드포인트에 패키지를 게시하려는 보안 주체는 GetAuthorizationToken에 더해 PublishPackageVersion 권한도 부여받아야 합니다.

ReadFromRepositoryPublishPackageVersion 권한에 대한 자세한 내용은 리포지토리 정책을 참조하세요.

도메인 정책 예제

여러 계정이 도메인을 사용하는 경우, 도메인을 완전히 사용할 수 있도록 계정에 기본 권한 모음을 부여해야 합니다. 다음 리소스 정책에는 도메인의 완전한 사용을 허용하는 권한 모음이 나열되어 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Sid": "BasicDomainPolicy", "Action": [ "codeartifact:GetDomainPermissionsPolicy", "codeartifact:ListRepositoriesInDomain", "codeartifact:GetAuthorizationToken", "codeartifact:DescribeDomain", "codeartifact:CreateRepository" ], "Effect": "Allow", "Resource": "*", "Principal": { "AWS": "arn:aws:iam::123456789012:root" } } ] }
참고

도메인과 도메인의 모든 리포지토리를 단일 계정에서 소유하며 해당 계정에서만 사용해야 한다면 도메인 정책을 만들지 않아도 됩니다.

다음과 같은 도메인 정책 예시 AWS Organizations

다음과 같이 aws:PrincipalOrgID 조건 키를 사용하여 조직의 모든 계정에서 CodeArtifact 도메인에 대한 액세스 권한을 부여할 수 있습니다.

{ "Version": "2012-10-17", "Statement": { "Sid": "DomainPolicyForOrganization", "Effect": "Allow", "Principal": "*", "Action": [ "codeartifact:GetDomainPermissionsPolicy", "codeartifact:ListRepositoriesInDomain", "codeartifact:GetAuthorizationToken", "codeartifact:DescribeDomain", "codeartifact:CreateRepository" ], "Resource": "*", "Condition": { "StringEquals": { "aws:PrincipalOrgID":["o-xxxxxxxxxxx"]} } } }

aws:PrincipalOrgID조건 키 사용에 대한 자세한 내용은 사용 IAM설명서의 AWS글로벌 조건 컨텍스트 키를 참조하십시오.

도메인 정책 설정

put-domain-permissions-policy 명령을 사용하여 정책을 도메인에 연결합니다.

aws codeartifact put-domain-permissions-policy --domain my_domain --domain-owner 111122223333 \ --policy-document file://</PATH/TO/policy.json>

put-domains-permissions-policy를 호출하면 권한을 평가할 때 도메인의 리소스 정책이 무시됩니다. 이렇게 하면 도메인 소유자가 자기 자신을 도메인 외부에 고립되게 해 리소스 정책을 업데이트하지 못하는 일을 방지할 수 있습니다.

참고

호출 시 리소스 정책이 무시되므로 리소스 정책을 사용하여 도메인의 리소스 정책을 업데이트할 수 있는 권한을 다른 AWS 계정에 부여할 수 없습니다 put-domain-permissions-policy.

샘플 출력:

{ "policy": { "resourceArn": "arn:aws:codeartifact:region-id:111122223333:domain/my_domain", "document": "{ ...policy document content...}", "revision": "MQlyyTQRASRU3HB58gBtSDHXG7Q3hvxxxxxxx=" } }

명령 출력에는 도메인 리소스의 Amazon 리소스 이름 (ARN), 정책 문서의 전체 내용, 수정 식별자가 포함됩니다. --policy-revision 옵션을 사용하면 개정 식별자를 put-domain-permissions-policy에 전달할 수 있습니다. 이렇게 하면 문서의 알려진 개정은 덮어쓰고, 다른 작성자가 설정한 최신 버전은 덮어쓰지 않게 됩니다.

도메인 정책 읽기

정책 문서의 기존 버전을 읽으려면 get-domain-permissions-policy 명령을 사용합니다. 읽기 쉬운 출력 형식을 지정하려면 다음과 같이 --output--query policy.document 모두를 Python json.tool 모듈과 함께 사용하세요.

aws codeartifact get-domain-permissions-policy --domain my_domain --domain-owner 111122223333 \ --output text --query policy.document | python -m json.tool

샘플 출력:

{ "Version": "2012-10-17", "Statement": [ { "Sid": "BasicDomainPolicy", "Action": [ "codeartifact:GetDomainPermissionsPolicy", "codeartifact:ListRepositoriesInDomain", "codeartifact:GetAuthorizationToken", "codeartifact:CreateRepository" ], "Effect": "Allow", "Resource": "*", "Principal": { "AWS": "arn:aws:iam::111122223333:root" } } ] }

도메인 정책 삭제

delete-domain-permissions-policy 명령을 사용하여 도메인에서 정책을 삭제합니다.

aws codeartifact delete-domain-permissions-policy --domain my_domain --domain-owner 111122223333

출력의 형식은 get-domain-permissions-policydelete-domain-permissions-policy 명령의 형식과 동일합니다.