

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# IAM 루트 사용자 활동 모니터링
<a name="monitor-iam-root-user-activity"></a>

*JJ Sung and Mostefa Brougui, Amazon Web Services*

## 요약
<a name="monitor-iam-root-user-activity-summary"></a>

모든 Amazon Web Services(AWS) 계정에는 루트 사용자가 있습니다. AWS Identity and Access Management(IAM)의 [보안 모범 사례](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)로서, 루트 사용자만 수행할 수 있는 작업을 완료하는 데 루트 사용자를 사용하는 것이 좋습니다. 이러한 작업의 전체 목록은 *일반 참조*의 [루트 사용자 보안 인증이 필요한 작업](https://docs.aws.amazon.com/accounts/latest/reference/root-user-tasks.html)을 참조하세요. 루트 사용자는 모든 AWS 리소스 및 결제 정보에 대한 전체 액세스 권한을 가지므로 이 계정을 사용하지 말고 루트 사용자 보안 인증 정보가 손상되었음을 나타내는 활동이 있는지 모니터링하는 것이 좋습니다.

이 패턴을 사용하여 IAM 루트 사용자를 모니터링하는 [이벤트 기반 아키텍처](https://aws.amazon.com/event-driven-architecture/)를 설정합니다. 이 패턴은 여러 AWS 계정인 *스포크* 계정을 모니터링하고 단일 계정인 *허브* 계정으로 관리 및 보고를 중앙 집중화하는 허브 앤 스포크 솔루션을 설정합니다.

루트 사용자 보안 인증을 사용하는 경우 Amazon CloudWatch Application Insights 및 AWS CloudTrail에서는 로그 및 추적에서 활동을 기록합니다. 스포크 계정에서 Amazon EventBridge 규칙은 이벤트를 허브 계정의 중앙 [이벤트 버스](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-bus.html)로 보냅니다. 허브 계정에서 EventBridge 규칙은 이벤트를 AWS Lambda 함수로 보냅니다. 이 함수는 루트 사용자 활동을 알려주는 Amazon Simple Notification Service(SNS) 주제를 사용합니다.

이 패턴에서는 AWS CloudFormation 템플릿을 사용하여 스포크 계정에 모니터링 및 이벤트 처리 서비스를 배포합니다. HashiCorp Terraform 템플릿을 사용하여 허브 계정에 이벤트 관리 및 알림 서비스를 배포합니다.

## 사전 조건 및 제한 사항
<a name="monitor-iam-root-user-activity-prereqs"></a>

**사전 조건 **

1. AWS 환경에 AWS 리소스를 배포할 수 있는 권한.

1. CloudFormation 스택 세트를 배포할 수 있는 권한. 자세한 내용은 [스택 세트 작업 사전 조건](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-prereqs.html)을 참조하세요.

1. Terraform 설치 및 사용할 준비 완료. 자세한 내용은 [시작하기 – AWS](https://learn.hashicorp.com/collections/terraform/aws-get-started)(Terraform 설명서)를 참조하세요.

1. 각 스포크 계정의 기존 트레일. 자세한 내용은 [AWS CloudTrail 시작하기](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-tutorial.html)(CloudTrail 설명서)를 참조하세요.

1. CloudWatch Logs로 이벤트를 전송하도록 추적을 구성할 수 있습니다. 자세한 내용은 [Sending CloudTrail Events to CloudWatch Logs](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/send-cloudtrail-events-to-cloudwatch-logs.html)(CloudTrail 설명서)를 참조하세요.

1. 허브 및 스포크 계정은 AWS Organizations에서 관리해야 합니다.

## 아키텍처
<a name="monitor-iam-root-user-activity-architecture"></a>

다음 다이어그램은 구현의 구성 요소를 보여 줍니다.

![스포크 계정의 이벤트가 허브 계정에서 이메일 알림을 생성](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/images/pattern-img/175f356b-f9df-4d33-82fc-fe33b2c88b05/images/6147e5b5-616e-49a4-b330-dbb7e3381fe7.png)


1. IAM 루트 사용자 자격 증명이 사용되면 CloudWatch와 CloudTrail은 각각 로그와 추적에 활동을 기록합니다.

1. 스포크 계정에서 EventBridge 규칙은 이벤트를 허브 계정의 중앙 [이벤트 버스](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-event-bus.html)로 보냅니다.

1. 허브 계정에서 EventBridge 규칙은 이벤트를 Lambda 함수로 보냅니다.

1. Lambda 함수는 루트 사용자 활동을 알려주는 Amazon SNS 주제를 사용합니다.

## 도구
<a name="monitor-iam-root-user-activity-tools"></a>

**서비스**
+ [AWS CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/Welcome.html)을 사용하면 AWS 리소스를 설정하고, 빠르고 일관되게 프로비저닝하고, 전체 AWS 계정 및 리전에서 수명 주기 전반에 걸쳐 관리할 수 있습니다.
+ [AWS CloudTrail](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-user-guide.html)은 AWS 계정 의 거버넌스, 규정 준수, 운영 위험을 감사하는 데 도움이 됩니다.
+ [Amazon CloudWatch Logs](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/WhatIsCloudWatchLogs.html)는 모든 시스템, 애플리케이션 및 AWS 서비스의 로그를 중앙 집중화하여 모니터링하고 안전하게 보관할 수 있도록 도와줍니다.
+ [Amazon EventBridge](https://docs.aws.amazon.com/eventbridge/latest/userguide/eb-what-is.html)는 애플리케이션을 다양한 소스의 실시간 데이터와 연결할 수 있는 서버리스 이벤트 버스 서비스입니다. AWS Lambda 함수, API 대상을 사용하는 HTTP 간접 호출 엔드포인트 또는 다른 AWS 계정의 이벤트 버스를 예로 들 수 있습니다.
+ [AWS Identity and Access Management(IAM)](https://docs.aws.amazon.com/IAM/latest/UserGuide/introduction.html)를 사용하면 사용자에 대해 인증 및 권한 부여를 제어함으로써 AWS 리소스에 대한 액세스를 안전하게 관리할 수 있습니다.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html)는 서버를 프로비저닝하거나 관리할 필요 없이 코드를 실행하는 데 도움이 되는 컴퓨팅 서비스입니다. 필요할 때만 코드를 실행하며 자동으로 확장이 가능하므로 사용한 컴퓨팅 시간만큼만 비용을 지불합니다.
+ [Amazon Simple Notification Service(Amazon SNS)](https://docs.aws.amazon.com/sns/latest/dg/welcome.html)를 사용하면 웹 서버 및 이메일 주소를 포함하여 게시자와 클라이언트 간의 메시지 교환을 조정하고 관리할 수 있습니다.

**기타 도구 및 서비스**
+ [Terraform](https://www.terraform.io/docs)은 구성 파일 형태의 코드를 사용하여 클라우드 인프라 및 리소스를 프로비저닝하고 관리하는 CLI 애플리케이션입니다.

**코드 리포지토리**

이 패턴의 소스 코드와 템플릿은 [GitHub 리포지토리](https://github.com/aws-samples/aws-iam-root-user-activity-monitor)에서 제공됩니다. 이 패턴은 두 개의 템플릿을 제공합니다.
+ 허브 계정에 배포하는 리소스가 포함된 Terraform 템플릿
+ 스포크 계정에서 스택 세트 인스턴스로 배포하는 CloudFormation 템플릿

리포지토리의 전체 구조는 다음과 같습니다.

```
.
 |__README.md
 |__spoke-stackset.yaml
 |__hub.tf
 |__root-activity-monitor-module
     |__main.tf  # contains Terraform code to deploy resources in the Hub account
     |__iam      # contains IAM policies JSON files
         |__ lambda-assume-policy.json          # contains trust policy of the IAM role used by the Lambda function
         |__ lambda-policy.json                 # contains the IAM policy attached to the IAM role used by the Lambda function
     |__outputs  # contains Lambda function zip code
```

*에픽* 섹션에서 템플릿을 배포하는 단계별 지침을 제공합니다.

## 에픽
<a name="monitor-iam-root-user-activity-epics"></a>

### 허브 계정에 리소스 배포
<a name="deploy-resources-to-the-hub-account"></a>


| 작업 | 설명 | 필요한 기술 | 
| --- | --- | --- | 
| 샘플 코드 리포지토리를 복제합니다. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/monitor-iam-root-user-activity.html) | 일반 AWS | 
| TerraForm 템플릿을 업데이트합니다. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/monitor-iam-root-user-activity.html) | 일반 AWS | 
| 리소스를 AWS 허브 계정에 배포합니다. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/monitor-iam-root-user-activity.html) | 일반 AWS | 

### 스포크 계정에 리소스 배포
<a name="deploy-resources-to-your-spoke-accounts"></a>


| 작업 | 설명 | 필요한 기술 | 
| --- | --- | --- | 
| CloudFormation 템플릿을 배포합니다. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/monitor-iam-root-user-activity.html)자세한 내용과 지침은 [스택 세트 생성](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/stacksets-getting-started-create.html)(CloudFormation 설명서)를 참조하세요. | 일반 AWS | 

### (선택 사항)알림 테스트
<a name="optional-test-the-notifications"></a>


| 작업 | 설명 | 필요한 기술 | 
| --- | --- | --- | 
| 루트 사용자 보안 인증을 사용합니다. | [See the AWS documentation website for more details](http://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/monitor-iam-root-user-activity.html) | 일반 AWS | 

## 관련 리소스
<a name="monitor-iam-root-user-activity-resources"></a>
+ [보안 모범 사례](https://docs.aws.amazon.com/IAM/latest/UserGuide/best-practices.html)(IAM 설명서)
+ [StackSets 사용하기](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/what-is-cfnstacksets.html)(CloudFormation 설명서)
+ [시작하기](https://learn.hashicorp.com/collections/terraform/aws-get-started)(Terraform 설명서)

## 추가 정보
<a name="monitor-iam-root-user-activity-additional"></a>

[Amazon GuardDuty](https://docs.aws.amazon.com/guardduty/latest/ug/what-is-guardduty.html)는 AWS 환경에서 예상치 못한 활동, 잠재적으로 승인되지 않은 활동 또는 악의적 활동을 식별할 수 있도록 지원하는 보안 모니터링 서비스입니다. 이 솔루션 대신 GuardDuty를 활성화한 경우 루트 사용자 보안 인증 정보가 사용되면 알림을 받을 수 있습니다. GuardDuty 조사 결과는 `Policy:IAMUser/RootCredentialUsage`이며 기본 심각도는 **낮음**입니다. 자세한 정보는 [Amazon GuardDuty 조사 결과 관리](https://docs.aws.amazon.com/guardduty/latest/ug/findings_management.html)를 참조하세요.