Amazon ECS 태스크 실행 IAM 역할
태스크 실행 IAM 역할은 Amazon ECS 컨테이너 에이전트 및 Fargate 에이전트에 사용자를 대신하여 AWS API 호출을 수행할 권한을 부여합니다. 태스크의 요구 사항에 따라 태스크 실행 IAM 역할이 필요합니다. 계정과 연결된 다른 용도 및 서비스에 사용할 여러 태스크 실행 역할이 있을 수 있습니다. 애플리케이션을 실행하는 데 필요한 IAM 권한은 Amazon ECS 작업 IAM 역할을 참조하세요.
태스크 실행 IAM 역할의 일반 사용 사례는 다음과 같습니다.
-
작업은 AWS Fargate 또는 외부 인스턴스에 호스팅됩니다. 그리고,
-
Amazon ECR 프라이빗 리포지토리에서 컨테이너 이미지를 가져옵니다.
-
작업을 실행하는 계정과 다른 계정의 Amazon ECR 프라이빗 리포지토리에서 컨테이너 이미지를 가져옵니다.
-
awslogs
로그 드라이버를 사용해 CloudWatch Logs에 컨테이너 로그를 보냅니다. 자세한 내용은 Amazon ECS 로그를 CloudWatch로 전송 단원을 참조하십시오.
-
-
작업은 AWS Fargate 또는 Amazon EC2 인스턴스에 호스팅됩니다. 그리고,
-
프라이빗 레지스트리 인증을 사용합니다. 자세한 내용은 프라이빗 레지스트리 인증 권한 단원을 참조하십시오.
-
Runtime Monitoring을 사용합니다.
-
작업 정의에서 Secrets Manager 비밀 또는 AWS Systems Manager Parameter Store 파라미터를 사용하여 민감한 데이터를 참조합니다. 자세한 내용은 Secrets Manager 또는 Systems Manager 권한 단원을 참조하십시오.
-
참고
태스크 실행 역할은 Amazon ECS 컨테이너 에이전트 버전 1.16.0 이상에서 지원됩니다.
Amazon ECS는 위에서 설명한 일반 사용 사례에 필요한 권한을 포함하는 AmazonECSTaskExecutionRolePolicy라는 관리형 정책을 제공합니다. 자세한 내용은 AWS 관리형 정책 참조 안내서의 AmazonECSTaskExecutionRolePolicy를 참조하세요. 특수 사용 사례에서는 인라인 정책을 작업 실행 역할에 추가해야 할 수도 있습니다.
Amazon ECS 콘솔에서 작업 실행 역할을 생성합니다. 향후 기능 및 개선 사항이 도입될 때 Amazon ECS가 이에 대한 권한을 추가할 수 있도록 하려면 수동으로 작업에 대한 관리형 IAM 정책을 연결할 수 있습니다. IAM 콘솔 검색을 사용하여 ecsTaskExecutionRole
을 검색하고 계정에 이미 작업 실행 역할이 있는지 확인할 수 있습니다. 자세한 내용은 IAM 사용 설명서의 IAM 콘솔 검색을 참조하세요.
인증된 사용자로 이미지를 가져오는 경우 Docker Hub의 가져오기 속도 제한
Amazon ECR 및 Amazon ECR Public을 사용하면 Docker에서 적용한 제한을 피할 수 있습니다. Amazon ECR에서 이미지를 풀하면 네트워크 풀 시간을 단축하는 데에도 도움이 되고 트래픽이 VPC를 나갈 때 데이터 전송 변경 사항이 줄어듭니다.
Fargate를 사용할 때는 repositoryCredentials
를 사용하여 프라이빗 이미지 레지스트리에 인증해야 합니다. Fargate에 호스팅된 작업의 경우 Amazon ECS 컨테이너 에이전트 환경 변수 ECS_ENGINE_AUTH_TYPE
또는 ECS_ENGINE_AUTH_DATA
를 설정하거나 ecs.config
파일을 수정할 수 없습니다. 자세한 내용은 Private registry authentication for tasks를 참조하세요.
작업 실행 역할 생성
계정에 아직 작업 실행 역할이 없는 경우 다음 단계를 사용하여 역할을 생성합니다.
역할을 생성한 후 다음 기능에 대한 추가 권한을 역할에 추가합니다.
기능 | 추가 권한 |
---|---|
Secrets Manager 자격 증명을 사용하여 컨테이너 이미지 프라이빗 리포지토리에 액세스 |
|
Systems Manager 또는 Secrets Manager를 사용하여 민감한 데이터 전달 | |
Fargate 작업에서 인터페이스 엔드포인트를 통해 Amazon ECR 이미지 가져오기 | |
Amazon S3 버킷에서 구성 파일 호스팅 | |
Container Insights를 구성하여 Amazon ECS 수명 주기 이벤트 보기 | |
Container Insights에서 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" ] } ] }
Secrets Manager 또는 Systems Manager 권한
컨테이너 에이전트가 필요한 AWS Systems Manager 또는 Secrets Manager 리소스를 가져올 수 있는 권한입니다. 자세한 내용은 Amazon ECS 컨테이너로 민감한 데이터 전달 단원을 참조하십시오.
Secrets Manager 사용
사용자가 생성한 Secrets Manager 보안 암호에 대한 액세스 권한을 제공하려면 작업 실행 역할에 다음 권한을 수동으로 추가합니다. 권한 관리 방법에 대한 자세한 내용은 IAM 사용 설명서의 IAM 자격 증명 권한 추가 및 제거를 참조하세요.
-
secretsmanager:GetSecretValue
– Secrets Manager 보안 암호를 참조하는 경우에 필요합니다. Secrets Manager에서 암호를 검색할 수 있는 권한을 추가합니다.
다음 예제에서는 정책이 필수 권한을 추가합니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue" ], "Resource": [ "arn:aws:secretsmanager:
region
:aws_account_id
:secret:secret_name
" ] } ] }
Systems Manager 사용
중요
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 작업
인터페이스 VPC 엔드포인트를 사용하도록 Amazon ECR을 구성한 경우 Amazon ECR에서 이미지를 가져오는 Fargate 시작 유형을 사용하는 태스크를 시작할 때 특정 VPC 또는 VPC 엔드포인트에 대한 태스크 액세스를 제한할 수 있습니다. 이를 위해선 IAM 조건 키를 사용하는 태스크에 대한 태스크 실행 역할을 생성합니다.
다음 IAM 전역 조건 키를 사용하여 특정 VPC 또는 VPC 엔드포인트에 대한 액세스를 제한합니다. 자세한 정보는 AWS 전역 조건 컨텍스트 키를 참조하세요.
-
aws:SourceVpc
―특정 VPC에 대한 액세스를 제한합니다. VPC를 태스크와 엔드포인트를 호스팅하는 VPC로 제한할 수 있습니다. -
aws:SourceVpce
―특정 VPC 엔드포인트에 대한 액세스를 제한합니다.
다음 태스크 실행 역할 정책은 조건 키 추가에 대한 예를 제공합니다.
{ "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
" } } } ] }
Amazon S3 파일 스토리지 권한
Amazon S3에 호스팅된 구성 파일을 지정하는 경우 태스크 실행 역할은 구성 파일에 대한 s3:GetObject
권한과 파일이 있는 Amazon S3 버킷에 대한 s3:GetBucketLocation
권한을 포함해야 합니다. 자세한 정보는 Amazon Simple Storage Service 사용 설명서의 정책에서 권한 지정을 참조하세요.
다음 정책 예제에서는 Amazon S3에서 파일을 검색하는 데 필요한 권한을 추가합니다. Amazon S3 버킷의 이름과 구성 파일 이름을 지정합니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "
s3:GetObject
" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket
/folder_name
/config_file_name
" ] }, { "Effect": "Allow", "Action": [ "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::amzn-s3-demo-bucket
" ] } ] }
Amazon ECS 수명 주기 이벤트를 확인하기 위해 Container Insights 구성에 필요한 권한
수명 주기 이벤트를 구성하려면 작업에 다음 권한이 필요합니다.
-
events:PutRule
-
events:PutTargets
-
logs:CreateLogGroup
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "events:PutRule", "events:PutTargets", "logs:CreateLogGroup" ], "Resource": "*" } ] }
Container Insights에서 Amazon ECS 수명 주기 이벤트를 확인하기 위해 필요한 권한
수명 주기 이벤트를 보려면 다음의 권한이 필요합니다. 작업 실행 IAM 역할에 다음 권한을 인라인 정책으로 추가합니다. 자세한 정보는 IAM 정책 추가 및 제거 섹션을 참조하세요.
-
events:DescribeRule
-
events:ListTargetsByRule
-
logs:DescribeLogGroups
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "events:DescribeRule", "events:ListTargetsByRule", "logs:DescribeLogGroups" ], "Resource": "*" } ] }