설명
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