Amazon ECR 인터페이스 VPC 엔드포인트 ()AWS PrivateLink - Amazon ECR

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

Amazon ECR 인터페이스 VPC 엔드포인트 ()AWS PrivateLink

인터페이스 VPC 엔드포인트를 사용하도록 Amazon ECR을 구성하여 VPC의 보안 상태를 향상시킬 수 있습니다. VPC 엔드포인트는 프라이빗 IP 주소를 통해 Amazon ECR API에 비공개로 액세스할 수 있는 기술인 에 의해 AWS PrivateLink 구동됩니다. AWS PrivateLink VPC와 Amazon ECR 간의 모든 네트워크 트래픽을 Amazon 네트워크로 제한합니다. 인터넷 게이트웨이, NAT 디바이스 또는 가상 프라이빗 게이트웨이가 필요 없습니다.

AWS PrivateLink 및 VPC 엔드포인트에 대한 자세한 내용은 Amazon VPC 사용 설명서의 VPC 엔드포인트를 참조하십시오.

Amazon ECR VPC 엔드포인트에 대한 고려 사항

Amazon ECR에 대해 VPC 엔드포인트를 구성하기 전에 다음 고려 사항에 유의하십시오.

  • Amazon EC2 인스턴스에서 호스팅되는 Amazon ECS 작업이 Amazon ECR에서 프라이빗 이미지를 가져올 수 있도록 하려면 Amazon ECS용 인터페이스 VPC 엔드포인트도 생성해야 합니다. 자세한 내용은 Amazon Elastic Container Service 개발자 가이드인터페이스 VPC 엔드포인트(AWS PrivateLink)를 참조하세요.

    중요

    Fargate 에서 호스팅되는 Amazon ECS 작업에는 Amazon ECS 인터페이스 VPC 엔드포인트가 필요하지 않습니다.

  • Linux 플랫폼 버전 1.3.0 이하를 사용하여 Fargate에서 호스팅되는 Amazon ECS 작업은 com.amazonaws.region.ecr.dkr Amazon ECR VPC 엔드포인트 및 Amazon S3 게이트웨이 엔드포인트만을 사용하여 이 기능을 활용할 수 있습니다.

  • Linux 플랫폼 버전 1.4.0 이상을 사용하여 Fargate에서 호스팅되는 Amazon ECS 태스크를 수행하려는 경우, com.amazonaws.region.ecr.dkrcom.amazonaws.region.ecr.api Amazon ECR VPC 엔드포인트뿐만 아니라 Amazon S3 게이트웨이 엔드포인트까지 사용해야 이 기능을 활용할 수 있습니다.

  • Windows 플랫폼 버전 1.0.0 이상을 사용하여 Fargate에서 호스팅되는 Amazon ECS 태스크를 수행하려는 경우, com.amazonaws.region.ecr.dkrcom.amazonaws.region.ecr.api Amazon ECR VPC 엔드포인트뿐만 아니라 Amazon S3 게이트웨이 엔드포인트까지 사용해야 이 기능을 활용할 수 있습니다.

  • Amazon ECR에서 컨테이너 이미지를 가져오는 Fargate에서 호스팅되는 Amazon ECS 작업은 작업에 대한 작업 실행 IAM 역할에 조건 키를 추가하여 해당 작업에 사용되는 특정 VPC 및 해당 서비스에 사용되는 VPC 엔드포인트에 대한 액세스를 제한할 수 있습니다. 자세한 내용은 Amazon Elastic Container Service 개발자 가이드인터페이스 엔드포인트를 통해 Amazon ECR 이미지를 가져오는 Fargate 작업에 대한 IAM 권한(선택사항)을 참조하십시오.

  • 로그 드라이버를 사용하여 로그 정보를 Logs로 전송하는 Amazon ECR에서 컨테이너 이미지를 가져오는 Fargate에서 호스팅되는 Amazon ECS awslogs 작업에는 Logs VPC CloudWatch 엔드포인트가 필요합니다 CloudWatch . 자세한 설명은 로그 엔드포인트 생성 CloudWatch 섹션을 참조하세요.

  • VPC 엔드포인트에 연결된 보안 그룹은 VPC의 프라이빗 서브넷에서 443 포트로 들어오는 연결을 허용해야 합니다.

  • VPC 엔드포인트는 교차 리전 요청을 현재 지원하지 않습니다. API 호출을 Amazon ECR로 발행할 계획인 동일 리전에 VPC 엔드포인트를 생성해야 합니다.

  • VPC 엔드포인트는 현재 Amazon ECR 퍼블릭 리포지토리를 지원하지 않습니다. 풀스루 캐시 규칙을 사용하여 VPC 엔드포인트와 동일한 리전의 프라이빗 리포지토리에서 퍼블릭 이미지를 호스팅하는 것을 고려해 보세요. 자세한 설명은 풀스루 캐시 규칙 사용 섹션을 참조하세요.

  • VPC 엔드포인트는 Amazon Route 53을 통해 AWS 제공된 DNS만 지원합니다. 자신의 DNS를 사용하는 경우에는 조건적인 DNS 전송을 사용할 수 있습니다. 자세한 내용은 Amazon VPC 사용 설명서DHCP 옵션 세트를 참조하세요.

  • 컨테이너에 Amazon S3에 대한 기존 연결이 있는 경우, Amazon S3 게이트웨이 엔드포인트를 추가할 때 그 연결이 잠시 중단될 수 있습니다. 중단을 받지 않으려면 Amazon S3 게이트웨이 엔드포인트를 사용하는 새 VPC를 생성한 후 Amazon ECS 클러스터와 그 컨테이너를 새 VPC에 마이그레이션합니다.

  • 풀스루 캐시 규칙을 사용하여 이미지를 처음 가져올 때 AWS PrivateLink 를 사용하여 인터페이스 VPC 엔드포인트를 사용하도록 Amazon ECR을 구성한 경우, NAT 게이트웨이를 사용하여 동일한 VPC에 퍼블릭 서브넷을 생성해야 합니다. 그런 다음 해당 프라이빗 서브넷에서 NAT 게이트웨이로, 모든 아웃바운드 트래픽을 인터넷으로 라우팅해야 풀 작업을 수행할 수 있습니다. 후속 이미지 풀에는 이 작업이 필요하지 않습니다. 자세한 내용은 Amazon Virtual Private Cloud 사용 설명서시나리오: 프라이빗 서브넷에서 인터넷 액세스를 참조하세요.

