IAM 루트 사용자 활동 모니터링 - AWS 권장 가이드

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

IAM 루트 사용자 활동 모니터링

작성자: Mostefa Brougui(AWS)

코드 리포지토리: aws-iam-root-user -활동 모니터

환경: PoC 또는 파일럿

기술: 보안, 자격 증명, 규정 준수, 관리 및 거버넌스

워크로드: 기타 모든 워크로드

AWS 서비스: 아마존 EventBridge, AWS Lambda, 아마존 SNS, AWS ID 및 액세스 관리

요약

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

이 패턴을 사용하여 IAM 루트 사용자를 모니터링하는 이벤트 기반 아키텍처를 설정합니다. 이 패턴은 여러 AWS 계정인 스포크 계정을 모니터링하고 단일 계정인 허브 계정에서 관리 및 보고를 중앙 집중화하는 hub-and-spoke 솔루션을 설정합니다.

IAM 루트 사용자 자격 증명을 사용하면 CloudWatch Amazon과 AWS는 각각 로그와 트레일에 활동을 CloudTrail 기록합니다. 스포크 계정에서 Amazon EventBridge 규칙은 이벤트를 허브 계정의 중앙 이벤트 버스로 보냅니다. 허브 계정에서 EventBridge 규칙은 이벤트를 AWS Lambda 함수로 보냅니다. 이 함수는 루트 사용자 활동을 알려주는 Amazon Simple Notification Service(SNS) 주제를 사용합니다.

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

사전 조건 및 제한 사항

사전 조건 

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

  2. 스택 세트를 배포할 수 있는 권한. CloudFormation 자세한 내용은 스택 세트 작업의 사전 요구 사항 (CloudFormation 문서) 을 참조하십시오.

  3. Terraform 설치 및 사용할 준비 완료. 자세한 내용은 시작하기 – AWS(Terraform 설명서)를 참조하세요.

  4. 각 스포크 계정의 기존 트레일. 자세한 내용은 AWS 시작하기 CloudTrail (CloudTrail 설명서) 를 참조하십시오.

  5. 트레일은 CloudWatch Logs로 이벤트를 전송하도록 구성되어 있습니다. 자세한 내용은 CloudWatch 로그로 이벤트 전송 (CloudTrail 문서) 을 참조하십시오.

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

아키텍처

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

스포크 계정의 이벤트가 허브 계정에서 이메일 알림을 생성
  1. IAM 루트 사용자 자격 증명을 사용하는 경우 CloudWatch 로그와 트레일에 각각 활동을 CloudTrail 기록하십시오.

  2. 스포크 계정에서 EventBridge 규칙은 허브 계정의 중앙 이벤트 버스로 이벤트를 전송합니다.

  3. 허브 계정에서 EventBridge 규칙은 Lambda 함수로 이벤트를 전송합니다.

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

도구

서비스

  • AWS는 AWS CloudFormation 리소스를 설정하고, 빠르고 일관되게 프로비저닝하고, AWS 계정 및 지역 전반의 수명 주기 전반에 걸쳐 리소스를 관리할 수 있도록 지원합니다.

  • AWS는 AWS 계정의 거버넌스, 규정 준수 및 운영 위험을 감사할 수 있도록 CloudTrail 지원합니다.

  • Amazon CloudWatch Logs를 사용하면 모든 시스템, 애플리케이션 및 AWS 서비스의 로그를 중앙 집중화하여 로그를 모니터링하고 안전하게 보관할 수 있습니다.

  • EventBridgeAmazon은 다양한 소스의 실시간 데이터와 애플리케이션을 연결하는 데 도움이 되는 서버리스 이벤트 버스 서비스입니다. AWS Lambda 함수, API 대상을 사용하는 HTTP 간접 호출 엔드포인트 또는 다른 AWS 계정의 이벤트 버스를 예로 들 수 있습니다.

  • AWS Identity and Access Management(IAM)를 사용하면 사용자에 대해 인증 및 권한 부여를 제어함으로써 AWS 리소스에 대한 액세스를 안전하게 관리할 수 있습니다.

  • AWS Lambda는 서버를 프로비저닝하거나 관리할 필요 없이 코드를 실행하는 데 도움이 되는 컴퓨팅 서비스입니다. 필요할 때만 코드를 실행하며 자동으로 확장이 가능하므로 사용한 컴퓨팅 시간만큼만 비용을 지불합니다.

  • Amazon Simple Notification Service(Amazon SNS)를 사용하면 웹 서버 및 이메일 주소를 포함하여 게시자와 클라이언트 간의 메시지 교환을 조정하고 관리할 수 있습니다.

기타 도구 및 서비스

  • Terraform은 구성 파일 형태의 코드를 사용하여 클라우드 인프라 및 리소스를 프로비저닝하고 관리하는 CLI 애플리케이션입니다.

코드 리포지토리

