태스크에 대한 개인 레지스트리 인증 - Amazon Elastic Container Service

문서의 영문과 번역 사이에 충돌이 있는 경우에는 영문 버전을 따릅니다. 번역 버전은 기계 번역을 사용하여 제공합니다.

태스크에 대한 개인 레지스트리 인증

작업에 대한 프라이빗 레지스트리 인증은 AWS Secrets Manager를 사용하기 때문에 자격 증명을 안전하게 저장한 후 컨테이너 정의에서 참조할 수 있습니다. 작업에서 프라이빗 리포지토리의 이미지를 사용할 수 있는 것도 이러한 인증 기능 때문입니다. 이 기능은 Fargate과 EC2 시작 유형을 모두 사용하는 작업에서 지원됩니다.

중요

작업 정의가 Amazon ECR에 저장된 이미지를 참조하는 경우 이 주제가 적용되지 않습니다. 자세한 내용은 을 참조하십시오. 사용 Amazon ECR 이미지 Amazon ECS 에서 Amazon Elastic Container Registry 사용 설명서.

EC2 시작 유형을 사용하는 작업에서 이 기능을 사용하려면 버전이 1.19.0 이상인 컨테이너 에이전트가 필요하지만 최신 컨테이너 에이전트 버전을 사용할 것을 권장합니다. 에이전트 버전을 확인하고 최신 버전으로 업데이트하는 방법에 대한 자세한 내용은 Amazon ECS 컨테이너 에이전트 업데이트 단원을 참조하십시오.

Fargate 시작 유형을 사용하는 작업에는 이 기능에 플랫폼 버전 1.2.0 이상이 필요합니다. 자세한 내용은 AWS Fargate 플랫폼 버전 단원을 참조하십시오.

컨테이너 정의에서 자신이 생성한 보안 암호의 전체 ARN과 함께 repositoryCredentials를 지정합니다. 참조하는 보안 암호는 암호를 사용하는 작업과 다른 리전에서 가져올 수 있지만 계정은 동일해야 합니다.

참고

Amazon ECS API, AWS CLI 또는 AWS SDK를 사용할 때 시작하는 작업과 같은 리전에 보안 암호가 존재할 경우, 보안 암호의 전체 ARN 또는 이름을 사용할 수 있습니다. AWS Management 콘솔을 사용할 때는 반드시 보안 암호의 전체 ARN이 지정되어 있어야 합니다.

다음은 필요한 파라미터를 나타낸 작업 정의의 예제 조각입니다.

"containerDefinitions": [ { "image": "private-repo/private-image", "repositoryCredentials": { "credentialsParameter": "arn:aws:secretsmanager:region:aws_account_id:secret:secret_name" } } ]
참고

프라이빗 레지스트리 인증을 활성화할 수 있는 또 한 가지 방법은 Amazon ECS 컨테이너 에이전트 환경 변수를 사용해 프라이빗 레지스트리를 인증하는 것입니다. 이 방법은 EC2 시작 유형을 사용하는 작업에만 지원됩니다. 자세한 정보는 컨테이너 인스턴스에 대한 프라이빗 레지스트리 인증 단원을 참조하십시오.

필수 IAM 개인 레지스트리 인증에 대한 권한

Amazon ECS 작업 실행 역할은 이 기능을 사용해야 합니다. 컨테이너 에이전트는 이 기능을 통해 컨테이너 이미지를 가져올 수 있습니다. 자세한 정보는 Amazon ECS 태스크 실행 IAM 역할 단원을 참조하십시오.

생성하는 보안 암호에 액세스 권한을 부여하려면 다음 권한을 인라인 정책으로 작업 실행 역할에 수동으로 추가하십시오. 자세한 내용은 IAM 정책 추가 및 제거 단원을 참조하십시오.

  • secretsmanager:GetSecretValue

  • kms:Decrypt—사용자 키가 기본 KMS 키가 아닌 사용자 지정 KMS 키를 사용하는 경우에만 필요합니다. 사용자 지정 키의 ARN을 리소스로 추가해야 합니다.

권한을 추가하는 예제 인라인 정책은 아래와 같습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "kms:Decrypt", "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:<region>:<aws_account_id>:secret:secret_name", "arn:aws:kms:<region>:<aws_account_id>:key/key_id" ] } ] }

개인 레지스트리 인증 사용

기본 보안 암호를 생성하려면