Windows 이미지에 대한 고려 사항

Windows 운영 체제 기반 이미지에는 라이센스로 인해 배포가 제한되는 아티팩트가 포함됩니다. 기본적으로 Windows 이미지를 Amazon ECR 리포지토리로 푸시하는 경우, 이러한 아티팩트가 포함된 계층은 외래 계층으로 간주되어 푸시되지 않습니다. Microsoft가 아티팩트를 제공하는 경우, 외래 계층은 Microsoft Azure 인프라에서 검색됩니다. 이러한 이유로 컨테이너가 Azure에서 이러한 외래 계층을 가져올 수 있도록 하려면 VPC 엔드포인트를 만드는 것 이상의 추가 단계가 필요합니다.

Docker 데몬에서 --allow-nondistributable-artifacts 플래그를 사용하여 Amazon ECR로 Windows 이미지를 푸시할 때 이 동작을 무시할 수 있습니다. 활성화되면 이 플래그는 라이선스가 부여된 계층을 Amazon ECR로 푸시합니다. 그러면 Azure에 대한 추가 액세스 없이 VPC 엔드포인트를 통해 Amazon ECR에서 이러한 이미지를 가져올 수 있습니다.

중요

--allow-nondistributable-artifacts 플래그의 사용은 Windows 컨테이너 기본 이미지 라이선스의 조건을 준수해야 할 의무를 배제하지 않으며 공개 또는 타사 재배포용으로 Windows 콘텐츠를 게시할 수 없습니다. 사용자 환경 내에서의 사용은 허용됩니다.

