Amazon Elastic Container Service
개발자 안내서 (API 버전 2014-11-13)

Amazon ECS 컨테이너 인스턴스 IAM 역할

Amazon ECS 컨테이너 에이전트는 Amazon ECS API를 자동으로 호출합니다. 에이전트를 실행하는 컨테이너 인스턴스는 해당 에이전트의 소유자를 확인하기 위해 서비스에 대한 IAM 정책과 역할을 요구합니다. 컨테이너 인스턴스를 시작해 클러스터에 등록하기 전에 인스턴스가 시작될 때 사용할 이러한 컨테이너 인스턴스의 IAM 역할을 생성해야 합니다. 이 요구 사항은 Amazon이 제공하는 Amazon ECS 최적화 AMI 또는 에이전트를 실행하려는 그 밖의 인스턴스를 사용하여 시작된 컨테이너 인스턴스에 적용됩니다.

중요

이 역할은 EC2 시작 유형을 사용하는 경우에만 적용됩니다.

중요

컨테이너 인스턴스에서 실행되는 컨테이너는 인스턴스 메타데이터를 통해 컨테이너 인스턴스 역할에 제공된 모든 권한에 액세스할 수 있습니다. 컨테이너 인스턴스 역할의 권한을 아래 나온 관리형 AmazonEC2ContainerServiceforEC2Role 정책에서 제공된 최소 권한 목록으로 제한하는 것이 좋습니다. 작업의 컨테이너에 여기 나열되지 않은 추가 권한이 필요할 경우, 이러한 작업에 자체 IAM 역할을 제공하는 것이 좋습니다. 자세한 내용은 작업에 대한 IAM 역할 단원을 참조하십시오.

컨테이너 인스턴스에서 다음의 iptables 명령을 실행하여 docker0 브리지의 컨테이너가 컨테이너 인스턴스 역할에 제공된 권한에 액세스하는 것을 방지할 수 있습니다(작업에 대한 IAM 역할 역할에 의해 제공되는 권한은 계속 허용). 하지만 이 규칙이 적용된 상태에서 컨테이너가 인스턴스 메타데이터를 쿼리할 수 있습니다. 단, 이 명령은 기본 도커 브리지 구성을 가정하며, host 네크워크 모드를 사용하는 컨테이너에는 적용되지 않습니다. 자세한 내용은 네트워크 모드 단원을 참조하십시오.

sudo iptables --insert FORWARD 1 --in-interface docker+ --destination 169.254.169.254/32 --jump DROP

재부팅 시 이 iptables 규칙이 유지되게 하려면 규칙을 컨테이너 인스턴스에 저장해야 합니다. Amazon ECS 최적화 AMI의 경우 다음 명령을 사용하십시오. 다른 운영 체제의 경우 해당 운영 체제 설명서를 참조하십시오.

sudo service iptables save

AmazonEC2ContainerServiceforEC2Role 정책은 아래 나와 있습니다.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecs:CreateCluster", "ecs:DeregisterContainerInstance", "ecs:DiscoverPollEndpoint", "ecs:Poll", "ecs:RegisterContainerInstance", "ecs:StartTelemetrySession", "ecs:Submit*", "ecr:GetAuthorizationToken", "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*" } ] }

참고

컨테이너 인스턴스를 등록하려는 클러스터가 이미 존재하는 경우 위 정책의 ecs:CreateCluster 줄은 선택적입니다. 클러스터가 이미 존재하지 않으면 에이전트에 클러스터를 만들 권한이 있거나 사용자가 컨테이너 인스턴스를 시작하기 전에 create-cluster 명령을 사용하여 클러스터를 만들어야 합니다.

ecs:CreateCluster 행을 생략하면 Amazon ECS 컨테이너 에이전트가 기본 클러스터를 포함하는 클러스터를 만들 수 없습니다.

위 정책의 ecs:Poll 줄은 Amazon ECS 서비스에 연결하여 상태를 보고하고 명령을 가져오는 권한을 에이전트에 부여하는 데 사용됩니다.

Amazon ECS 인스턴스 역할은 콘솔 처음 실행에서 사용자에 대해 자동으로 생성됩니다. 하지만 장래 기능 및 향상이 도입될 때 Amazon ECS가 이에 대한 권한을 추가할 수 있도록 하려면 컨테이너 인스턴스의 관리형 IAM 정책을 수동으로 연결해야 합니다. 다음 절차를 사용하여 사용자의 계정에 이미 Amazon ECS 인스턴스 역할이 있는지 확인하고 필요할 경우에 관리형 IAM 정책을 연결할 수 있습니다.

