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을 사용자 정보로 바꾸세요.
- IAM 역할에 사용할 신뢰 정책을 포함하는
ecs-infrastructure-trust-policy.json이라는 파일을 만듭니다. 파일에는 다음이 포함되어야 해요:
{
"Version":"2012-10-17",
"Statement": [
{
"Sid": "AllowAccessToECSForInfrastructureManagement",
"Effect": "Allow",
"Principal": {
"Service": "ecs.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
- 이전 단계에서 만든 신뢰 정책을 사용해
ecsInfrastructureRole이라는 역할을 만들려면 다음 AWS CLI 명령을 사용합니다.
aws iam create-role \
--role-name ecsInfrastructureRole \
--assume-role-policy-document file://ecs-infrastructure-trust-policy.json
- 사용 사례에 따라
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는 필요한 권한이 복원될 때까지 태스크 중지와 볼륨 삭제를 정기적인 간격으로 자동 재시도해요.DescribeTasksAPI로 태스크의 볼륨 연결 상태와 관련 상태 이유를 볼 수 있어요.
파일을 만든 후에는 사용자에게 역할을 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"}
}
}
]
}