본문 바로가기
CLOUD/AWS

[ECS] taskRole VS executionRole 차이

by Rainbound-IT 2022. 5. 23.
반응형

목차

     

     

    간단하게 말하면

    excutioRole은 ECS 에이전트 의 역할

    taskrole은 task의 역할이라고 보시면 됩니다.

     

     

    ECS 서비스내의 여러 역할들

     

    Taks role

    컨테이션 애플리케이션이 AWS API를 호출해야 하는 경우 AWS 자격 증명으로 AWS API 요청에 서명해야 하며, 작업 IAM 역할은 Amazon EC2 인스턴스 프로파일이 Amazon EC2 인스턴스에 자격 증명을 제공하는 방식과 유사하게 애플리케이션이 사용할 자격 증명을 관리하는 전략을 제공합니다. AWS 자격 증명을 생성하여 컨테이너에 배포하거나 Amazon EC2 인스턴스의 역할을 사용하는 대신, IAM 역할을 Amazon ECS 작업 정의 또는 RunTask API 작업과 연결할 수 있습니다. 그러면 컨테이너가 AWS SDK 또는 AWS CLI을(를) 사용하여 인증된 AWS 서비스로 API 요청을 할 수 있습니다.

     

    Task excution role

    태스크 실행 IAM 역할은 Amazon ECS 컨테이너 에이전트 및 Fargate 에이전트에 사용자를 대신하여 AWS API 호출을 수행할 권한을 부여합니다. 태스크의 요구 사항에 따라 태스크 실행 IAM 역할이 필요합니다. 계정과 연결된 다른 용도 및 서비스에 사용할 여러 태스크 실행 역할이 있을 수 있습니다.

    태스크 실행 IAM 역할의 일반 사용 사례는 다음과 같습니다.

    • 태스크는 AWS Fargate 또는 외부 인스턴스에 호스팅되며
      • Amazon ECR 프라이빗 리포지토리에서 컨테이너 이미지를 가져옵니다.
      • awslogs 로그 드라이버를 사용해 CloudWatch Logs에 컨테이너 로그를 보냅니다. 자세한 정보는 awslogs 로그 드라이버 사용 섹션을 참조하세요.
    • 태스크는 AWS Fargate 또는 Amazon EC2 인스턴스에 호스팅되며

    service role

    AmazonECSServiceRolePolicy라는 역할 권한 정책은 Amazon ECS가 지정된 리소스에 대해 다음 작업을 완료하도록 허용합니다.

    • 조치: Amazon ECS 태스크에 대한 awsvpc 네트워크 모드를 사용할 때 Amazon ECS가 이 태스크와 연결된 탄력적 네트워크 인터페이스의 수명 주기를 관리합니다. Amazon ECS가 탄력적 네트워크 인터페이스에 추가하는 태그도 포함됩니다.
    • 조치: Amazon ECS 서비스로 로드 밸런서를 사용할 경우, Amazon ECS가 로드 밸런서로 리소스의 등록 및 등록 해제를 관리합니다.
    • 조치: Amazon ECS 서비스 검색을 사용할 경우, Amazon ECS가 서비스 검색을 작동하기 위한 필수적인 Route 53 및 AWS Cloud Map 리소스를 관리합니다.
    • 조치: Amazon ECS 서비스 Auto Scaling을 사용할 경우, Amazon ECS가 필수적인 Auto Scaling 리소스를 관리합니다.
    • 조치: Amazon ECS는 Amazon ECS 리소스의 모니터링을 지원하는 CloudWatch 경보와 로그 스트림을 생성 및 관리합니다.
    • 조치: Amazon ECS Exec를 사용할 경우, Amazon ECS가 태스크에 대해 Amazon ECS Exec 세션을 시작하는 데 필요한 권한을 관리합니다.

     

    https://docs.aws.amazon.com/ko_kr/AmazonECS/latest/developerguide/security-iam.html


     

    EC2 역할 - 당신이 말하는 것을 추측한다면 이것은 EC2 인스턴스에 연결된 역할입니다. 이렇게 하면 허용에 따라 AWS API에 액세스할 수 있는 EC2 인스턴스 권한이 부여됩니다. ECS 환경에서는 많은 권한이 필요하지 않습니다.

     

    작업 역할이 ECS 작업에 연결됩니다. 이렇게 하면 ECS 작업에 정책에 할당된 권한이 부여됩니다. 작업 역할이 없으면 ECS 작업은 기본적으로 EC2 인스턴스로 설정됩니다. 서로 다른 액세스 권한이 필요한 여러 앱이 있는 경우 세분화가 없기 때문에 이는 일반적으로 좋지 않은 생각입니다. ECS 서비스/태스크별로 Task Role 을 생성하면 각 앱이 가진 권한을 세분화할 수 있습니다. 예를 들어 프런트엔드와 백엔드가 있습니다. 백엔드만 S3에 쓰기 권한이 필요한 반면 프런트엔드는 정적 자산만 제공합니다.

     

    서비스 역할 - 이 역할은 ECS 서비스에 연결되며 일반적으로 ECS 작업을 로드 밸런서에 매핑하려는 경우에 사용됩니다. 기본적으로 ECS 서비스에는 그렇게 할 수 있는 권한이 없으므로 액세스 권한을 부여해야 합니다. 나는 일반적으로 모든 LB 작업에 대해 단일 ECS 서비스 역할을 가지고 있으며 이를 공유합니다.

     

    마지막으로 Execution Role 도 있습니다 . 이는 귀하를 대신하여 API 호출을 수행하기 위해 ECS 에이전트에 전달됩니다. Cloudwatch Logs를 도커 로그 드라이버로 사용하려는 경우 여기에서 로그를 Cloudwatch Logs로 푸시할 수 있는 권한이 설정되어 있다고 생각합니다.

    .

     

     

     

     

     

     

    설명서 를 참조 하면 실행 역할이 이미지 가져오기 및 애플리케이션 로그를 cloudwatch에 저장하는 등의 ECS 작업을 실행하는 IAM 역할임을 알 수 있습니다.

    그러면 TaskRole은 작업 자체에서 사용하는 IAM 역할입니다. 예를 들어 컨테이너가 S3, SQS 등과 같은 다른 AWS 서비스를 호출하려는 경우 해당 권한은 TaskRole에서 다루어야 합니다.

    TaskRole을 사용하는 것은 컨테이너 인스턴스의 구성 파일에서 액세스 키를 사용하는 것과 기능적으로 동일합니다. 이러한 방식으로 액세스 키를 사용하는 것은 안전하지 않으며 매우 나쁜 습관으로 간주됩니다. 이 글을 읽는 많은 사람들이 이미 액세스 키를 이해하고 있기 때문에 답변에 포함시켰습니다.

     

     

    https://sysadmins.co.za/difference-with-ecs-task-and-execution-iam-roles-on-aws/

     

    Difference with ECS Task and Execution IAM Roles on AWS

    The difference between the AWS ECS Task Execution IAM Role and the IAM Role for Tasks.

    sysadmins.co.za:443

     

     

    예시

    ECS 작업 실행 역할은 ECS 에이전트(및 컨테이너 인스턴스)의 기능입니다. 예:

    • Amazon ECR에서 컨테이너 이미지 가져오기
    • awslogs 로그 드라이버 사용

    ECS 작업 역할은 작업 자체 내의 특정 기능입니다. 예:

    • 실제 코드가 실행될 때
     
    기타 역할
     

    필요한 유일한 역할은 컨테이너 인스턴스 IAM 역할 입니다. 이 역할을 통해 ECS 에이전트(EC2 인스턴스에서 실행)가 Amazon ECS와 통신할 수 있습니다.

    다른 용도로 유용할 수 있는 5가지 다른 역할이 있습니다.

    • ECS SLR(서비스 연결 역할) - 이 역할을 통해 Amazon ECS가 사용자를 대신하여 애플리케이션과 연결된 다양한 AWS 리소스를 관리할 수 있습니다. 서비스 를 사용할 때 이 역할을 통해 Amazon ECS는 서비스와 연결된 로드 밸런서(클래식 로드 밸런서, Application Load Balancer 및 Network Load Balancer) 및 서비스 검색( Route 53 사용)을 관리할 수 있습니다. 작업 네트워킹 을 사용할 때 이 역할을 통해 Amazon ECS가 작업에 ENI(탄력적 네트워크 인터페이스) 를 연결 및 분리 할 수 있습니다. 이 역할은 AWS Fargate 를 사용할 때 필요합니다 .
    • 서비스 스케줄러 IAM 역할 - ECS SLR(서비스 연결 역할)이 도입되기 전에는 이 역할을 서비스 와 함께 사용하여 Amazon ECS가 서비스와 연결된 로드 밸런서를 관리할 수 있도록 했습니다. ECS 서비스와 함께 Elastic Load Balancer(Classic Load Balancer, Application Load Balancer 또는 Network Load Balancer)를 사용하려는 경우 이 역할을 사용할 수 있습니다. 이제 ECS SLR을 사용할 수 있으므로 두 역할 중 하나를 사용할 수 있지만 특정 로드 밸런서 리소스를 처리하기 위해 Amazon ECS에 부여된 권한을 제한하려는 경우 이 역할을 계속 사용할 수 있습니다.
    • Auto Scaling IAM 역할 - 이 역할은 서비스 와 함께 사용되며 Application Auto Scaling 서비스가 원하는 서비스 수를 확장하거나 축소할 수 있도록 합니다.
    • 작업 IAM 역할 - 이 역할은 모든 작업 ( 서비스 에서 시작한 작업 포함 )과 함께 사용할 수 있습니다. 이 역할은 EC2 인스턴스 프로필 과 매우 유사 하지만 이러한 작업을 호스팅하는 기본 EC2 인스턴스가 아닌 개별 작업과 권한을 연결할 수 있습니다. ECS 클러스터에서 필요한 권한이 서로 다른 여러 애플리케이션을 실행하는 경우 클러스터의 모든 EC2 인스턴스에 모든 권한이 결합된 권한 집합이 있는지 확인하는 대신 작업 IAM 역할을 사용하여 각 작업에 특정 권한을 부여할 수 있습니다. 응용 프로그램이 필요합니다.
    • 작업 실행 역할 - 이 역할은 AWS Fargate 를 사용할 때 필요하며 시작 유형 에 사용할 수 없는 컨테이너 인스턴스 IAM 역할 을 대체합니다 . FARGATE이 역할을 통해 AWS Fargate는 Amazon ECR 에서 컨테이너 이미지를 가져오고 Amazon CloudWatch Logs 로 로그를 전달할 수 있습니다 . 이 역할은 (Fargate 및 EC2 시작 유형 모두 에서) AWS Secrets Manager 및 AWS Systems Manager Parameter Store의 비공개 레지스트리 인증 및 암호를 활성화하는 데도 사용됩니다 .

     

     

     

    https://serverfault.com/questions/854413/confused-by-the-role-requirement-of-ecs

     

     

     

    반응형

    댓글