Amazon ECR 권한 - AWS HealthOmics

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

Amazon ECR 권한

HealthOmics 서비스가 프라이빗 Amazon ECR 리포지토리의 컨테이너에서 워크플로를 실행하기 전에 리포지토리에 대한 리소스 정책을 생성합니다. 이 정책은 HealthOmics 서비스가 컨테이너를 사용할 수 있는 권한을 부여합니다. 워크플로에서 참조하는 각 프라이빗 리포지토리에이 리소스 정책을 추가합니다.

참고

프라이빗 리포지토리와 워크플로는 동일한 리전에 있어야 합니다.

다른 AWS 계정이 워크플로와 리포지토리를 소유한 경우 교차 계정 권한을 구성해야 합니다.

공유 워크플로에 대한 추가 리포지토리 액세스 권한을 부여할 필요가 없습니다. 그러나 컨테이너 이미지에 대한 특정 워크플로 액세스를 허용하거나 거부하는 정책을 생성할 수 있습니다.

Amazon ECR 풀스루 캐시 기능을 사용하려면 레지스트리 권한 정책을 생성해야 합니다.

다음 섹션에서는 이러한 시나리오에 대해 Amazon ECR 리소스 권한을 구성하는 방법을 설명합니다. Amazon ECR의 권한에 대한 자세한 내용은 Amazon ECR의 프라이빗 레지스트리 권한을 참조하세요.

Amazon ECR 리포지토리에 대한 리소스 정책 생성

HealthOmics 서비스가 리포지토리의 컨테이너를 사용하여 워크플로를 실행하도록 허용하는 리소스 정책을 생성합니다. 이 정책은 HealthOmics 서비스 보안 주체가 필요한 Amazon ECR 작업에 액세스할 수 있는 권한을 부여합니다.

다음 단계에 따라 정책을 생성합니다.

  1. Amazon ECR 콘솔에서 프라이빗 리포지토리 페이지를 열고 액세스 권한을 부여할 리포지토리를 선택합니다.

  2. 사이드 바 탐색에서 권한을 선택합니다.

  3. 편집을 선택합니다.

  4. 정책 JSON 편집을 선택합니다.

  5. 다음 정책 설명을 추가한 다음 저장을 선택합니다.

    JSON
    { "Version":"2012-10-17", "Statement": [ { "Sid": "omics workflow access", "Effect": "Allow", "Principal": { "Service": "omics.amazonaws.com" }, "Action": [ "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "ecr:BatchCheckLayerAvailability" ], "Resource": "*" } ] }

교차 계정 컨테이너를 사용하여 워크플로 실행

다른 AWS 계정이 워크플로와 컨테이너를 소유한 경우 다음과 같은 교차 계정 권한을 구성해야 합니다.

  1. 워크플로를 소유한 계정에 명시적으로 권한을 부여하도록 리포지토리에 대한 Amazon ECR 정책을 업데이트합니다.

  2. 워크플로를 소유한 계정의 서비스 역할을 업데이트하여 컨테이너 이미지에 대한 액세스 권한을 부여합니다.

다음 예제에서는 워크플로를 소유한 계정에 액세스 권한을 부여하는 Amazon ECR 리소스 정책을 보여줍니다.

이 예시에서는 다음이 적용됩니다.

  • 워크플로 계정 ID: 111122223333

  • 컨테이너 리포지토리 계정 ID: 444455556666

  • 컨테이너 이름: samtools

JSON
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "omics.amazonaws.com" }, "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer" ], "Resource": "*" }, { "Sid": "AllowAccessToTheServiceRoleOfTheAccountThatOwnsTheWorkflow", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/DemoCustomer" }, "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer" ], "Resource": "*" } ] }

설정을 완료하려면 워크플로를 소유한 계정의 서비스 역할에 다음 정책 설명을 추가합니다. 이 정책은 서비스 역할이 “samtools” 컨테이너 이미지에 액세스할 수 있는 권한을 부여합니다. 계정 번호, 컨테이너 이름 및 리전을 고유한 값으로 바꿔야 합니다.

{ "Sid": "CrossAccountEcrRepoPolicy", "Effect": "Allow", "Action": ["ecr:BatchCheckLayerAvailability", "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer"], "Resource": "arn:aws:ecr:us-west-2:444455556666:repository/samtools" }

공유 워크플로에 대한 Amazon ECR 정책

참고

HealthOmics는 워크플로가 구독자 계정에서 실행되는 동안 공유 워크플로가 워크플로 소유자 계정의 Amazon ECR 리포지토리에 자동으로 액세스할 수 있도록 허용합니다. 공유 워크플로에 대한 추가 리포지토리 액세스 권한을 부여할 필요가 없습니다. 자세한 내용은 HealthOmics 워크플로 공유를 참조하세요.

기본적으로 구독자는 기본 컨테이너를 사용하기 위해 Amazon ECR 리포지토리에 액세스할 수 없습니다. 선택적으로 리포지토리의 리소스 정책에 조건 키를 추가하여 Amazon ECR 리포지토리에 대한 액세스를 사용자 지정할 수 있습니다. 다음 섹션에서는 예제 정책을 제공합니다.

특정 워크플로에 대한 액세스 제한

조건문에 개별 워크플로를 나열할 수 있으므로 이러한 워크플로만 리포지토리의 컨테이너를 사용할 수 있습니다. SourceArn 조건 키는 공유 워크플로의 ARN을 지정합니다. 다음 예제에서는 지정된 워크플로가이 리포지토리를 사용할 수 있는 권한을 부여합니다.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "OmicsAccessPrincipal", "Effect": "Allow", "Principal": { "Service": "omics.amazonaws.com" }, "Action": [ "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "ecr:BatchCheckLayerAvailability" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:omics:us-east-1:111122223333:workflow/1234567" } } } ] }

