

# Runtime Monitoring을 사용하여 무단 동작 식별
<a name="ecs-guard-duty-integration"></a>

Amazon GuardDuty는 AWS 환경 내 계정, 컨테이너, 워크로드 및 데이터를 보호하는 데 도움이 되는 위협 감지 서비스입니다. GuardDuty는 기계 학습(ML) 모델, 이상 및 위협 감지 기능을 통해 다양한 로그 소스와 런타임 활동을 지속적으로 모니터링하여 사용자 환경의 잠재적 보안 위험과 악의적 활동을 식별하고 우선순위를 지정합니다.

GuardDuty의 Runtime Monitoring은 AWS 로그 및 네트워킹 활동을 지속적으로 모니터링하여 악의적 동작 또는 무단 동작을 식별함으로써 Fargate 및 EC2 컨테이너 인스턴스에서 실행되는 워크로드를 보호합니다. Runtime Monitoring은 파일 액세스, 프로세스 실행 및 네트워크 연결과 같은 호스트 내 동작을 분석하는 경량의 완전관리형 GuardDuty 보안 에이전트를 사용합니다. 여기에는 권한 에스컬레이션, 노출된 자격 증명 사용 또는 악의적인 IP 주소 및 도메인과의 통신, 그리고 Amazon EC2 인스턴스 및 컨테이너 워크로드에 존재하는 맬웨어 같은 문제가 포함됩니다. 자세한 내용은 **GuardDuty 사용 설명서의 [GuardDuty Runtime Monitoring](https://docs.aws.amazon.com/guardduty/latest/ug/runtime-monitoring.html)을 참조하세요.

보안 관리자는 GuardDuty의 AWS Organizations에서 단일 또는 여러 계정에 대해 Runtime Monitoring을 활성화합니다. 또한 Fargate를 사용할 때 GuardDuty가 GuardDuty 보안 에이전트를 자동으로 배포할지 여부도 선택합니다. 모든 클러스터는 자동으로 보호되며 GuardDuty는 사용자를 대신하여 보안 에이전트를 관리합니다.

다음과 같은 경우에도 GuardDuty 보안 에이전트를 수동으로 구성할 수 있습니다.
+ EC2 컨테이너 인스턴스 사용
+ 클러스터 수준에서 Runtime Monitoring을 활성화하려면 세분화된 제어가 필요합니다.

Runtime Monitoring을 사용하려면 보호되는 클러스터를 구성하고 EC2 컨테이너 인스턴스에 GuardDuty 보안 에이전트를 설치 및 관리해야 합니다.

## Amazon ECS에서 Runtime Monitoring이 작동하는 방식
<a name="ecs-runtime-monitoring-events"></a>

Runtime Monitoring은 애플리케이션의 요청, 액세스 확보, 기본 시스템 리소스 소비 방식에 관한 Amazon ECS 워크로드 활동을 모니터링하는 경량 GuardDuty 보안 에이전트를 사용합니다.

Fargate 작업의 경우 GuardDuty 보안 에이전트는 각 작업의 사이드카 컨테이너로 실행됩니다.

EC2 컨테이너 인스턴스의 경우 GuardDuty 보안 에이전트는 인스턴스에서 프로세스로 실행됩니다.

GuardDuty 보안 에이전트는 다음 리소스에서 데이터를 수집하고, GuardDuty로 데이터를 전송하여 처리합니다. 조사 결과는 GuardDuty 콘솔에서 볼 수 있습니다. 또한 집계 및 문제 해결을 위해 다른 AWS 서비스(예: AWS Security Hub CSPM) 또는 타사 보안 공급업체에 전송할 수도 있습니다. 조사 결과를 보고 관리하는 방법에 대한 자세한 내용은 *Amazon GuardDuty 사용 설명서*의 [Managing Amazon GuardDuty findings](https://docs.aws.amazon.com/guardduty/latest/ug/findings_management.html)를 참조하세요.
+ 다음 Amazon ECS API 직접 호출에서 받은 응답:
  + [https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeClusters.html](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeClusters.html)

    `--include TAGS` 옵션을 사용할 때 응답 파라미터에 Runtime Monitoring 태그(태그가 설정된 경우)가 포함됩니다.
  + [https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeTasks.html](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_DescribeTasks.html)

    Fargate의 경우 응답 파라미터는 GuardDuty 사이드카 컨테이너를 포함합니다.
  + [https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ListAccountSettings.html](https://docs.aws.amazon.com/AmazonECS/latest/APIReference/API_ListAccountSettings.html)

    응답 파라미터에는 보안 관리자가 설정하는 Runtime Monitoring 계정 설정이 포함됩니다.
+ 컨테이너 에이전트 내부 검사 데이터. 자세한 내용은 [Amazon ECS 컨테이너 내부 검사](ecs-agent-introspection.md) 섹션을 참조하세요.
+ 컴퓨팅 옵션의 태스크 메타데이터 엔드포인트:
  +  [Amazon ECS 작업 메타데이터 엔드포인트 버전 4](task-metadata-endpoint-v4.md)
  +  [Fargate의 작업에 대한 Amazon ECS 작업 메타데이터 엔드포인트 버전 4](task-metadata-endpoint-v4-fargate.md)

## 고려 사항
<a name="ecs-guard-duty-support"></a>

Runtime Monitoring을 사용할 때는 다음 사항을 고려합니다.
+ Runtime Monitoring에는 관련 비용이 있습니다. 자세한 내용은 [Amazon GuardDuty 요금](https://aws.amazon.com/guardduty/pricing/)을 참조하세요.
+ Amazon ECS Anywhere에서는 Runtime Monitoring이 지원되지 않습니다.
+ Runtime Monitoring은 Windows 운영 체제에서 지원되지 않습니다.
+ Fargate에서 Amazon ECS Exec을 사용하는 경우 GuardDuty 보안 에이전트가 사이드카 컨테이너로 실행되기 때문에 컨테이너 이름을 지정해야 합니다.
+ GuardDuty 보안 에이전트 사이드카 컨테이너에서 Amazon ECS Exec를 사용할 수 없습니다.
+ 클러스터 수준에서 Runtime Monitoring을 제어하는 IAM 사용자는 태그 지정을 위한 적절한 IAM 권한을 보유해야 합니다. 자세한 내용은 *IAM 사용 설명서*의 [IAM 튜토리얼: 태그를 기반으로 AWS 리소스에 액세스할 수 있는 권한 정의](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_attribute-based-access-control.html)를 참조하세요.
+ Fargate 작업에서는 작업 실행 역할을 사용해야 합니다. 이 역할은 사용자를 대신하여 Amazon ECR 프라이빗 리포지토리에 저장된 GuardDuty 보안 에이전트를 검색, 업데이트 및 관리할 권한을 작업에 부여합니다.
+ Runtime Monitoring은 Amazon ECS 관리형 인스턴스에서 실행되는 애플리케이션에 대해 지원하지 않습니다.

## 리소스 사용률
<a name="ecs-guard-duty-resources"></a>

클러스터에 추가한 태그는 클러스터 태그 할당량 계산에 포함됩니다.

GuardDuty 에이전트 사이드카 컨테이너는 작업 정의 할당량당 컨테이너 수 계산에 포함되지 않습니다.

대부분의 보안 소프트웨어와 마찬가지로 GuardDuty에도 약간의 오버헤드가 있습니다. Fargate 메모리 제한에 대한 자세한 내용은 *GuardDuty 사용 설명서*의 [CPU and memory limits](https://docs.aws.amazon.com/guardduty/latest/ug/prereq-runtime-monitoring-ecs-support.html#ecs-runtime-agent-cpu-memory-limits)를 참조하세요. Amazon EC2 메모리 제한에 대한 자세한 내용은 [CPU and memory limit for GuardDuty agent](https://docs.aws.amazon.com/guardduty/latest/ug/prereq-runtime-monitoring-ec2-support.html#ec2-cpu-memory-limits-gdu-agent)를 참조하세요.

# Amazon ECS Fargate 워크로드에 대한 Runtime Monitoring
<a name="ecs-guard-configure-automatic"></a>

EC2 컨테이너 인스턴스를 사용하는 경우 Runtime Monitoring을 수동으로 구성해야 합니다. 자세한 내용은 [Amazon ECS의 EC2 워크로드에 대한 Runtime Monitoring](ecs-guard-duty-configure-manual.md) 섹션을 참조하세요.

GuardDuty가 컨테이너 인스턴스의 보안 에이전트를 관리하도록 할 수 있습니다. 이 옵션은 Fargate에서만 사용할 수 있습니다. 이 옵션(GuardDuty 에이전트 관리)은 GuardDuty에서 사용할 수 있음 

GuardDuty 에이전트 관리를 사용하는 경우 GuardDuty는 다음 작업을 수행합니다.
+ 클러스터를 호스팅하는 각 VPC에 대해 GuardDuty용 VPC 엔드포인트를 생성합니다.
+ 검색 후 최신 GuardDuty 보안 에이전트를 모든 새로운 독립 실행형 Fargate 작업 및 새로운 서비스 배포에서 사이드카 컨테이너로 설치합니다.

  서비스를 처음 시작하거나 **새 배포 강제 적용** 옵션으로 기존 서비스를 업데이트할 때 새 서비스 배포가 수행됩니다.

# Amazon ECS에 대한 Runtime Monitoring 켜기
<a name="ecs-guard-duty-configure-automatic-guard-duty"></a>

모든 Fargate 클러스터의 보안 에이전트를 자동으로 관리하도록 GuardDuty를 구성할 수 있습니다.



## 사전 조건
<a name="ecs-guard-duty-configure-automatic-guard-duty-prerequisite"></a>

다음은 Runtime Monitoring 사용을 위한 필수 조건입니다.
+ Fargate 플랫폼 버전은 Linux의경우 `1.4.0` 이상이어야 합니다.
+ Amazon ECS에 대한 IAM 역할 및 권한:
  + Fargate 작업에서는 작업 실행 역할을 사용해야 합니다. 이 역할은 사용자를 대신하여 GuardDuty 보안 에이전트를 검색, 업데이트 및 관리할 권한을 작업에 부여합니다. 자세한 내용은 [Amazon ECS 태스크 실행 IAM 역할](task_execution_IAM_role.md)을 참조하세요.
  + 사전 정의된 태그를 사용하여 클러스터의 Runtime Monitoring을 제어합니다. 액세스 정책이 태그를 기반으로 액세스를 제한하는 경우 IAM 사용자에게 클러스터에 태그를 지정할 수 있는 명시적 권한을 부여해야 합니다. 자세한 내용은 **IAM 사용 설명서의 [IAM 튜토리얼: 태그를 기반으로 AWS 리소스에 액세스할 수 있는 권한 정의](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_attribute-based-access-control.html)를 참조하세요.
+ Amazon ECR 리포지토리에 연결:

  GuardDuty 보안 에이전트는 Amazon ECR 리포지토리에 저장됩니다. 각 독립 실행형 작업 및 서비스 작업에는 리포지토리에 대한 액세스 권한이 있어야 합니다. 다음 옵션 중 하나를 사용할 수 있습니다.
  + 퍼블릭 서브넷에 있는 작업의 경우 작업에 퍼블릭 IP 주소를 사용하거나 작업이 실행되는 서브넷에서 Amazon ECR용 VPC 엔드포인트를 생성할 수 있습니다. 자세한 정보는 *Amazon Elastic Container Registry 사용 설명서*의 [Amazon ECR 인터페이스 VPC 엔드포인트(AWS PrivateLink)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/vpc-endpoints.html)를 참조하세요.
  + 프라이빗 서브넷에 있는 작업의 경우 Network Address Translation(NAT) 게이트웨이를 사용하거나 작업이 실행되는 서브넷에서 Amazon ECR용 VPC 엔드포인트를 생성할 수 있습니다.

    자세한 내용은 [프라이빗 서브넷 및 NAT 게이트웨이](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/networking-outbound.html#networking-private-subnet)를 참조하세요.
+ GuardDuty에 대한 `AWSServiceRoleForAmazonGuardDuty` 역할이 필요합니다. 자세한 내용은 *Amazon GuardDuty 사용 설명서*의 [Service-linked role permissions for GuardDuty](https://docs.aws.amazon.com/guardduty/latest/ug/slr-permissions.html)를 참조하세요.
+ Runtime Monitoring으로 보호하려는 모든 파일에는 루트 사용자가 액세스할 수 있어야 합니다. 파일의 권한을 수동으로 변경한 경우 해당 권한을 `755`로 설정해야 합니다.

다음은 EC2 컨테이너 인스턴스에서 Runtime Monitoring을 사용하기 위한 필수 조건입니다.
+ Amazon ECS-AMI의 버전 `20230929` 이상을 사용해야 합니다.
+ 컨테이너 인스턴스에서 버전 `1.77` 이상으로 Amazon ECS 에이전트를 실행해야 합니다.
+ 커널 버전 `5.10` 이상을 사용해야 합니다.
+ 지원되는 Linux 운영 체제 및 아키텍처에 대한 자세한 내용은 [GuardDuty Runtime Monitoring에서 지원하는 운영 모델 및 워크로드는 무엇인가요?](https://aws.amazon.com//guardduty/faqs/?nc1=h_ls#product-faqs#guardduty-faqs#guardduty-ecs-runtime-monitoring)를 참조하세요.
+ System Manager를 사용하여 컨테이너 인스턴스를 관리할 수 있습니다. 자세한 내용은 *AWS Systems Manager Session Manager 사용 설명서*의 [EC2 인스턴스용 Systems Manager 설정](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-setting-up-ec2.html)을 참조하세요.

## 절차
<a name="ecs-guard-duty-configure-automatic-guard-duty-procedure"></a>

GuardDuty에서 Runtime Monitoring을 활성화합니다. 기능을 활성화하는 방법에 대한 자세한 내용은 **Amazon GuardDuty 사용 설명서의 [Enabling Runtime Monitoring](https://docs.aws.amazon.com/guardduty/latest/ug/runtime-monitoring-configuration.html)을 참조하세요.

# 기존 Amazon ECS Fargate 태스크에 Runtime Monitoring 추가
<a name="ecs-guard-duty-configure-automatic-existing-tasks"></a>

Runtime Monitoring을 켜면 클러스터의 모든 새 독립 실행형 작업 및 새 서비스 배포가 자동으로 보호됩니다. 불변성 제약 조건을 유지하기 위해 기존 작업은 영향을 받지 않습니다.

## 사전 조건
<a name="ecs-guard-duty-configure-automatic-existing-tasks-prerequisites"></a>

1. Runtime Monitoring을 켭니다. 자세한 내용은 [Amazon ECS에 대한 Runtime Monitoring 켜기절차](ecs-guard-duty-configure-automatic-guard-duty.md) 섹션을 참조하세요.

1. Fargate 작업에서는 작업 실행 역할을 사용해야 합니다. 이 역할은 사용자를 대신하여 GuardDuty 보안 에이전트를 검색, 업데이트 및 관리할 권한을 작업에 부여합니다. 자세한 내용은 [Amazon ECS 태스크 실행 IAM 역할](task_execution_IAM_role.md)을 참조하세요.

## 절차
<a name="ecs-guard-duty-configure-automatic-existing-tasks-procedure"></a>
+  작업을 즉시 보호하려면 다음 작업 중 하나를 수행해야 합니다.
  + 독립 실행형 작업의 경우 작업을 중지한 다음, 시작합니다. 자세한 내용은 [Amazon ECS 태스크 중지](standalone-task-stop.md) 및 [애플리케이션을 Amazon ECS 태스크로 실행](standalone-task-create.md) 섹션을 참조하세요.
  + 서비스의 일부인 작업의 경우 '새 배포 강제 적용' 옵션을 사용하여 서비스를 업데이트합니다. 자세한 내용은 [Amazon ECS 서비스 업데이트](update-service-console-v2.md) 섹션을 참조하세요.

# Amazon ECS 클러스터에서 Runtime Monitoring 제거
<a name="ecs-guard-duty-manage-subset-automatic"></a>

특정 클러스터(예: 테스트에 사용하는 클러스터)를 보호에서 제외할 수 있습니다. 그러면 GuardDuty는 클러스터의 리소스에 대해 다음 작업을 수행합니다.
+ 더 이상 GuardDuty 보안 에이전트를 새로운 독립 실행형 Fargate 작업이나 새로운 서비스 배포에 배포하지 않아도 됩니다.

  불변성 제약 조건을 유지하기 위해 Runtime Monitoring이 활성화된 기존 작업 및 배포는 영향을 받지 않습니다.
+ 요금 청구를 중지하고 작업에 대한 런타임 이벤트를 더 이상 수락하지 않습니다.

## 절차
<a name="ecs-guard-duty-manage-subset-automatic-procedure"></a>

클러스터에서 Runtime Monitoring을 제거하려면 다음 단계를 수행하세요.

1. Amazon ECS 콘솔 또는 AWS CLI를 사용하여 클러스터에서 `GuardDutyManaged` 태그 키를 `false`로 설정합니다. 자세한 내용은 [클러스터 업데이트](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/update-cluster-v2.html) 또는 [CLI 또는 API를 사용한 태그 작업](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-using-tags.html#tag-resources-api-sdk)을 참조하세요. 태그에 대해 다음 값을 사용합니다.
**참고**  
키와 값은 대소문자를 구분하며 문자열과 정확히 일치해야 합니다.

   키 = `GuardDutyManaged`, 값 = `false`

1. 클러스터의 GuardDuty VPC 엔드포인트를 삭제합니다. VPC 엔드포인트를 삭제하는 방법에 대한 자세한 내용은 *AWS PrivateLink 사용 설명서*의 [Delete an interface endpoint](https://docs.aws.amazon.com/vpc/latest/privatelink/delete-interface-endpoint.html)를 참조하세요.

# 계정에서 Amazon ECS에 대한 Runtime Monitoring 제거
<a name="ecs-guard-duty-manage-remove-automatic"></a>

Runtime Monitoring을 더 이상 사용하지 않으려면 GuardDuty에서 해당 기능을 비활성화합니다. 기능을 비활성화하는 방법에 대한 자세한 내용은 *Amazon GuardDuty 사용 설명서*의 [Enabling Runtime Monitoring](https://docs.aws.amazon.com/guardduty/latest/ug/runtime-monitoring-configuration.html)을 참조하세요.

 GuardDuty는 다음 작업을 수행합니다.
+ 클러스터를 호스팅하는 각 VPC에 대해 GuardDuty용 VPC 엔드포인트를 삭제합니다.
+ 더 이상 GuardDuty 보안 에이전트를 새로운 독립 실행형 Fargate 작업이나 새로운 서비스 배포에 배포하지 않아도 됩니다.

  불변성 제약 조건을 유지하기 위해 기존 작업 및 배포는 중지, 복제 또는 규모 조정될 때까지 영향을 받지 않습니다.
+ 요금 청구를 중지하고 작업에 대한 런타임 이벤트를 더 이상 수락하지 않습니다.

# Amazon ECS의 EC2 워크로드에 대한 Runtime Monitoring
<a name="ecs-guard-duty-configure-manual"></a>

용량에 맞는 EC2 인스턴스를 사용하거나 Fargate의 클러스터 수준에서 Runtime Monitoring에 대한 세분화된 제어가 필요한 경우 이 옵션을 사용합니다.

사전 정의된 태그를 추가하여 Runtime Monitoring에 대한 클러스터를 프로비저닝합니다.

EC2 컨테이너 인스턴스의 경우 GuardDuty 보안 에이전트를 다운로드, 설치 및 관리합니다.

Fargate의 경우 GuardDuty에서 사용자를 대신하여 보안 에이전트를 관리합니다.

# Amazon ECS에 대한 Runtime Monitoring 켜기
<a name="ecs-guard-duty-configure-manual-guard-duty"></a>

EC2 인스턴스가 있는 클러스터에 대해 또는 Fargate의 클러스터 수준에서 Runtime Monitoring에 대한 세분화된 제어가 필요한 경우 Runtime Monitoring을 켤 수 있습니다.

다음은 Runtime Monitoring 사용을 위한 필수 조건입니다.
+ Fargate 플랫폼 버전은 Linux의경우 `1.4.0` 이상이어야 합니다.
+ Amazon ECS에 대한 IAM 역할 및 권한:
  + Fargate 작업에서는 작업 실행 역할을 사용해야 합니다. 이 역할은 사용자를 대신하여 GuardDuty 보안 에이전트를 검색, 업데이트 및 관리할 권한을 작업에 부여합니다. 자세한 내용은 [Amazon ECS 태스크 실행 IAM 역할](task_execution_IAM_role.md)을 참조하세요.
  + 사전 정의된 태그를 사용하여 클러스터의 Runtime Monitoring을 제어합니다. 액세스 정책이 태그를 기반으로 액세스를 제한하는 경우 IAM 사용자에게 클러스터에 태그를 지정할 수 있는 명시적 권한을 부여해야 합니다. 자세한 내용은 **IAM 사용 설명서의 [IAM 튜토리얼: 태그를 기반으로 AWS 리소스에 액세스할 수 있는 권한 정의](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_attribute-based-access-control.html)를 참조하세요.
+ Amazon ECR 리포지토리에 연결:

  GuardDuty 보안 에이전트는 Amazon ECR 리포지토리에 저장됩니다. 각 독립 실행형 작업 및 서비스 작업에는 리포지토리에 대한 액세스 권한이 있어야 합니다. 다음 옵션 중 하나를 사용할 수 있습니다.
  + 퍼블릭 서브넷에 있는 작업의 경우 작업에 퍼블릭 IP 주소를 사용하거나 작업이 실행되는 서브넷에서 Amazon ECR용 VPC 엔드포인트를 생성할 수 있습니다. 자세한 정보는 *Amazon Elastic Container Registry 사용 설명서*의 [Amazon ECR 인터페이스 VPC 엔드포인트(AWS PrivateLink)](https://docs.aws.amazon.com/AmazonECR/latest/userguide/vpc-endpoints.html)를 참조하세요.
  + 프라이빗 서브넷에 있는 작업의 경우 Network Address Translation(NAT) 게이트웨이를 사용하거나 작업이 실행되는 서브넷에서 Amazon ECR용 VPC 엔드포인트를 생성할 수 있습니다.

    자세한 내용은 [프라이빗 서브넷 및 NAT 게이트웨이](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/networking-outbound.html#networking-private-subnet)를 참조하세요.
+ GuardDuty에 대한 `AWSServiceRoleForAmazonGuardDuty` 역할이 필요합니다. 자세한 내용은 *Amazon GuardDuty 사용 설명서*의 [Service-linked role permissions for GuardDuty](https://docs.aws.amazon.com/guardduty/latest/ug/slr-permissions.html)를 참조하세요.
+ Runtime Monitoring으로 보호하려는 모든 파일에는 루트 사용자가 액세스할 수 있어야 합니다. 파일의 권한을 수동으로 변경한 경우 해당 권한을 `755`로 설정해야 합니다.

다음은 EC2 컨테이너 인스턴스에서 Runtime Monitoring을 사용하기 위한 필수 조건입니다.
+ Amazon ECS-AMI의 버전 `20230929` 이상을 사용해야 합니다.
+ 컨테이너 인스턴스에서 버전 `1.77` 이상으로 Amazon ECS 에이전트를 실행해야 합니다.
+ 커널 버전 `5.10` 이상을 사용해야 합니다.
+ 지원되는 Linux 운영 체제 및 아키텍처에 대한 자세한 내용은 [GuardDuty Runtime Monitoring에서 지원하는 운영 모델 및 워크로드는 무엇인가요?](https://aws.amazon.com//guardduty/faqs/?nc1=h_ls#product-faqs#guardduty-faqs#guardduty-ecs-runtime-monitoring)를 참조하세요.
+ System Manager를 사용하여 컨테이너 인스턴스를 관리할 수 있습니다. 자세한 내용은 *AWS Systems Manager Session Manager 사용 설명서*의 [EC2 인스턴스용 Systems Manager 설정](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-setting-up-ec2.html)을 참조하세요.

GuardDuty에서 Runtime Monitoring을 켭니다. 기능을 활성화하는 방법에 대한 자세한 내용은 *Amazon GuardDuty 사용 설명서*의 [Enabling Runtime Monitoring](https://docs.aws.amazon.com/guardduty/latest/ug/runtime-monitoring-configuration.html)을 참조하세요.

# Amazon ECS 클러스터에 Runtime Monitoring 추가
<a name="ecs-guard-duty-configure-manual-customize"></a>

클러스터에 대한 Runtime Monitoring을 구성하고 EC2 컨테이너 인스턴스에 GuardDuty 보안 에이전트를 설치합니다.

## 사전 조건
<a name="ecs-guard-duty-configure-manual-customize-prereq"></a>

1. Runtime Monitoring을 켭니다. 자세한 내용은 [Amazon ECS에 대한 Runtime Monitoring 켜기](ecs-guard-duty-configure-manual-guard-duty.md) 섹션을 참조하세요.

1. 사전 정의된 태그를 사용하여 클러스터의 Runtime Monitoring을 제어합니다. 액세스 정책이 태그를 기반으로 액세스를 제한하는 경우 IAM 사용자에게 클러스터에 태그를 지정할 수 있는 명시적 권한을 부여해야 합니다. 자세한 내용은 **IAM 사용 설명서의 [IAM 튜토리얼: 태그를 기반으로 AWS 리소스에 액세스할 수 있는 권한 정의](https://docs.aws.amazon.com/IAM/latest/UserGuide/tutorial_attribute-based-access-control.html)를 참조하세요.

## 절차
<a name="ecs-guard-duty-configure-manual-customize-procedure"></a>

클러스터에 Runtime Monitoring을 추가하려면 다음 작업을 수행합니다.

1. 각 클러스터 VPC에 대해 GuardDuty용 VPC 엔드포인트를 생성합니다. 자세한 내용은 *GuardDuty 사용 설명서*의 [Creating Amazon VPC endpoint manually](https://docs.aws.amazon.com/guardduty/latest/ug/managing-gdu-agent-ec2-manually.html#creating-vpc-endpoint-ec2-agent-manually)를 참조하세요.

1. EC2 컨테이너 인스턴스를 구성합니다.

   1. 클러스터의 EC2 컨테이너 인스턴스에서 Amazon ECS 에이전트를 버전 `1.77` 이상으로 업데이트합니다. 자세한 내용은 [Amazon ECS 컨테이너 에이전트 업데이트](ecs-agent-update.md)을 참조하세요.

   1. 클러스터의 EC2 컨테이너 인스턴스에 GuardDuty 보안 에이전트를 설치합니다. 자세한 내용은 *GuardDuty 사용 설명서*의 [Managing the security agent on an Amazon EC2 instance manually](https://docs.aws.amazon.com/guardduty/latest/ug/managing-gdu-agent-ec2-manually.html)를 참조하세요.

      GuardDuty 보안 에이전트는 EC2 컨테이너 인스턴스에서 프로세스로 실행되므로 모든 신규 및 기존 작업과 배포가 즉시 보호됩니다.

1. Amazon ECS 콘솔 또는 AWS CLI를 사용하여 클러스터에서 `GuardDutyManaged` 태그 키를 `true`로 설정합니다. 자세한 내용은 [클러스터 업데이트](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/update-cluster-v2.html) 또는 [CLI 또는 API를 사용한 태그 작업](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-using-tags.html#tag-resources-api-sdk)을 참조하세요. 태그에 대해 다음 값을 사용합니다.
**참고**  
키와 값은 대소문자를 구분하며 문자열과 정확히 일치해야 합니다.

   키 = `GuardDutyManaged`, 값 = `true`

# 기존 Amazon ECS 태스크에 Runtime Monitoring 추가
<a name="ecs-guard-duty-configure-manual-existing-tasks"></a>

Runtime Monitoring을 켜면 클러스터의 모든 새 독립 실행형 작업 및 새 서비스 배포가 자동으로 보호됩니다. 불변성 제약 조건을 유지하기 위해 기존 작업은 영향을 받지 않습니다.

## 사전 조건
<a name="ecs-guard-duty-configure-manual-existing-tasks-prerequisites"></a>
+ Runtime Monitoring을 켭니다. 자세한 내용은 [Amazon ECS에 대한 Runtime Monitoring 켜기](ecs-guard-duty-configure-manual-guard-duty.md) 섹션을 참조하세요.

## 절차
<a name="ecs-guard-duty-configure-manual-existing-tasks-procedure"></a>
+  작업을 즉시 보호하려면 다음 작업 중 하나를 수행해야 합니다.
  + 독립 실행형 작업의 경우 작업을 중지한 다음, 시작합니다. 자세한 내용은 [Amazon ECS 태스크 중지](standalone-task-stop.md) 및 [애플리케이션을 Amazon ECS 태스크로 실행](standalone-task-create.md)(을)를 참조하세요.
  + 서비스의 일부인 작업의 경우 '새 배포 강제 적용' 옵션을 사용하여 서비스를 업데이트합니다. 자세한 내용은 [Amazon ECS 서비스 업데이트](update-service-console-v2.md) 섹션을 참조하세요.

# Amazon ECS 클러스터에서 Runtime Monitoring 제거
<a name="ecs-guard-duty-remove-manual"></a>

클러스터에서 Runtime Monitoring을 제거할 수 있습니다. 이 경우 GuardDuty는 클러스터에서 모든 리소스 모니터링을 중지합니다.

**클러스터에서 Runtime Monitoring을 제거하려면 다음을 수행하세요.**

1. Amazon ECS 콘솔 또는 AWS CLI를 사용하여 클러스터에서 `GuardDutyManaged` 태그 키를 `false`로 설정합니다. 자세한 내용은 [클러스터 업데이트](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/update-cluster-v2.html) 또는 [CLI 또는 API를 사용한 태그 작업](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs-using-tags.html#tag-resources-api-sdk)을 참조하세요.
**참고**  
키와 값은 대소문자를 구분하며 문자열과 정확히 일치해야 합니다.

   키 = `GuardDutyManaged`, 값 = `false`

1. 클러스터의 EC2 컨테이너 인스턴스에서 GuardDuty 보안 에이전트를 제거합니다.

   자세한 내용은 *GuardDuty 사용 설명서*의 [Uninstalling the security agent manually](https://docs.aws.amazon.com/guardduty/latest/ug/managing-gdu-agent-ec2-manually.html#gdu-update-security-agent-ec2)를 참조하세요.

1. 각 클러스터 VPC의 GuardDuty VPC 엔드포인트를 삭제합니다. VPC 엔드포인트를 삭제하는 방법에 대한 자세한 내용은 **AWS PrivateLink 사용 설명서의 [Delete an interface endpoint](https://docs.aws.amazon.com/vpc/latest/privatelink/delete-interface-endpoint.html)를 참조하세요.

# Amazon ECS 컨테이너 인스턴스에서 GuardDuty 보안 에이전트 업데이트
<a name="ecs-guard-duty-manage-update-agent"></a>

EC2 컨테이너 인스턴스의 GuardDuty 보안 에이전트를 업데이트하는 방법에 대한 자세한 내용은 **Amazon GuardDuty 사용 설명서의 [Updating GuardDuty security agent](https://docs.aws.amazon.com/guardduty/latest/ug/managing-gdu-agent-ec2-manually.html#gdu-update-security-agent-ec2)를 참조하세요.

# 계정에서 Amazon ECS에 대한 Runtime Monitoring 제거
<a name="ecs-guard-duty-manage-remove-protection-manual"></a>

Runtime Monitoring을 더 이상 사용하지 않으려면 GuardDuty에서 해당 기능을 비활성화합니다. 기능을 비활성화하는 방법에 대한 자세한 내용은 **Amazon GuardDuty 사용 설명서의 [Enabling Runtime Monitoring](https://docs.aws.amazon.com/guardduty/latest/ug/runtime-monitoring-configuration.html)을 참조하세요.

모든 클러스터에서 Runtime Monitoring을 제거합니다. 자세한 내용은 [Amazon ECS 클러스터에서 Runtime Monitoring 제거](ecs-guard-duty-remove-manual.md) 섹션을 참조하세요.

# Runtime Monitoring 문제 해결
<a name="ecs-guard-duty-troubleshooting"></a>

Runtime Monitoring이 활성화되어 작업 및 컨테이너에서 실행 중인지 확인하거나 문제를 해결해야 할 수 있습니다.

**Topics**
+ [

## 내 계정에서 Runtime Monitoring이 활성화되어 있는지 어떻게 알 수 있나요?
](#verify-ecs-runtime-enabled)
+ [

## 클러스터에서 Runtime Monitoring이 활성 상태인지 어떻게 알 수 있나요?
](#verify-ecs-runtime-enabled)
+ [

## GuardDuty 보안 에이전트가 Fargate 작업에서 실행 중인지 어떻게 알 수 있나요?
](#verify-ecs-runtime-fargate-run)
+ [

## GuardDuty 보안 에이전트가 EC2 컨테이너 인스턴스에서 실행 중인지 어떻게 알 수 있나요?
](#verify-ecs-runtime-ec2-run)
+ [

## 클러스터에서 실행 중인 작업에 대한 작업 실행 역할이 없으면 어떻게 되나요?
](#no-task-execution-role)
+ [

## Runtime Monitoring을 위해 클러스터에 태그를 지정할 수 있는 올바른 권한이 있는지 어떻게 알 수 있나요?
](#tag-permissions)
+ [

## Amazon ECR에 연결되어 있지 않으면 어떻게 되나요?
](#no-ecr-connection)
+ [

## Runtime Monitoring을 활성화한 후 Fargate 작업의 메모리 부족 오류를 해결하려면 어떻게 해야 하나요?
](#memory-error)

## 내 계정에서 Runtime Monitoring이 활성화되어 있는지 어떻게 알 수 있나요?
<a name="verify-ecs-runtime-enabled"></a>

Amazon ECS 콘솔에서 정보는 **계정 설정** 페이지에 있습니다.

`list-account-settings`를 `effective-settings` 옵션과 함께 실행할 수도 있습니다.

```
aws ecs list-account-settings --effective-settings
```

출력

**이름**이 `guardDutyActivate`로 설정되고 **값**이 `on`으로 설정된 설정은 계정이 구성되었음을 나타냅니다. GuardDuty 관리자에게 문의하여 관리가 자동인지, 수동인지 확인해야 합니다.

```
{
    "setting": {
        "name": "guardDutyActivate",
        "value": "enabled",
        "principalArn": "arn:aws:iam::123456789012:root",
        "type": "aws-managed"
    }
}
```

## 클러스터에서 Runtime Monitoring이 활성 상태인지 어떻게 알 수 있나요?
<a name="verify-ecs-runtime-enabled"></a>

GuardDuty 콘솔에서 적용 범위 통계를 검토할 수 있습니다. 본인 계정 또는 멤버 계정과 연결된 Amazon ECS 리소스에 대한 정보는 선택한 AWS 리전의 모든 클러스터에 대한 정상적인 클러스터의 비율입니다. 여기에는 Fargate 및 EC2를 사용하는 클러스터에 대한 적용 범위가 포함됩니다. 자세한 내용은 *Amazon GuardDuty 사용 설명서*의 [적용 범위 통계 검토](https://docs.aws.amazon.com/guardduty/latest/ug/gdu-assess-coverage-ecs.html#ecs-review-coverage-statistics-ecs-runtime-monitoring)를 참조하세요.

## GuardDuty 보안 에이전트가 Fargate 작업에서 실행 중인지 어떻게 알 수 있나요?
<a name="verify-ecs-runtime-fargate-run"></a>

GuardDuty 보안 에이전트는 Fargate 작업의 사이드카 컨테이너로 실행됩니다.

Amazon ECS 콘솔에서 사이드카는 **작업 세부 정보** 페이지의 **컨테이너** 아래에 표시됩니다.

`describe-tasks`를 실행하고 **이름**이 `aws-gd-agent`로 설정되고 **LastStatus**가 `RUNNING`으로 설정된 컨테이너를 찾을 수 있습니다.

다음 예제에서는 작업 `aws:ecs:us-east-1:123456789012:task/0b69d5c0-d655-4695-98cd-5d2d5EXAMPLE`에 대한 기본 클러스터의 출력을 보여줍니다.

```
aws ecs describe-tasks --cluster default --tasks aws:ecs:us-east-1:123456789012:task/0b69d5c0-d655-4695-98cd-5d2d5EXAMPLE
```

출력

이름이 `gd-agent`인 컨테이너가 `RUNNING` 상태입니다.

```
"containers": [ 
      {
        "containerArn": "arn:aws:ecs:us-east-1:123456789012:container/4df26bb4-f057-467b-a079-96167EXAMPLE", 
        "taskArn": "arn:aws:ecs:us-east-1:123456789012:task/0b69d5c0-d655-4695-98cd-5d2d5EXAMPLE", 
        "lastStatus": "RUNNING",
        "healthStatus": "UNKNOWN",
        "memory": "string",
        "name": "aws-gd-agent" 
      }
    ]
```

## GuardDuty 보안 에이전트가 EC2 컨테이너 인스턴스에서 실행 중인지 어떻게 알 수 있나요?
<a name="verify-ecs-runtime-ec2-run"></a>

다음 명령을 실행하여 상태를 봅니다.

```
sudo systemctl status amazon-guardduty-agent
```

로그 파일은 다음 위치에 있습니다.

```
/var/log/amzn-guardduty-agent
```

## 클러스터에서 실행 중인 작업에 대한 작업 실행 역할이 없으면 어떻게 되나요?
<a name="no-task-execution-role"></a>

Fargate 작업의 경우 GuardDuty 보안 에이전트 사이드카 컨테이너 없이 작업이 시작됩니다. GuardDuty 대시보드는 적용 범위 통계 대시보드에서 작업에 보호 기능이 누락되었음을 표시합니다.

## Runtime Monitoring을 위해 클러스터에 태그를 지정할 수 있는 올바른 권한이 있는지 어떻게 알 수 있나요?
<a name="tag-permissions"></a>

클러스터에 태그를 지정하려면 `CreateCluster` 및 `ecs:TagResource` 모두에 대한 `UpdateCluster` 작업이 있어야 합니다.

다음은 예제 정책의 코드 조각입니다.

```
{
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
         "ecs:TagResource"
      ],
      "Resource": "*",
      "Condition": {
         "StringEquals": {
             "ecs:CreateAction" : "CreateCluster",
             "ecs:CreateAction" : "UpdateCluster",
          }
       }
    }
  ]
}
```

## Amazon ECR에 연결되어 있지 않으면 어떻게 되나요?
<a name="no-ecr-connection"></a>

Fargate 작업의 경우 GuardDuty 보안 에이전트 사이드카 컨테이너 없이 작업이 시작됩니다. GuardDuty 대시보드는 적용 범위 통계 대시보드에서 작업에 보호 기능이 누락되었음을 표시합니다.

## Runtime Monitoring을 활성화한 후 Fargate 작업의 메모리 부족 오류를 해결하려면 어떻게 해야 하나요?
<a name="memory-error"></a>

GuardDuty 보안 에이전트는 경량 프로세스입니다. 그러나 이 프로세스는 워크로드 크기에 따라 여전히 리소스를 소비합니다. Amazon CloudWatch Container Insights와 같은 컨테이너 리소스 추적 도구를 사용하여 클러스터에서 GuardDuty 배포를 스테이징하는 것이 좋습니다. 이러한 도구를 사용하면 애플리케이션에 대한 GuardDuty 보안 에이전트의 소비 프로파일을 검색할 수 있습니다. 그런 다음, 필요한 경우 Fargate 작업 크기를 조정하여 잠재적인 메모리 부족 조건을 방지할 수 있습니다.