Amazon ECS 인프라 IAM 역할

Amazon ECS 인프라 IAM 역할

Amazon ECS 인프라 IAM 역할이 무엇이고, EBS 볼륨, TLS, VPC Lattice, Managed Instances, Express Mode에 어떻게 사용되는지, 그리고 역할 생성 방법을 알아봐요.

출처: 문서

본문

Amazon ECS 인프라 IAM 역할은 Amazon ECS가 사용자를 대신해 클러스터의 인프라 리소스를 관리할 수 있게 해주며, 다음 경우에 사용돼요:

  • Fargate 또는 EC2 launch type의 Amazon ECS 태스크에 Amazon EBS 볼륨을 연결하려는 경우. 인프라 역할은 Amazon ECS가 태스크용 Amazon EBS 볼륨을 관리할 수 있게 해요. AmazonECSInfrastructureRolePolicyForVolumes 관리형 정책을 사용할 수 있어요.
  • Amazon ECS Service Connect 서비스 사이의 트래픽을 암호화하기 위해 TLS(Transport Layer Security)를 사용하려는 경우. AmazonECSInfrastructureRolePolicyForServiceConnectTransportLayerSecurity 관리형 정책을 사용할 수 있어요.
  • Amazon VPC Lattice 대상 그룹을 만들려는 경우. AmazonECSInfrastructureRolePolicyForVpcLattice 관리형 정책을 사용할 수 있어요.
  • Amazon ECS 클러스터에서 Amazon ECS Managed Instances를 사용하려는 경우. 인프라 역할은 Amazon ECS가 관리형 인스턴스의 수명 주기를 관리할 수 있게 해요. AmazonECSInfrastructureRolePolicyForManagedInstances 관리형 정책을 사용할 수 있어요.
  • Express Mode를 사용하려는 경우. 인프라 역할은 Amazon ECS가 로드 밸런싱, 보안 그룹, SSL 인증서, 자동 확장 구성을 포함해 Express Mode 서비스에 필요한 인프라 구성 요소를 프로비저닝·관리할 수 있게 해요. AmazonECSInfrastructureRoleforExpressGatewayServices 관리형 정책을 사용할 수 있어요.

Amazon ECS가 이 역할을 가정해 사용자를 대신해 작업을 수행하면 이벤트는 AWS CloudTrail에 표시돼요.

  • Amazon ECS가 역할을 사용해 태스크에 연결된 Amazon EBS 볼륨을 관리하면 CloudTrail 로그 roleSessionName은 ECSTaskVolumesForEBS예요.
  • 역할이 Service Connect 서비스 사이의 트래픽을 암호화하는 데 사용되면 CloudTrail 로그 roleSessionName은 ECSServiceConnectForTLS예요.
  • 역할이 VPC Lattice용 대상 그룹을 만드는 데 사용되면 CloudTrail 로그 roleSessionName은 ECSNetworkingWithVPCLattice예요.
  • 역할이 Amazon ECS Managed Instances를 관리하는 데 사용되면 CloudTrail 로그 roleSessionName은 ECSManagedInstancesForCompute예요.

이 이름을 사용해 CloudTrail 콘솔에서 User name으로 필터링하여 이벤트를 검색할 수 있어요.

Amazon ECS는 볼륨 연결, TLS, VPC Lattice, Managed Instances에 필요한 권한을 포함하는 관리형 정책을 제공해요. 자세한 내용은 AWS Managed Policy Reference Guide의 AmazonECSInfrastructureRolePolicyForVolumes, AmazonECSInfrastructureRolePolicyForServiceConnectTransportLayerSecurity, AmazonECSInfrastructureRolePolicyForVpcLattice, AmazonECSInfrastructureRolePolicyForManagedInstances, AmazonECSInfrastructureRoleforExpressGatewayServices 참고.

Amazon ECS 인프라 역할 생성

모든 user input을 사용자 정보로 바꾸세요.

  1. IAM 역할에 사용할 신뢰 정책을 포함하는 ecs-infrastructure-trust-policy.json이라는 파일을 만듭니다. 파일에는 다음이 포함되어야 해요:
{
  "Version":"2012-10-17", 
  "Statement": [ 
    {
      "Sid": "AllowAccessToECSForInfrastructureManagement", 
      "Effect": "Allow", 
      "Principal": {
        "Service": "ecs.amazonaws.com" 
      }, 
      "Action": "sts:AssumeRole" 
    } 
  ] 
}
  1. 이전 단계에서 만든 신뢰 정책을 사용해 ecsInfrastructureRole이라는 역할을 만들려면 다음 AWS CLI 명령을 사용합니다.