AWS Secrets Manager에서 프라이빗 레지스트리 자격 증명에 사용할 보안 암호를 생성합니다.

  1. https://console.aws.amazon.com/secretsmanager/에서 AWS Secrets Manager 콘솔을 엽니다.

  2. [Store a new secret]을 선택합니다.

  3. Select secret type(보안 암호 유형 선택)에서 Other type of secrets(다른 유형의 보안 암호)을 선택합니다.

  4. 일반 텍스트를 선택하고 다음 형식과 같이 프라이빗 레지스트리 자격 증명을 입력합니다.

    { "username" : "privateRegistryUsername", "password" : "privateRegistryPassword" }
  5. 다음을 선택합니다.

  6. Secret name으로 production/MyAwesomeAppSecret 또는 development/TestSecret 같은 선택 경로와 이름을 입력하고, Next를 선택합니다. 필요한 경우 설명을 추가하면 나중에 이 보안 암호의 용도를 기억하는 데 도움이 됩니다.

    보안 암호 이름은 ASCII 문자, 숫자 또는 다음 문자 중 하나가 되어야 합니다. /_+=.@-

  7. (선택 사항) 이때, 보안 암호에 대한 교체를 구성할 수 있습니다. 이 절차에서는 Disable automatic rotation 상태로 두고 Next를 선택합니다.

    새 보안 암호 또는 기존 보안 암호에 대한 교체를 구성하는 자세한 방법은 AWS Secrets Manager보안 암호 교체 단원을 참조하십시오.

  8. 설정을 검토한 다음 보안 암호 저장을 선택하여 Secrets Manager에 새 보안 암호로 입력한 모든 항목을 저장합니다.

프라이빗 레지스트리 인증을 사용하는 작업 정의를 생성하려면

  1. https://console.aws.amazon.com/ecs/에서 Amazon ECS 콘솔을 엽니다.

  2. 탐색 창에서 Task Definitions를 선택합니다.

  3. 에서 태스크 정의 페이지, 선택 새 태스크 정의 작성.

  4. Select launch type compatibility 페이지에서 작업의 시작 유형을 선택한 다음 Next step을 선택합니다.

    참고

    이 단계는 현재 AWS Fargate를 사용하여 Amazon ECS를 지원하는 리전에만 적용됩니다. 자세한 정보는 Amazon ECS 에 AWS Fargate 단원을 참조하십시오.

  5. 대상 태스크 정의 이름, 태스크 정의의 이름을 입력합니다. 최대 255개의 문자(대문자 및 소문자), 숫자, 하이픈 및 밑줄이 허용됩니다.

  6. Task execution role(작업 실행 역할)에서 기존 작업 실행 역할을 선택하거나, 혹은 새 역할 생성을 선택하여 사용자 역할을 하나 생성합니다. 이렇게 생성된 역할은 작업에 사용할 프라이빗 이미지를 가져올 수 있는 권한을 Amazon ECS에게 부여합니다. 자세한 정보는 필수 IAM 개인 레지스트리 인증에 대한 권한 단원을 참조하십시오.

    중요

    작업 실행 역할 필드가 나타나지 않을 경우, Configure via JSON(JSON을 통한 구성)을 선택하고 executionRoleArn 필드를 수동으로 추가하여 작업 실행 역할을 지정하십시오. 다음은 구문을 보여줍니다.

    "executionRoleArn": "arn:aws:iam::aws_account_id:role/ecsTaskExecutionRole"
  7. 작업 정의에서 각 컨테이너를 생성할 때마다 다음 단계를 수행합니다.

    1. Container Definitions(컨테이너 정의) 섹션에서 Add container(컨테이너 추가)를 선택합니다.

    2. Container name은 컨테이너의 이름을 입력합니다. 최대 255개의 문자(대문자 및 소문자), 숫자, 하이픈 및 밑줄이 허용됩니다.

    3. Image는 이미지 이름 또는 프라이빗 이미지 경로를 입력합니다. 최대 255개의 문자(대문자 및 소문자), 숫자, 하이픈 및 밑줄이 허용됩니다.

    4. Private repository authentication(프라이빗 리포지토리 인증) 옵션을 선택합니다.

    5. Secrets manager ARN(보안 암호 관리자 ARN)에서 앞에서 생성한 보안 암호의 전체 Amazon 리소스 이름(ARN)을 입력합니다. 값은 20~2048자 이내로 작성해야 합니다.

    6. 컨테이너 정의에서 사용할 나머지 필수 필드와 선택 필드를 작성합니다. Advanced container configuration(고급 컨테이너 구성) 메뉴에서는 더 많은 컨테이너 정의 파라미터가 사용됩니다. 자세한 정보는 작업 정의 파라미터 단원을 참조하십시오.

    7. Add(추가)를 선택합니다.

  8. 컨테이너를 추가하려면 생성을 선택합니다.