설명
ECS 서비스에 과도한 IAM 권한을 부여하면 필요한 로드 밸런서 연동 범위를 넘는 작업을 허용할 수 있습니다. 역할의 이름만으로 관리자 권한 여부를 판단하지 말고 실제 정책과 신뢰 관계를 확인하세요. 서비스 역할은 컨테이너가 AWS API를 호출하는 태스크 역할, 이미지 가져오기 등에 사용하는 태스크 실행 역할과 구분됩니다.
잠재적 영향
- 불필요한 서비스 권한은 잘못된 구성이나 역할 오용으로 영향을 받는 리소스 범위를 넓힐 수 있습니다.
- 필요한 권한을 제거하거나 잘못된 역할로 바꾸면 대상 등록과 서비스 배포가 실패할 수 있습니다.
해결 방법
- 사용 중인 네트워크 모드와 로드 밸런서 구성을 확인하세요.
awsvpc서비스에는 이Role을 지정하지 않으며 ECS 서비스 연결 역할을 사용합니다. - 명시적 서비스 역할이 필요한 구성에는 필요한 작업과 리소스만 허용하세요. 태스크 역할과 태스크 실행 역할의 권한도 별도로 검토하세요.
- 변경 후 실제 정책, 로드 밸런서 대상 등록, 상태 확인과 필요한 서비스 동작을 검증하세요.
예시
로드 밸런서를 사용하는 EC2 기반 서비스의 대안입니다. 대상 그룹 ARN, 실제 역할 ARN, 클러스터 용량과 네트워크를 준비해야 합니다. 역할 정책은 포함하지 않으므로 이름을 바꾸는 것만으로 권한이 줄어들지는 않습니다.
변경 전
yaml
AWSTemplateFormatVersion: 2010-09-09
Description: Creating ECS service
Parameters:
TargetGroupArn:
Type: String
Resources:
cluster:
Type: AWS::ECS::Cluster
taskdefinition:
Type: AWS::ECS::TaskDefinition
Properties:
ContainerDefinitions:
- Name: simple-app
Image: amazon/amazon-ecs-sample
Memory: 128
PortMappings:
- ContainerPort: 80
Volumes:
- Host:
SourcePath: /var/lib/docker/vfs/dir/
Name: my-vol
service:
Type: AWS::ECS::Service
Properties:
Cluster: !Ref cluster
Role: arn:aws:iam::123456789012:role/Admin
TaskDefinition: !Ref taskdefinition
LoadBalancers:
- TargetGroupArn: !Ref TargetGroupArn
ContainerName: simple-app
ContainerPort: 80
Admin이라는 역할을 지정합니다. 실제 연결된 정책에서 불필요한 관리 권한이 있는지 확인하세요.
변경 후
yaml
AWSTemplateFormatVersion: 2010-09-09
Description: Creating ECS service
Parameters:
TargetGroupArn:
Type: String
Resources:
cluster:
Type: AWS::ECS::Cluster
taskdefinition:
Type: AWS::ECS::TaskDefinition
Properties:
ContainerDefinitions:
- Name: simple-app
Image: amazon/amazon-ecs-sample
Memory: 128
PortMappings:
- ContainerPort: 80
Volumes:
- Host:
SourcePath: /var/lib/docker/vfs/dir/
Name: my-vol
service:
Type: AWS::ECS::Service
Properties:
Cluster: !Ref cluster
Role: arn:aws:iam::123456789012:role/EcsServiceRole
TaskDefinition: !Ref taskdefinition
LoadBalancers:
- TargetGroupArn: !Ref TargetGroupArn
ContainerName: simple-app
ContainerPort: 80
서비스용 역할을 지정합니다. 로드 밸런서 연동에 필요한 권한으로 정책이 제한되었는지 확인해야 합니다.