Docker 설치에 이 플래그를 사용하려면 Docker 설치에 따라 Docker 데몬 구성 파일을 수정해야 합니다. 이는 일반적으로 Docker 엔진섹션의 설정 또는 환경 설정 메뉴에서 구성하거나 C:\ProgramData\docker\config\daemon.json 파일을 직접 수정하여 구성할 수 있습니다.

다음은 필요한 구성의 예입니다. 값을 이미지를 푸시하는 리포지토리 URI로 바꿉니다.

{ "allow-nondistributable-artifacts": [ "111122223333.dkr.ecr.us-west-2.amazonaws.com" ] }

Docker 데몬 구성 파일을 수정한 후에는 이미지를 푸시하기 전에 Docker 데몬을 다시 시작해야 합니다. 기본 계층이 리포지토리에 푸시되었는지 확인하여 푸시가 작동했는지 확인합니다.

참고

Windows 이미지의 기본 계층은 크기가 큽니다. 큰 크기의 계층은 푸시하는 데 시간이 길어지고 Amazon ECR에서 이러한 이미지에 대한 추가 스토리지 비용을 발생시킵니다. 이러한 이유로 빌드 시간과 지속적인 저장소 비용을 줄이는 데 꼭 필요한 경우에만 이 옵션을 사용하는 것이 좋습니다. 예를 들어 mcr.microsoft.com/windows/servercore 이미지의 크기는 Amazon ECR에서 압축할 때 약 1.7GiB 입니다.

Amazon ECR용 VPC 엔드포인트 생성

Amazon ECR 서비스에 대한 VPC 엔드포인트를 생성하려면 Amazon VPC 사용 설명서인터페이스 엔드포인트 생성 절차를 사용합니다.

Amazon EC2 인스턴스에서 호스팅되는 Amazon ECS 작업에는 Amazon ECR 엔드포인트와 Amazon S3 게이트웨이 엔드포인트가 모두 필요합니다.

플랫폼 버전 1.4.0 이상을 사용하여 Fargate에서 호스팅되는 Amazon ECS 작업은 Amazon ECR VPC 엔드포인트와 Amazon S3 게이트웨이 엔드포인트가 모두 필요합니다.

플랫폼 버전 1.3.0 이하를 사용하여 Fargate에서 호스팅되는 Amazon ECS 작업은 com.amazonaws.region.ecr.dkr Amazon ECR VPC 엔드포인트 및 Amazon S3 게이트웨이 엔드포인트만을 필요로 합니다.

참고

엔드포인트가 생성되는 순서는 중요하지 않습니다.

com.amazonaws.region.ecr.dkr

이 엔트포인트는 Docker Registry API에 사용됩니다. pushpull와 같은 Docker 클라이언트 명령은 이 엔드포인트를 사용합니다.

이 엔드포인트를 생성할 때 프라이빗 DNS 호스트 이름을 활성화해야 합니다. 그렇게 하려면 VPC 엔드포인트를 생성할 때 Amazon VPC 콘솔에서 프라이빗 DNS 이름 활성화 옵션을 반드시 선택하십시오.

com.amazonaws.region.ecr.api
참고

지정된 지역은 미국 동부 (오하이오) AWS 지역과 같이 us-east-2 Amazon ECR에서 지원하는 지역의 지역 식별자를 나타냅니다.

이 엔드포인트는 Amazon ECR API에 대한 호출에 사용됩니다. DescribeImagesCreateRepository와 같은 API 작업이 이 엔드포인트로 전송됩니다.

이 엔드포인트가 생성될 때 프라이빗 DNS 호스트 이름을 활성화할 수 있습니다(옵션). VPC 엔드포인트를 생성할 때 VPC 콘솔에서 프라이빗 DNS 이름 활성화(Enable Private DNS Name)를 선택하여 이 설정을 활성화합니다. VPC 엔드포인트에 프라이빗 DNS 호스트 이름을 활성화하는 경우 SDK를 AWS CLI 사용하거나 SDK를 사용할 때 엔드포인트 URL을 지정할 필요가 없도록 SDK를 AWS CLI 최신 버전으로 업데이트하십시오.