이 패턴의 소스 코드와 템플릿은 GitHub 리포지토리에서 사용할 수 있습니다. 이 패턴은 두 개의 템플릿을 제공합니다.

  • 허브 계정에 배포하는 리소스가 포함된 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

에픽 섹션에서는 템플릿 배포 step-by-step 지침을 제공합니다.

에픽

작업설명필요한 기술

샘플 코드 리포지토리를 복제합니다.

  1. AWS IAM 루트 사용자 활동 모니터 리포지토리를 엽니다.

  2. 코드 탭의 파일 목록 위에서 코드를 선택한 다음 HTTPS URL을 복사합니다.

  3. 명령줄 인터페이스에서 작업 디렉터리를 샘플 파일을 저장하고자 하는 위치로 변경합니다.

  4. 다음 명령을 입력합니다.

    git clone <repoURL>
일반 AWS

TerraForm 템플릿을 업데이트합니다.

  1. 조직 ID를 검색합니다. 지침을 보려면 관리 계정에서 조직 세부 정보 보기(AWS Organizations 설명서)를 참조하세요.

  2. 복제된 리포지토리에서 hub.tf을(를) 엽니다.

  3. 환경에 적합한 값으로 다음을 업데이트하세요.

    • OrganizationId – 조직 ID를 추가합니다.

    • SNSTopicName – Amazon SNS 주제의 이름을 추가합니다.

    • SNSSubscriptions – Amazon SNS 알림을 전송해야 하는 이메일을 추가합니다.

    • Region – 리소스를 배포하려는 AWS 리전 코드를 추가합니다. 예를 들어 eu-west-1입니다.

    • Tags – 태그를 추가합니다. 태그에 대한 자세한 내용은 AWS 리소스 태깅( 일반 참조 안내서)을 참조하세요.

  4. hub.tf 파일을 저장하고 닫습니다.

일반 AWS

리소스를 AWS 허브 계정에 배포합니다.

  1. Terraform 명령줄 인터페이스에서 복제된 리포지토리의 루트 폴더로 이동한 후 다음 명령을 입력합니다.

    terraform init && terraform plan
  2. 출력을 검토하고 설명된 리소스를 생성할지 확인합니다.

  3. 다음 명령을 입력합니다.

    terraform apply
  4. 메시지가 표시되면 yes를 입력하여 배포를 확인합니다.

일반 AWS
작업설명필요한 기술

템플릿을 배포하세요. CloudFormation

  1. AWS 관리 콘솔에 로그인하고 CloudFormation 콘솔을 엽니다.

  2. 탐색 창에서 StackSets를 선택합니다.

  3. StackSets페이지 상단에서 [Create] 를 선택합니다 StackSet.

  4. 권한에서 서비스 관리 권한을 선택합니다. CloudFormation AWS Organizations에서 관리하는 대상 계정에 배포하는 데 필요한 권한을 자동으로 구성합니다.

  5. 사전 조건 - 템플릿 준비에서 템플릿 준비 완료를 선택합니다.

  6. 템플릿 지정에서 템플릿 파일 업로드를 선택합니다.

  7. 파일 선택을 선택한 다음 복제된 리포지토리에서 spoke-stackset.yaml을 선택합니다.

  8. 다음을 선택합니다.

  9. StackSet 세부 정보 지정 페이지에서 스택 세트의 이름을 입력합니다.

  10. 파라미터에서 허브 계정의 계정 ID를 입력하고 다음을 선택합니다.

  11. StackSet 옵션 구성 페이지의 태그에 태그를 추가합니다.

  12. 실행 구성에서 비활성을 선택한 후 다음을 선택합니다.

  13. 배포 옵션 설정 페이지에서 스택 세트를 배포할 조직 단위 및 리전을 지정하고 다음을 선택합니다.

  14. 검토 페이지에서 AWS가 IAM 리소스를 생성할 CloudFormation 수 있음을 인정합니다를 선택한 다음 제출을 선택합니다. CloudFormation 스택 세트 배포를 시작합니다.

자세한 내용 및 지침은 스택 세트 생성 (CloudFormation 설명서) 을 참조하십시오.

일반 AWS
작업설명필요한 기술

루트 사용자 보안 인증을 사용합니다.

  1. 루트 사용자 보안 인증 정보를 사용하여 스포크 계정 또는 허브 계정에 로그인합니다.

  2. 지정한 이메일 계정이 Amazon SNS 알림을 수신하는지 확인합니다.

일반 AWS

관련 리소스

추가 정보

GuardDutyAmazon은 로그를 분석하고 처리하여 AWS 환경에서 예상치 못한 잠재적 무단 활동을 식별하는 지속적 보안 모니터링 서비스입니다. 이 솔루션의 대안으로 GuardDuty, 활성화한 경우 루트 사용자 자격 증명이 사용되면 알림을 받을 수 있습니다. GuardDuty 결과는 이며Policy:IAMUser/RootCredentialUsage, 기본 심각도는 낮음입니다. 자세한 내용은 Amazon GuardDuty 조사 결과 관리를 참조하십시오.