ECS 태스크의 IAM 역할 점검

ECS 실행 역할과 애플리케이션의 태스크 역할을 용도에 맞게 지정하세요.

설명

ExecutionRoleArn은 이미지 가져오기나 로그 전송 등 ECS 에이전트의 작업에, TaskRoleArn은 컨테이너 안의 애플리케이션이 AWS API를 호출하는 데 사용됩니다. 필요한 역할은 태스크가 사용하는 기능에 따라 다릅니다.

잠재적 영향

필요한 역할이 없으면 태스크 시작이나 AWS 리소스 접근이 실패할 수 있습니다. 이를 장기 액세스 키로 우회하면 자격 증명 유출 위험이 커집니다.

해결 방법

사용 기능에 필요한 실행 역할을 지정하고, 애플리케이션이 AWS API를 호출하면 최소 권한의 태스크 역할을 추가하세요. 실행 역할의 권한이 애플리케이션에 그대로 제공되는 것은 아닙니다.

예시

발췌 예시는 두 역할이 모두 필요한 태스크에 각 역할을 연결합니다. 역할의 신뢰 정책과 권한 정의는 생략했습니다.

변경 전

yaml
Resources:
  ECSService:
    Type: AWS::ECS::Service
    Properties:
      TaskDefinition: !Ref ECSTaskDefinition

  ECSTaskDefinition:
    Type: AWS::ECS::TaskDefinition
    Properties:
      Family: app
      NetworkMode: awsvpc
      ContainerDefinitions:
        - Name: app
          Image: example/app:latest

변경 후

yaml
Resources:
  ECSService:
    Type: AWS::ECS::Service
    Properties:
      TaskDefinition: !Ref ECSTaskDefinition

  ECSTaskDefinition:
    Type: AWS::ECS::TaskDefinition
    Properties:
      Family: app
      NetworkMode: awsvpc
      ExecutionRoleArn: !Ref TaskExecutionRole
      TaskRoleArn: !Ref AppTaskRole
      ContainerDefinitions:
        - Name: app
          Image: example/app:latest

참조