프라이빗 DNS 호스트 이름을 활성화하고 2019년 1월 24일 이전에 출시된 SDK 또는 AWS CLI 버전을 사용하는 경우 --endpoint-url 파라미터를 사용하여 인터페이스 엔드포인트를 지정해야 합니다. 다음 예제에서는 엔드포인트 URL의 형식을 보여줍니다.

aws ecr create-repository --repository-name name --endpoint-url https://api.ecr.region.amazonaws.com

VPC 엔드포인트에 대하여 프라이빗 DNS 호스트 이름을 활성화하지 않는 경우, 그 인터페이스 엔드포인트에 대한 VPC 엔드포인트 ID를 지정하는 --endpoint-url 파라미터를 사용해야 합니다. 다음 예제에서는 엔드포인트 URL의 형식을 보여줍니다.

aws ecr create-repository --repository-name name --endpoint-url https://VPC_endpoint_ID.api.ecr.region.vpce.amazonaws.com

Amazon S3 게이트웨이 엔드포인트 생성

Amazon ECS 작업의 경우 Amazon ECR에서 프라이빗 이미지를 가져오려면 Amazon S3에 대해 게이트웨이 엔드포인트를 생성해야 합니다. Amazon ECR은 Amazon S3를 사용하여 이미지 계층을 저장하기 때문에 게이트웨이 엔드포인트가 필요합니다. 컨테이너가 Amazon ECR에서 이미지를 다운로드할 때 Amazon ECR에 액세스하여 이미지 매니페스트를 가져오고 Amazon S3에서 실제 이미지 계층을 다운로드해야 합니다. 다음은 각 Docker 이미지에 대한 계층을 포함한 Amazon S3 버킷의 Amazon 리소스 이름(ARN)입니다.

