Amazon Elastic Container Service가 IAM과 함께 작동하는 방식

Amazon Elastic Container Service가 IAM과 함께 작동하는 방식

IAM을 사용해 Amazon ECS에 대한 접근을 관리하기 전에 Amazon ECS와 함께 사용할 수 있는 IAM 기능을 알아보세요. 이 글에서는 Amazon ECS가 지원하는 IAM 기능을 다룹니다.

출처: 문서

본문

IAM을 사용해 Amazon ECS에 대한 접근을 관리하기 전에 Amazon ECS와 함께 사용할 수 있는 IAM 기능을 알아보세요.

IAM 기능 Amazon ECS 지원
아이덴티티 기반 정책(Identity-based policies) 예
리소스 기반 정책(Resource-based policies) 아니요
정책 액션(Policy actions) 예
정책 리소스(Policy resources) 부분적(Partial)
정책 조건 키(Policy condition keys) 예
ACL 아니요
ABAC(정책의 태그) 예
임시 자격 증명(Temporary credentials) 예
Forward access sessions (FAS) 예
서비스 역할(Service roles) 예
서비스 연결 역할(Service-linked roles) 예

Amazon ECS와 다른 AWS 서비스가 대부분의 IAM 기능과 함께 작동하는 방법에 대한 개요는 IAM 사용자 가이드의 IAM과 함께 작동하는 AWS 서비스 문서를 참고하세요.

Amazon ECS용 아이덴티티 기반 정책 (Identity-based policies for Amazon ECS)

아이덴티티 기반 정책 지원: 예

아이덴티티 기반 정책은 IAM 사용자, 사용자 그룹, 역할 같은 아이덴티티에 연결할 수 있는 JSON 권한 정책 문서입니다. 이 정책은 사용자와 역할이 어떤 리소스에서, 어떤 조건에서 어떤 작업을 수행할 수 있는지 제어합니다. 아이덴티티 기반 정책을 만드는 방법은 IAM 사용자 가이드의 고객 관리형 정책으로 사용자 지정 IAM 권한 정의 문서를 참고하세요.

IAM 아이덴티티 기반 정책으로 허용 또는 거부된 작업과 리소스, 그리고 작업이 허용되거나 거부되는 조건을 지정할 수 있어요. JSON 정책에서 사용할 수 있는 모든 요소에 대해 알아보려면 IAM 사용자 가이드의 IAM JSON 정책 요소 참조 문서를 참고하세요.

Amazon ECS 아이덴티티 기반 정책 예시

Amazon ECS 아이덴티티 기반 정책 예시를 보려면 Amazon Elastic Container Service용 아이덴티티 기반 정책 예시 문서를 참고하세요.

Amazon ECS 내 리소스 기반 정책 (Resource-based policies within Amazon ECS)

리소스 기반 정책 지원: 아니요

리소스 기반 정책은 리소스에 연결하는 JSON 정책 문서입니다. 리소스 기반 정책의 예로는 IAM 역할 신뢰 정책과 Amazon S3 버킷 정책이 있습니다. 리소스 기반 정책을 지원하는 서비스에서 서비스 관리자는 이를 사용해 특정 리소스에 대한 접근을 제어할 수 있어요. 정책이 연결된 리소스에 대해 정책은 지정된 보안 주체(principal)가 해당 리소스에서 어떤 조건에서 어떤 작업을 수행할 수 있는지 정의합니다. 리소스 기반 정책에는 보안 주체를 지정해야 합니다. 보안 주체에는 계정, 사용자, 역할, 페더레이션 사용자 또는 AWS 서비스가 포함될 수 있습니다.

교차 계정 접근을 활성화하려면 리소스 기반 정책의 보안 주체로 전체 계정 또는 다른 계정의 IAM 엔터티를 지정할 수 있어요. 자세한 내용은 IAM 사용자 가이드의 IAM의 교차 계정 리소스 접근 문서를 참고하세요.

Amazon ECS용 정책 액션 (Policy actions for Amazon ECS)

정책 액션 지원: 예

관리자는 AWS JSON 정책을 사용해 누가 무엇에 접근할 수 있는지, 즉 어떤 보안 주체가 어떤 리소스에서 어떤 조건에서 어떤 작업을 수행할 수 있는지 지정할 수 있어요.

