ECS 서비스 역할의 권한 점검 필요

ECS 서비스 역할의 실제 권한을 확인하고 로드 밸런서 연동에 필요한 범위로 제한하세요.

설명

ECS 서비스의 role은 서비스를 대신해 로드 밸런서를 호출하는 데 사용하는 역할입니다. 필요 이상의 권한을 부여하면 역할이 악용될 때 영향이 커질 수 있습니다. 역할 이름만으로 관리자 권한이 있는지는 알 수 없으므로 연결된 정책과 신뢰 관계를 확인해야 합니다.

이 역할은 컨테이너 애플리케이션에 AWS 권한을 제공하는 태스크 역할이나 이미지 가져오기·로그 전송에 쓰는 태스크 실행 역할과 다릅니다. 명시적 서비스 역할은 로드 밸런서를 사용하고 태스크가 awsvpc 네트워크 모드가 아닐 때만 지정할 수 있습니다. 그 밖의 구성에서는 해당 서비스 연결 역할 요구 사항을 따르세요.

잠재적 영향

  • 서비스 역할에 과도한 권한이 있고 이를 악용할 수 있다면 필요한 로드 밸런서 작업을 넘어 리소스가 변경될 수 있습니다. 실제 범위는 권한·신뢰 정책과 다른 통제에 달려 있습니다.
  • 서비스 역할과 태스크 역할을 혼동하면 컨테이너의 권한을 잘못 관리하거나 필요한 서비스 동작을 차단할 수 있습니다.

해결 방법

  1. 실제 서비스 역할의 관리형·인라인 정책과 신뢰 정책을 확인하고 필요한 작업과 리소스로 제한하세요. 네트워크 모드와 로드 밸런서 구성에 맞는 서비스 연결 역할을 사용하세요.
  2. 태스크 역할과 태스크 실행 역할도 각각의 용도에 맞게 최소 권한으로 구성하세요. 역할 이름만 바꾸어서는 권한이 줄어들지 않습니다.
  3. community.aws 11.1.0의 ecs_service 업데이트 경로는 role을 변경하지 않습니다. 기존 서비스에서는 정책을 직접 수정하거나 지원되는 전환 절차를 계획하고, 실제 역할·정책과 로드 밸런서 등록 및 상태 확인을 검증하세요.

예시

클러스터, 태스크 정의, 대상 그룹과 역할을 별도로 준비하세요. 예시는 awsvpc가 아닌 태스크의 app 컨테이너 포트 8080을 대상으로 하며, target_group_arn에는 실제 대상 그룹 ARN을 넣어야 합니다. desired_count: 0은 태스크를 실행하지 않는 설정입니다.

변경 전

yaml
- name: ECS Service
  community.aws.ecs_service:
    state: present
    name: console-test-service
    cluster: new_cluster
    task_definition: "new_cluster-task:1"
    desired_count: 0
    load_balancers:
      - targetGroupArn: "{{ target_group_arn }}"
        containerName: app
        containerPort: 8080
    role: admin

admin 역할을 지정합니다. 실제 권한과 ECS가 이 역할을 맡을 수 있는 신뢰 정책을 확인해야 합니다.

변경 후

yaml
- name: ECS Service
  community.aws.ecs_service:
    state: present
    name: console-test-service
    cluster: new_cluster
    task_definition: "new_cluster-task:1"
    desired_count: 0
    load_balancers:
      - targetGroupArn: "{{ target_group_arn }}"
        containerName: app
        containerPort: 8080

새 서비스에서는 명시적 역할 대신 적용되는 서비스 연결 역할을 사용합니다. 기존 서비스에서 필드를 제거하는 것만으로 역할이나 권한이 바뀌지는 않습니다.

참조