IAM 콘솔에서 ecsInstanceRole을 확인하려면

  1. https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

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

  3. 역할 목록에서 ecsInstanceRole을 검색합니다. 역할이 존재하지 않을 경우, 아래 절차를 사용하여 역할을 생성합니다. 역할이 존재하지 않을 경우, 연결된 정책을 볼 역할을 선택합니다.

  4. Permissions 탭을 선택합니다.

  5. Managed Policies 섹션에서 AmazonEC2ContainerServiceforEC2Role 관리형 정책이 역할에 연결되어 있는지 확인합니다. 정책이 연결된 경우, Amazon ECS 인스턴스 역할이 적절히 구성된 것입니다. 그렇지 않다면 아래의 하위 단계에 따라 정책을 연결합니다.

    1. Attach Policy를 선택합니다.

    2. Filter 상자에 AmazonEC2ContainerServiceforEC2Role을 입력해 연결에 사용할 수 있는 정책의 범위를 좁힙니다.

    3. AmazonEC2ContainerServiceforEC2Role 정책 왼쪽의 확인란을 선택하고 Attach Policy를 선택합니다.

  6. Trust Relationships 탭을 선택하고 Edit Trust Relationship을 선택합니다.

  7. 신뢰 관계에 다음 정책이 포함되어 있는지 확인합니다. 신뢰 관계가 아래 정책과 일치하는 경우, Cancel을 선택합니다. 신뢰 관계가 일치하지 않는 경우, 정책을 Policy Document 창에 복사하고 Update Trust Policy를 선택합니다.

    { "Version": "2008-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }

컨테이너 인스턴스의 ecsInstanceRoleIAM 역할을 생성하려면

  1. https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

  2. 탐색 창에서 [Roles]를 선택한 후 [Create role]을 선택합니다.

  3. AWS 서비스 역할 유형을 선택한 다음 Elastic Container Service를 선택합니다.

  4. [EC2 Role for Elastic Container Service] 사용 사례를 선택하고 [Next: Permissions]를 선택합니다.

  5. 연결된 권한 정책 섹션에서 AmazonEC2ContainerServiceforEC2Role을 선택한 후 다음: 검토를 선택합니다.

  6. [Role name]에 ecsInstanceRole을 입력하고 필요한 경우 설명을 입력합니다.

  7. 역할 정보를 검토한 후 [Create role]을 선택하여 마칩니다.

컨테이너 인스턴스 역할에 Amazon S3 읽기 전용 액세스 추가하기

Amazon S3에서 구성 정보를 프라이빗 버킷에 저장하고 컨테이너 인스턴스 IAM 역할에 읽기 전용 액세스를 부여하는 것이 시작 시 컨테이너 인스턴스 구성을 허용하는 안전하고 편리한 방법입니다. ecs.config 파일의 사본을 프라이빗 버킷에 저장했다가 인스턴스가 시작할 때 Amazon EC2 사용자 데이터를 사용하여 AWS CLI를 설치하고 구성 정보를 /etc/ecs/ecs.config에 복사할 수 있습니다.

ecs.config 파일을 생성하여 Amazon S3에 저장하고 이 구성으로 인스턴스를 시작하는 자세한 방법은 Amazon S3에서 컨테이너 인스턴스 구성 저장 단원을 참조하십시오.

컨테이너 인스턴스 역할에 Amazon S3 읽기 전용 액세스를 허용하려면

  1. https://console.aws.amazon.com/iam/에서 IAM 콘솔을 엽니다.

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

  3. 컨테이너 인스턴스에서 사용할 IAM 역할을 선택합니다(이 역할의 제목은 ecsInstanceRole일 수 있음). 자세한 내용은 Amazon ECS 컨테이너 인스턴스 IAM 역할 단원을 참조하십시오.

  4. [Permissions] 탭을 선택한 후 [Attach policy]를 선택합니다.

  5. [Attach policy] 페이지에서 [Filter: Policy type] 필드에 S3을 입력하여 정책 결과의 범위를 좁힙니다.

  6. [AmazonS3ReadOnlyAccess] 정책 왼쪽의 확인란을 선택하고 [Attach policy]를 클릭합니다.

    참고

    이 정책으로 모든 Amazon S3 리소스에 대한 읽기 전용 액세스가 가능합니다. 보다 제한적인 버킷 정책 예제는 Amazon Simple Storage Service 개발자 가이드의 버킷 정책 예제 단원을 참조하십시오.