JSON 정책의 Action 요소는 정책에서 접근을 허용하거나 거부하는 데 사용할 수 있는 작업을 설명합니다. 관련 작업 수행 권한을 부여하려면 정책에 작업을 포함하세요.

Amazon ECS 작업 목록은 Service Authorization Reference의 Amazon Elastic Container Service가 정의한 작업 문서를 참고하세요. Amazon ECS의 정책 액션은 액션 앞에 다음 접두사를 사용합니다:

ecs

단일 문에서 여러 작업을 지정하려면 쉼표로 구분하세요.

"Action": [
      "ecs:action1",
      "ecs:action2"
         ]

와일드카드(*)를 사용해 여러 작업을 지정할 수 있어요. 예를 들어 Describe라는 단어로 시작하는 모든 작업을 지정하려면 다음 액션을 포함합니다:

"Action": "ecs:Describe*"

Amazon ECS 아이덴티티 기반 정책 예시를 보려면 Amazon Elastic Container Service용 아이덴티티 기반 정책 예시 문서를 참고하세요.

Amazon ECS용 정책 리소스 (Policy resources for Amazon ECS)

정책 리소스 지원: 부분적(Partial)

관리자는 AWS JSON 정책을 사용해 누가 무엇에 접근할 수 있는지 지정할 수 있어요. JSON 정책의 Resource 요소는 작업이 적용되는 객체를 지정합니다. 모범 사례로 리소스를 Amazon 리소스 이름(ARN)으로 지정하세요. 리소스 수준 권한을 지원하지 않는 작업에는 와일드카드(*)를 사용해 문이 모든 리소스에 적용됨을 나타냅니다.

"Resource": "*"

Amazon ECS 리소스 유형과 해당 ARN 목록은 Service Authorization Reference의 Amazon Elastic Container Service가 정의한 리소스 문서를 참고하세요. 각 리소스의 ARN을 지정할 수 있는 작업은 Amazon Elastic Container Service가 정의한 작업 문서를 참고하세요.

일부 Amazon ECS API 작업은 여러 리소스를 지원합니다. 예를 들어 DescribeClusters API 작업을 호출할 때 여러 클러스터를 참조할 수 있어요. 단일 문에서 여러 리소스를 지정하려면 ARN을 쉼표로 구분하세요.