aws iam create-role \
     --role-name ecsInfrastructureRole \
     --assume-role-policy-document file://ecs-infrastructure-trust-policy.json
  1. 사용 사례에 따라 ecsInfrastructureRole 역할에 관리형 정책을 연결합니다.
  • Fargate 또는 EC2 launch type의 Amazon ECS 태스크에 Amazon EBS 볼륨을 연결하려면 AmazonECSInfrastructureRolePolicyForVolumes 관리형 정책을 연결합니다.
  • Amazon ECS Service Connect 서비스 사이의 트래픽을 암호화하기 위해 TLS를 사용하려면 AmazonECSInfrastructureRolePolicyForServiceConnectTransportLayerSecurity 관리형 정책을 연결합니다.
  • Amazon VPC Lattice 대상 그룹을 만들려면 AmazonECSInfrastructureRolePolicyForVpcLattice 관리형 정책을 연결합니다.
  • Amazon ECS 클러스터에서 Amazon ECS Managed Instances를 사용하려면 AmazonECSInfrastructureRolePolicyForManagedInstances 관리형 정책을 연결합니다.
aws iam attach-role-policy \
     --role-name ecsInfrastructureRole \
     --policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSInfrastructureRolePolicyForVolumes
aws iam attach-role-policy \
     --role-name ecsInfrastructureRole \
     --policy-arn arn:aws:iam::aws:policy/service-role/AmazonECSInfrastructureRolePolicyForServiceConnectTransportLayerSecurity
aws iam attach-role-policy \
     --role-name ecsInfrastructureRole \
     --policy-arn arn:aws:iam::aws:policy/AmazonECSInfrastructureRolePolicyForManagedInstances

IAM 콘솔의 Custom trust policy 워크플로우를 사용해 역할을 만들 수도 있어요. 자세한 내용은 IAM User Guide의 Creating a role using custom trust policies (console) 참고.

중요 — 인프라 역할이 Amazon ECS에 의해 태스크에 연결된 Amazon EBS 볼륨을 관리하는 데 사용되고 있다면, Amazon EBS 볼륨을 사용하는 태스크를 중지하기 전에 다음을 확인하세요:

  • 역할이 삭제되지 않았는지.
  • 역할의 신뢰 정책이 Amazon ECS 접근(ecs.amazonaws.com)을 제거하도록 수정되지 않았는지.
  • AmazonECSInfrastructureRolePolicyForVolumes 관리형 정책이 제거되지 않았는지. 역할의 권한을 수정해야 한다면 볼륨 삭제를 위해 최소한 ec2:DetachVolume, ec2:DeleteVolume, ec2:DescribeVolumes를 유지하세요.

Amazon EBS 볼륨이 연결된 태스크를 중지하기 전에 역할을 삭제하거나 수정하면 태스크가 DEPROVISIONING 상태에 갇히고 연결된 Amazon EBS 볼륨이 삭제되지 않을 거예요. Amazon ECS는 필요한 권한이 복원될 때까지 태스크 중지와 볼륨 삭제를 정기적인 간격으로 자동 재시도해요. DescribeTasks API로 태스크의 볼륨 연결 상태와 관련 상태 이유를 볼 수 있어요.

파일을 만든 후에는 사용자에게 역할을 Amazon ECS에 전달(pass)할 수 있는 권한을 부여해야 해요.

인프라 역할을 Amazon ECS에 전달할 권한

ECS 인프라 IAM 역할을 사용하려면 사용자에게 역할을 Amazon ECS에 전달할 권한을 부여해야 해요. 사용자에게 다음 iam:PassRole 권한을 연결하세요. ecsInfrastructureRole을 생성한 인프라 역할의 이름으로 바꾸세요.

{
    "Version":"2012-10-17",
    "Statement": [
    
        {
            "Action": "iam:PassRole",
            "Effect": "Allow",
            "Resource": ["arn:aws:iam::*:role/ecsInfrastructureRole"],
            "Condition": {
                "StringEquals": {"iam:PassedToService": "ecs.amazonaws.com"}
            }
        }
    ]
}

더 알아보기 (Learn more)