기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
Amazon ECS 태스크 실행 IAM 역할
태스크 실행 IAM 역할은 Amazon ECS 컨테이너 에이전트 및 Fargate 에이전트에 사용자를 대신하여 AWS API 호출을 수행할 권한을 부여합니다. 태스크의 요구 사항에 따라 태스크 실행 IAM 역할이 필요합니다. 계정과 연결된 다른 용도 및 서비스에 사용할 여러 태스크 실행 역할이 있을 수 있습니다. 애플리케이션을 실행하는 데 필요한 IAM 권한은 을 참조하십시오.태스크 IAM 역할.
태스크 실행 IAM 역할의 일반 사용 사례는 다음과 같습니다.
-
태스크는 AWS Fargate 또는 외부 인스턴스에 호스팅되며
-
Amazon ECR 프라이빗 리포지토리에서 컨테이너 이미지를 가져옵니다.
-
작업을 실행하는 계정과 다른 계정의 Amazon ECR 사설 리포지토리에서 컨테이너 이미지를 가져오는 중입니다.
-
컨테이너 로그를 로 전송합니다. CloudWatch 를 사용한 로그
awslogs
로그 드라이버. 자세한 정보는 awslogs 로그 드라이버 사용을 참조하세요.
-
-
태스크는 AWS Fargate 또는 Amazon EC2 인스턴스에 호스팅되며
-
프라이빗 레지스트리 인증을 사용합니다. 자세한 정보는 프라이빗 레지스트리 인증에 대한 필수 IAM 권한 섹션을 참조하세요.
-
태스크 정의에서 Secrets Manager 암호 또는 AWS Systems Manager 파라미터 스토어 파라미터를 사용하여 민감한 데이터를 참조합니다. 자세한 정보는 Amazon ECS 암호에 대한 필수 IAM 권한 섹션을 참조하세요.
-
참고
태스크 실행 역할은 Amazon ECS 컨테이너 에이전트 버전 1.16.0 이상에서 지원됩니다.
Amazon ECS는 위에서 설명한 일반 사용 사례에 필요한 권한을 포함하는 AmazonECSTaskExecutionRolePolicy
라는 관리형 정책을 제공합니다. 아래에 간단히 설명한 특수 사용 사례에서는 인라인 정책을 작업 실행 역할에 추가해야 할 수도 있습니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecr:GetAuthorizationToken", "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*" } ] }
Amazon ECS 태스크 실행 역할은 Amazon ECS 콘솔에서 사용자에 대해 생성됩니다. 하지만 향후 기능 및 개선 사항이 도입될 때 Amazon ECS가 이에 대한 권한을 추가할 수 있도록 하려면 태스크에 대한 관리형 IAM 정책을 수동으로 연결해야 합니다. 다음 절차를 사용하여 사용자 계정에 이미 Amazon ECS 태스크 실행 역할이 있는지 확인하고 필요할 경우 관리형 IAM 정책을 연결할 수 있습니다.
IAM 콘솔에서 작업 실행(ecsTaskExecutionRole
) 역할 확인
https://console.aws.amazon.com/iam/
에서 IAM 콘솔을 엽니다. -
탐색 창에서 역할(Roles)을 선택합니다.
-
검색 상자에
ecsTaskExecutionRole
을(를) 입력합니다. 역할이 있는 경우 해당 역할을 선택하여 연결된 정책을 확인합니다. -
에사용 권한탭에서 다음을 확인하십시오.아마존 ECSTaskExecutionRolePolicy역할에 연결되어 있습니다.
-
권한 추가(Add Permissions), 정책 연결(Attach policies)을 선택합니다.
-
첨부할 수 있는 정책의 범위를 좁히려면필터, 입력아마존 ECSTaskExecutionRolePolicy.
-
왼쪽에 있는 체크박스를 체크하세요.아마존 ECSTaskExecutionRolePolicy정책을 선택한 다음 선택하십시오.정책 연결.
-
-
신뢰 관계(Trust relationships)를 선택합니다.
-
신뢰 관계에 다음 정책이 포함되어 있는지 확인합니다. 신뢰 관계가 아래 정책과 일치하는 경우, 취소(Cancel)를 선택합니다. 신뢰 관계가 일치하지 않는 경우 신뢰 정책 편집(Edit trust policy)을 선택하고 정책을 정책 문서(Policy Document) 창에 복사하고 정책 업데이트(Update policy)를 선택합니다.
{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ecs-tasks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
작업 실행(ecsTaskExecutionRole
) 역할 생성
계정에 아직 태스크 실행 역할이 없는 경우 다음 단계를 사용하여 역할을 만듭니다.
태스크 실행 IAM 역할을 생성하는 방법(AWS Management Console)
https://console.aws.amazon.com/iam/
에서 IAM 콘솔을 엽니다. -
탐색 창에서 역할(Roles), 역할 생성(Create role)을 선택합니다.
-
신뢰할 수 있는 엔터티 유형(Trusted entity type) 섹션에서 AWS 서비스, Elastic Container Service를 선택합니다.
-
Use case(사용 사례)에서 Elastic Container Service Task(Elastic Container Service 작업)를 선택하고 Next(다음)를 선택합니다.
-
권한 정책 연결(Attach permissions policy) 섹션에서 다음을 수행합니다.
검색 대상아마존 ECSTaskExecutionRolePolicy그런 다음 정책을 선택합니다.
권한 경계 설정(Set permissions boundary)(선택 사항)에서 선택권한 경계 없이 역할 만들기(Create role without a permissions boundary)를 선택합니다.
다음을 선택합니다.
-
역할 세부 정보(Role details)에서 다음을 수행합니다.
-
역할 이름(Role name)에
ecsTaskExecutionRole
을(를) 입력합니다. -
태그 추가(Add tags)(선택 사항)에서 정책과 연결할 사용자 지정 태그를 지정합니다.
-
-
역할 생성을 선택합니다.
태스크 실행 IAM 역할을 생성하는 방법(AWS CLI)
-
IAM 역할에 사용할 신뢰 정책이 포함된
ecs-tasks-trust-policy.json
이라는 이름의 파일을 생성합니다. 파일에 다음을 포함해야 합니다.{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "Service": "ecs-tasks.amazonaws.com" }, "Action": "sts:AssumeRole" } ] }
-
이전 단계에서 만든 신뢰 정책을 사용하여
ecsTaskExecutionRole
이라는 IAM 역할을 생성합니다.aws iam create-role \ --role-name
ecsTaskExecutionRole
\ --assume-role-policy-document file://ecs-tasks-trust-policy.json
-
AWS 관리형
AmazonECSTaskExecutionRolePolicy
정책을ecsTaskExecutionRole
역할에 연결합니다. 이 정책은 다음과 같은 액세스 권한을 제공합니다.aws iam attach-role-policy \ --role-name
ecsTaskExecutionRole
\ --policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSTaskExecutionRolePolicy
프라이빗 레지스트리 인증에 대한 필수 IAM 권한
Amazon ECS 태스크 실행 역할은 이 기능을 사용해야 합니다. 컨테이너 에이전트는 이 기능을 통해 컨테이너 이미지를 가져올 수 있습니다.
생성하는 암호에 액세스 권한을 부여하려면 다음 권한을 인라인 정책으로 태스크 실행 역할에 추가하세요. 자세한 정보는 IAM 정책 추가 및 제거 섹션을 참조하세요.
-
secretsmanager:GetSecretValue
-
kms:Decrypt
―사용자 키가 기본 KMS 키가 아닌 사용자 지정 KMS 키를 사용하는 경우에만 필요합니다. 사용자 지정 키의 Amazon 리소스 이름(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" ] } ] }
Amazon ECS 암호에 대한 필수 IAM 권한
Amazon ECS 암호 기능을 사용하려면 Amazon ECS 태스크 실행 역할이 있어야 하며 태스크 정의에서 해당 역할을 참조해야 합니다. 이렇게 하면 컨테이너 에이전트가 필요한 AWS Systems Manager 또는 Secrets Manager 리소스를 가져올 수 있습니다. 자세한 정보는 민감한 데이터를 컨테이너에 전달을 참조하세요.
시크릿 매니저 사용
사용자가 생성한 Secrets Manager 보안 암호에 대한 액세스 권한을 제공하려면 작업 실행 역할에 다음 권한을 수동으로 추가합니다. 권한 관리 방법에 대한 자세한 내용은 IAM 사용 설명서의 IAM 자격 증명 권한 추가 및 제거를 참조하세요.
-
secretsmanager:GetSecretValue
– Secrets Manager 보안 암호를 참조하는 경우에 필요합니다. 시크릿 매니저에서 시크릿을 검색할 수 있는 권한을 추가합니다.
다음 예제에서는 정책이 필수 권한을 추가합니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:
region
:aws_account_id
:secret:secret_name
" ] } ] }
시스템 관리자 사용
중요
EC2 시작 유형을 사용하는 태스크의 경우, 이 기능을 사용하려면 ECS 에이전트 구성 변수인 ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE=true
를 사용해야 합니다. 컨테이너 인스턴스를 생성할 때 이를 ./etc/ecs/ecs.config
파일에 추가하거나 기존 인스턴스에 추가한 다음 ECS 에이전트를 다시 시작할 수 있습니다. 자세한 정보는 Amazon ECS 컨테이너 에이전트 구성을 참조하세요.
사용자가 생성한 Systems Manager Parameter Store 파라미터에 대한 액세스 권한을 제공하려면 작업 실행 역할에 다음 권한을 정책으로 직접 추가합니다. 권한 관리 방법에 대한 자세한 내용은 IAM 사용 설명서의 IAM 자격 증명 권한 추가 및 제거를 참조하세요.
-
ssm:GetParameters
- 작업 정의에서 Systems Manager Parameter Store 파라미터를 참조하는 경우에 필요합니다. Systems Manager 매개변수를 검색할 수 있는 권한을 추가합니다. -
secretsmanager:GetSecretValue
- Secrets Manager 보안 암호를 직접 참조하는 경우 또는 Systems Manager Parameter Store 파라미터가 작업 정의에서 Secrets Manager 보안 암호를 참조하는 경우에 필요합니다. Secrets Manager에서 암호를 검색할 수 있는 권한을 추가합니다. -
kms:Decrypt
- 보안 암호가 기본 키가 아닌 고객 관리 키를 사용하는 경우에만 필요합니다. 사용자 지정 키의 ARN을 리소스로 추가해야 합니다. 고객 관리 키의 암호를 해독할 수 있는 권한을 추가합니다.
다음 예제 정책은 필요한 권한을 추가합니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ssm:GetParameters", "secretsmanager:GetSecretValue", "kms:Decrypt" ], "Resource": [ "arn:aws:ssm:
region
:aws_account_id
:parameter/parameter_name
", "arn:aws:secretsmanager:region
:aws_account_id
:secret:secret_name
", "arn:aws:kms:region
:aws_account_id
:key/key_id
" ] } ] }
인터페이스 엔드포인트에 대해 Amazon ECR 이미지를 가져오는 Fargate 태스크에 대한 선택적 IAM 권한
인터페이스 VPC 엔드포인트를 사용하도록 Amazon ECR을 구성한 경우 Amazon ECR에서 이미지를 가져오는 Fargate 시작 유형을 사용하는 태스크를 시작할 때 특정 VPC 또는 VPC 엔드포인트에 대한 태스크 액세스를 제한할 수 있습니다. 이를 위해선 IAM 조건 키를 사용하는 태스크에 대한 태스크 실행 역할을 생성합니다.
다음 IAM 전역 조건 키를 사용하여 특정 VPC 또는 VPC 엔드포인트에 대한 액세스를 제한합니다. 자세한 정보는 AWS 전역 조건 컨텍스트 키를 참조하세요.
-
aws:SourceVpc
―특정 VPC에 대한 액세스를 제한합니다. -
aws:SourceVpce
―특정 VPC 엔드포인트에 대한 액세스를 제한합니다.
다음 태스크 실행 역할 정책은 조건 키 추가에 대한 예를 제공합니다.
중요
The ecr:GetAuthorizationToken
API 작업에는 다음이 포함될 수 없습니다.aws:sourceVpc
또는aws:sourceVpce
조건 키가 적용된 이유는 GetAuthorizationToken API 호출은 에서 소유한 엘라스틱 네트워크 인터페이스를 거칩니다.AWS작업의 엘라스틱 네트워크 인터페이스가 아닌 Fargate를 사용합니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "ecr:GetAuthorizationToken", "logs:CreateLogStream", "logs:PutLogEvents" ], "Resource": "*" }, { "Effect": "Allow", "Action": [ "ecr:BatchCheckLayerAvailability", "ecr:GetDownloadUrlForLayer", "ecr:BatchGetImage" ], "Resource": "*", "Condition": { "StringEquals": { "aws:sourceVpce": "
vpce-xxxxxx
", "aws:sourceVpc": "vpc-xxxxx
" } } } ] }