특정 계정에 대한 액세스 제한

조건문에 구독자 계정을 나열할 수 있으므로 이러한 계정만 리포지토리의 컨테이너를 사용할 권한이 있습니다. SourceAccount 조건 키는 구독 AWS 계정 자의를 지정합니다. 다음 예제에서는 지정된 계정이이 리포지토리를 사용할 수 있는 권한을 부여합니다.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "OmicsAccessPrincipal", "Effect": "Allow", "Principal": { "Service": "omics.amazonaws.com" }, "Action": [ "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "ecr:BatchCheckLayerAvailability" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceAccount": "111122223333" } } } ] }

다음 예제 정책과 같이 특정 구독자에 대한 Amazon ECR 권한을 거부할 수도 있습니다.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "OmicsAccessPrincipal", "Effect": "Allow", "Principal": { "Service": "omics.amazonaws.com" }, "Action": [ "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "ecr:BatchCheckLayerAvailability" ], "Resource": "*", "Condition": { "StringNotEquals": { "aws:SourceAccount": "111122223333" } } } ] }

Amazon ECR 풀스루 캐시에 대한 정책

Amazon ECR 풀스루 캐시를 사용하려면 레지스트리 권한 정책을 생성합니다. 또한 Amazon ECR 풀스루 캐시에서 생성된 리포지토리에 대한 권한을 정의하는 리포지토리 생성 템플릿을 생성합니다.

다음 섹션에는 이러한 정책의 예제가 포함되어 있습니다. 풀스루 캐시에 대한 자세한 내용은 Amazon Elastic Container Registry 사용 설명서의 Amazon ECR 프라이빗 레지스트리와 업스트림 레지스트리 동기화를 참조하세요.

레지스트리 권한 정책

Amazon ECR 풀스루 캐시를 사용하려면 레지스트리 권한 정책을 생성합니다. 레지스트리 권한 정책은 복제 및 풀스루 캐시 권한을 제어합니다.

교차 계정 복제의 경우 리포지토리를 레지스트리에 복제할 수 AWS 계정 있는 각를 명시적으로 허용해야 합니다.

기본적으로 풀스루 캐시 규칙을 생성할 때 프라이빗 레지스트리에서 이미지를 가져올 권한이 있는 모든 IAM 보안 주체도 풀스루 캐시 규칙을 사용할 수 있습니다. 레지스트리 권한을 사용하여 이러한 권한의 범위를 특정 리포지토리로 더 좁힐 수 있습니다.

컨테이너 이미지를 소유한 계정에 레지스트리 권한 정책을 추가합니다.

다음 예제에서 정책은 HealthOmics 서비스가 각 업스트림 레지스트리에 대한 리포지토리를 생성하고 생성된 리포지토리에서 업스트림 풀 요청을 시작하도록 허용합니다.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowPTCinRegPermissions", "Effect": "Allow", "Principal": { "Service": "omics.amazonaws.com" }, "Action": [ "ecr:CreateRepository", "ecr:BatchImportUpstreamImage" ], "Resource": [ "arn:aws:ecr:us-east-1:123456789012:repository/ecr-public/*", "arn:aws:ecr:us-east-1:123456789012:repository/docker-hub/*" ] } ] }

리포지토리 생성 템플릿

HealthOmics에서 풀스루 캐시를 사용하려면 Amazon ECR 리포지토리에 리포지토리 생성 템플릿이 있어야 합니다. 템플릿은 업스트림 레지스트리에 대해 생성된 프라이빗 리포지토리의 구성 설정을 정의합니다.

각 템플릿에는 Amazon ECR이 새 리포지토리를 특정 템플릿과 일치시키는 데 사용하는 리포지토리 네임스페이스 접두사가 포함되어 있습니다. 템플릿은 리소스 기반 액세스 정책, 태그 불변성, 암호화, 수명 주기 정책을 비롯한 모든 리포지토리 설정의 구성을 지정할 수 있습니다. 자세한 내용은 Amazon Elastic Container Registry 사용 설명서의 리포지토리 생성 템플릿을 참조하세요.

다음 예제에서 정책은 HealthOmics 서비스가 업스트림 리포지토리에서 업스트림 풀 요청을 시작하도록 허용합니다.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "PTCRepoCreationTemplate", "Effect": "Allow", "Principal": { "Service": "omics.amazonaws.com" }, "Action": [ "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer" ], "Resource": "*" } ] }

교차 계정 Amazon ECR 액세스에 대한 정책

교차 계정 액세스의 경우 프라이빗 리포지토리의 소유자는 레지스트리 권한 정책과 리포지토리 생성 템플릿을 업데이트하여 다른 계정과 해당 계정의 실행 역할에 대한 액세스를 허용합니다.

레지스트리 권한 정책에서 다른 계정의 실행 역할이 Amazon ECR 작업에 액세스할 수 있도록 허용하는 정책 설명을 추가합니다.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowCrossAccountPTCinRegPermissions", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::123456789012:role/RUN_ROLE"}, "Action": [ "ecr:CreateRepository", "ecr:BatchGetImage", "ecr:BatchImportUpstreamImage" ], "Resource": "arn:aws:ecr:us-east-1:123456789012:repository/path/*" } ] }

리포지토리 생성 템플릿에서 다른 계정의 실행 역할이 새 컨테이너 이미지에 액세스할 수 있도록 허용하는 정책 설명을 추가합니다. 선택적으로 조건문을 추가하여 특정 워크플로에 대한 액세스를 제한할 수 있습니다.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "AllowCrossAccountPTCinRepoCreationTemplate", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::111122223333:role/RUN_ROLE"}, "Action": [ "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer" ], "Resource": "*", "Condition": { "StringEquals": { "aws:SourceArn": "arn:aws:omics:us-east-1:444455556666:workflow/WORKFLOW_ID", "aws:SourceAccount": "111122223333" } } } ] }

실행 역할에 두 개의 추가 작업(CreateRepository 및 BatchImportUpstreamImage)에 대한 권한을 추가하고 실행 역할이 액세스할 수 있는 리소스를 지정합니다.

JSON
{ "Version":"2012-10-17", "Statement": [ { "Sid": "CrossAccountPTCRunRolePolicy", "Effect": "Allow", "Action": [ "ecr:CreateRepository", "ecr:BatchImportUpstreamImage", "ecr:BatchCheckLayerAvailability", "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "arn:aws:ecr:us-east-1:123456789012::repository/{path}/*" } ] }