arn:aws:s3:::prod-region-starport-layer-bucket/*

Amazon VPC 사용 설명서게이트웨이 엔드포인트 생성 절차를 사용하여 Amazon ECR용 Amazon S3 게이트웨이 엔드포인트를 생성합니다. 엔드포인트를 생성할 때는 VPC에 대한 라우팅 테이블을 선택해야 합니다.

com.amazonaws.region.s3

Amazon S3 게이트웨이 엔드포인트는 IAM 정책 문서를 사용하여 서비스 액세스를 제한합니다. 작업 IAM 역할 또는 기타 사용자 정책에 입력한 모든 제한 사항이 여전히 이 정책보다 먼저 적용되기에 모든 액세스(Full Access) 정책을 사용할 수 있습니다. Amazon S3 버킷 액세스 권한을 Amazon ECR 사용에 필요한 최소 필수 권한으로 제한하려면 Amazon ECR에 대한 최소 Amazon S3 버킷 권한을(를) 참조하십시오.

Amazon ECR에 대한 최소 Amazon S3 버킷 권한

Amazon S3 게이트웨이 엔드포인트는 IAM 정책 문서를 사용하여 서비스 액세스를 제한합니다. Amazon ECR에 대한 최소 Amazon S3 버킷 권한만 허용하려면 엔드포인트에 대한 IAM 정책 설명을 생성할 때 Amazon ECR이 사용하는 Amazon S3 버킷에 대한 액세스를 제한하십시오.

다음 테이블은 Amazon ECR에 필요한 Amazon S3 버킷 정책 권한을 설명합니다.

권한 설명

arn:aws:s3:::prod-region-starport-layer-bucket/*

각 Docker 이미지에 대한 계층이 포함된 Amazon S3 버킷에 대한 액세스를 제공합니다. us-east-2는 미국 동부(오하이오) 리전과 같이 Amazon ECR이 지원하는 AWS 리전의 리전 식별자를 나타냅니다.

다음 예는 Amazon ECR 작업에 필요한 Amazon S3 버킷에 액세스 권한을 부여하는 방법입니다.

{ "Statement": [ { "Sid": "Access-to-specific-bucket-only", "Principal": "*", "Action": [ "s3:GetObject" ], "Effect": "Allow", "Resource": ["arn:aws:s3:::prod-region-starport-layer-bucket/*"] } ] }

로그 엔드포인트 생성 CloudWatch

로그 드라이버를 사용하여 로그 정보를 로그로 전송하는 인터넷 게이트웨이 없이 VPC를 사용하는 Fargate 시작 유형을 사용하는 awslogs Amazon ECS 작업을 수행하려면 CloudWatch com.amazonaws를 생성해야 합니다. 로그용 영역 .logs 인터페이스 VPC 엔드포인트 CloudWatch . 자세한 내용은 Amazon CloudWatch Logs 사용 설명서의 인터페이스 VPC 엔드포인트에서 CloudWatch 로그 사용을 참조하십시오.

Amazon ECR VPC 엔드포인트의 엔드포인트 정책 생성

VPC 엔드포인트 정책은 엔드포인트를 만들거나 수정 시 엔드포인트에 연결하는 IAM 리소스 정책입니다. 엔드포인트를 생성할 때 정책을 연결하지 않으면 서비스에 대한 전체 액세스를 허용하는 기본 정책을 자동으로 연결합니다. AWS 엔드포인트 정책은 사용자 정책 또는 서비스별 정책을 무시하거나 교체하지 않습니다. 이는 엔드포인트에서 지정된 서비스로의 액세스를 제어하기 위한 별도의 정책입니다. 엔드포인트 정책은 JSON 형식으로 작성해야 합니다. 자세한 내용은 Amazon VPC 사용 설명서VPC 엔드포인트를 통해 서비스에 대한 액세스 제어를 참조하세요.

단일 IAM 리소스 정책을 생성하고 이를 Amazon ECR VPC 엔드포인트 모두에 연결하는 것이 좋습니다.

다음은 Amazon ECR에 대한 엔드포인트 정책의 예입니다. 이 정책은 특정 IAM 역할을 활성화하여 Amazon ECR에서 이미지를 가져옵니다.

{ "Statement": [{ "Sid": "AllowPull", "Principal": { "AWS": "arn:aws:iam::1234567890:role/role_name" }, "Action": [ "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer", "ecr:GetAuthorizationToken" ], "Effect": "Allow", "Resource": "*" }] }

다음 엔드포인트 정책 예제는 지정된 리포지토리가 삭제되는 것을 방지합니다.

{ "Statement": [{ "Sid": "AllowAll", "Principal": "*", "Action": "*", "Effect": "Allow", "Resource": "*" }, { "Sid": "PreventDelete", "Principal": "*", "Action": "ecr:DeleteRepository", "Effect": "Deny", "Resource": "arn:aws:ecr:region:1234567890:repository/repository_name" } ] }

다음 엔드포인트 정책 예제는 앞의 두 예제를 단일 정책에 결합합니다.

{ "Statement": [{ "Sid": "AllowAll", "Effect": "Allow", "Principal": "*", "Action": "*", "Resource": "*" }, { "Sid": "PreventDelete", "Effect": "Deny", "Principal": "*", "Action": "ecr:DeleteRepository", "Resource": "arn:aws:ecr:region:1234567890:repository/repository_name" }, { "Sid": "AllowPull", "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::1234567890:role/role_name" }, "Action": [ "ecr:BatchGetImage", "ecr:GetDownloadUrlForLayer", "ecr:GetAuthorizationToken" ], "Resource": "*" } ] }
Amazon ECR에 대한 VPC 엔드포인트 정책을 수정하는 방법
  1. https://console.aws.amazon.com/vpc/에서 Amazon VPC 콘솔을 엽니다.

  2. 탐색 창에서 엔드포인트를 선택합니다.

  3. Amazon ECR에 대한 VPC 엔드포인트를 아직 생성하지 않은 경우 Amazon ECR용 VPC 엔드포인트 생성 단원을 참조하십시오.

  4. 정책을 추가할 Amazon ECR VPC 엔드포인트를 선택하고 화면 하단의 정책(Policy) 탭을 선택합니다.

  5. 정책 편집(Edit Policy)을 선택하고 정책을 변경합니다.

  6. 저장(Save)을 선택하여 정책을 저장합니다.

공유 서브넷

공유하는 서브넷의 VPC 엔드포인트는 생성, 설명, 수정 또는 삭제할 수 없습니다. 그러나 공유하는 서브넷의 VPC 엔드포인트를 사용할 수는 있습니다.