"Resource": [
      "EXAMPLE-RESOURCE-1",
      "EXAMPLE-RESOURCE-2"

예를 들어 Amazon ECS 클러스터 리소스는 다음 ARN을 가집니다:

arn:${Partition}:ecs:${Region}:${Account}:cluster/${clusterName}

문에서 my-cluster-1과 my-cluster-2 클러스터를 지정하려면 다음 ARN을 사용합니다:

"Resource": [
         "arn:aws:ecs:us-east-1:123456789012:cluster/my-cluster-1",
         "arn:aws:ecs:us-east-1:123456789012:cluster/my-cluster-2"
      ]

특정 계정에 속한 모든 클러스터를 지정하려면 와일드카드(*)를 사용합니다:

"Resource": "arn:aws:ecs:us-east-1:123456789012:cluster/*"

태스크 정의의 경우 최신 개정 또는 특정 개정을 지정할 수 있어요. 태스크 정의의 모든 개정을 지정하려면 와일드카드(*)를 사용합니다:

"Resource:arn:${Partition}:ecs:${Region}:${Account}:task-definition/${TaskDefinitionFamilyName}:*"

특정 태스크 정의 개정을 지정하려면 ${TaskDefinitionRevisionNumber}를 사용합니다:

"Resource:arn:${Partition}:ecs:${Region}:${Account}:task-definition/${TaskDefinitionFamilyName}:${TaskDefinitionRevisionNumber}"

Amazon ECS 아이덴티티 기반 정책 예시를 보려면 Amazon Elastic Container Service용 아이덴티티 기반 정책 예시 문서를 참고하세요.

Amazon ECS용 정책 조건 키 (Policy condition keys for Amazon ECS)

서비스별 정책 조건 키 지원: 예

관리자는 AWS JSON 정책을 사용해 누가 무엇에 접근할 수 있는지 지정할 수 있어요. Condition 요소는 정의된 기준에 따라 문이 언제 실행되는지 지정합니다. 정책의 조건을 요청의 값과 일치시키기 위해 equals 또는 less than 같은 조건 연산자를 사용하는 조건식을 만들 수 있습니다. 모든 AWS 전역 조건 키 목록은 IAM 사용자 가이드의 AWS 전역 조건 컨텍스트 키 문서를 참고하세요.

Amazon ECS는 IAM 정책에 대한 세분화된 필터링을 제공하는 다음 서비스별 조건 키를 지원합니다:

조건 키 설명 평가 유형
aws:RequestTag/${TagKey} 컨텍스트 키 형식은 "aws:RequestTag/ tag-key ":" tag-value "이며 tag-key와 tag-value는 태그 키와 값 쌍입니다. 태그 키-값 쌍이 AWS 요청에 있는지 확인합니다. 예를 들어 요청에 태그 키 "Dept"와 값 "Accounting"이 포함되어 있는지 확인할 수 있어요. String
aws:ResourceTag/${TagKey} 컨텍스트 키 형식은 "aws:ResourceTag/ tag-key ":" tag-value "입니다. 아이덴티티 리소스(사용자 또는 역할)에 연결된 태그가 지정된 키 이름과 값과 일치하는지 확인합니다. String
aws:TagKeys 컨텍스트 키 형식은 "aws:TagKeys":" tag-key "이며 tag-key는 값이 없는 태그 키 목록입니다(예: ["Dept","Cost-Center"]). AWS 요청에 있는 태그 키를 확인합니다. String
ecs:ResourceTag/${TagKey} 컨텍스트 키 형식은 "ecs:ResourceTag/ tag-key ":" tag-value "입니다. 아이덴티티 리소스(사용자 또는 역할)에 연결된 태그가 지정된 키 이름과 값과 일치하는지 확인합니다. String
ecs:account-setting 컨텍스트 키 형식은 "ecs:account-setting":" account-setting "이며 account-setting은 계정 설정의 이름입니다. String
ecs:auto-assign-public-ip 컨텍스트 키 형식은 "ecs:auto-assign-public-ip":" value "이며 value는 "true" 또는 "false"입니다. String
ecs:capacity-provider 컨텍스트 키 형식은 "ecs:capacity-provider":" capacity-provider-arn "이며 capacity-provider-arn은 capacity provider의 ARN입니다. ARN, Null
ecs:cluster 컨텍스트 키 형식은 "ecs:cluster":" cluster-arn "이며 cluster-arn은 Amazon ECS 클러스터의 ARN입니다. ARN, Null
ecs:compute-compatability 컨텍스트 키 형식은 "ecs:compute-compatability":" compatability-type "이며 compatability-type은 "FARGATE", "EC2" 또는 "EXTERNAL"입니다. String
ecs:container-instances 컨텍스트 키 형식은 "ecs:container-instances":" container-instance-arns "이며 container-instance-arns는 하나 이상의 컨테이너 인스턴스 ARN입니다. ARN, Null
ecs:container-name 컨텍스트 키 형식은 "ecs:container-name":" container-name "이며 container-name은 태스크 정의에 정의된 Amazon ECS 컨테이너의 이름입니다. String
ecs:enable-execute-command 컨텍스트 키 형식은 "ecs:enable-execute-command":" value "이며 value는 "true" 또는 "false"입니다. String
ecs:enable-service-connect 컨텍스트 키 형식은 "ecs:enable-service-connect":" value "이며 value는 "true" 또는 "false"입니다. String
ecs:enable-ebs-volumes 컨텍스트 키 형식은 "ecs:enable-ebs-volumes":" value "이며 value는 "true" 또는 "false"입니다. String
ecs:enable-managed-tags 컨텍스트 키 형식은 "ecs:enable-managed-tags":" value "이며 value는 "true" 또는 "false"입니다. String
ecs:enable-vpc-lattice 컨텍스트 키 형식은 "ecs:vpc-lattice":" value "이며 value는 "true" 또는 "false"입니다. String
ecs:fargate-ephemeral-storage-kms-key 컨텍스트 키 형식은 "ecs:fargate-ephemeral-storage-kms-key":" key "이며 key는 AWS KMS 키의 ID입니다. String
ecs:namespace 컨텍스트 키 형식은 "ecs:namespace":" namespace-arn "이며 namespace-arn은 AWS Cloud Map 네임스페이스의 ARN입니다. ARN, Null
ecs:propagate-tags 컨텍스트 키 형식은 "ecs:propagate-tags":" value "이며 value는 "TASK_DEFINITION", "SERVICE" 또는 "NONE"입니다. String
ecs:service 컨텍스트 키 형식은 "ecs:service":" service-arn "이며 service-arn은 Amazon ECS 서비스의 ARN입니다. ARN, Null
ecs:task-definition 컨텍스트 키 형식은 "ecs:task-definition":" task-definition-arn "이며 task-definition-arn은 Amazon ECS 태스크 정의의 ARN입니다. ARN, Null
ecs:subnet 컨텍스트 키 형식은 "ecs:subnet":" subnets "이며 subnets는 awsvpc 모드를 사용하는 태스크 또는 서비스의 서브넷입니다. String
ecs:task 컨텍스트 키 형식은 "ecs:task":" task-arn "이며 task-arn은 Amazon ECS 서비스의 ARN입니다. ARN, Null
ecs:task-cpu 컨텍스트 키 형식은 "ecs:task-cpu":" task-cpu "이며 task-cpu는 태스크 CPU로, 1024 = 1 vCPU인 정수입니다. Integer
ecs:task-memory 컨텍스트 키 형식은 "ecs:task-memory":" task-memory "이며 task-memory는 MiB 단위의 태스크 메모리입니다. Integer

Amazon ECS 조건 키 목록은 Service Authorization Reference의 Amazon Elastic Container Service 조건 키 문서를 참고하세요. 조건 키를 사용할 수 있는 작업과 리소스는 Amazon Elastic Container Service가 정의한 작업 문서를 참고하세요.

Amazon ECS 아이덴티티 기반 정책 예시를 보려면 Amazon Elastic Container Service용 아이덴티티 기반 정책 예시 문서를 참고하세요.

Amazon ECS의 ACL(액세스 제어 목록) (Access control lists (ACLs) in Amazon ECS)

ACL 지원: 아니요

ACL(액세스 제어 목록)은 어떤 보안 주체(계정 구성원, 사용자, 역할)가 리소스에 접근할 수 있는 권한이 있는지 제어합니다. ACL은 리소스 기반 정책과 유사하지만 JSON 정책 문서 형식을 사용하지 않습니다.

Amazon ECS와 함께하는 ABAC(속성 기반 접근 제어) (Attribute-based access control (ABAC) with Amazon ECS)

중요: Amazon ECS는 모든 Amazon ECS 리소스에 대한 속성 기반 접근 제어를 지원합니다. 액션을 범위 지정하기 위해 속성을 사용할 수 있는지 확인하려면 Service Authorization Reference의 Amazon ECS가 정의한 작업 표를 사용하세요. 먼저 Resource 열에 리소스가 있는지 확인한 다음 Condition keys 열을 사용해 해당 작업/리소스 조합의 키를 확인합니다.

ABAC(정책의 태그) 지원: 예

ABAC(속성 기반 접근 제어)는 태그라는 속성을 기반으로 권한을 정의하는 인가 전략입니다. IAM 엔터티와 AWS 리소스에 태그를 연결한 다음 보안 주체의 태그가 리소스의 태그와 일치할 때 작업을 허용하도록 ABAC 정책을 설계할 수 있어요.

태그를 기반으로 접근을 제어하려면 aws:ResourceTag/ key-name, aws:RequestTag/ key-name, aws:TagKeys 조건 키를 사용해 정책의 조건 요소에 태그 정보를 제공합니다. 서비스가 모든 리소스 유형에 대해 세 가지 조건 키를 모두 지원한다면 값은 Yes입니다. 서비스가 일부 리소스 유형에 대해서만 세 가지 조건 키를 모두 지원한다면 값은 Partial입니다.

더 알아보기 (Learn more)

  • Amazon ECS IAM 정책과 조건 키에 대한 자세한 내용은 AWS 개발자 가이드의 관련 문서를 참고하세요.