Amazon Macie를 사용하여 CloudWatch Logs에서 민감한 데이터 보호 - 권장 가이드

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

Amazon Macie를 사용하여 CloudWatch Logs에서 민감한 데이터 보호

Anisha Salunkhe, Omar Franco, David Guardiola, Amazon Web Services

요약

이 패턴은 포괄적인 보안 모니터링 워크플로를 구현하여 Amazon Macie를 사용하여 Amazon CloudWatch Logs 로그 그룹에서 민감한 데이터를 자동으로 감지하는 방법을 보여줍니다. 이 솔루션은 Amazon Data Firehose를 사용하여 CloudWatch Logs 항목을 Amazon Simple Storage Service(Amazon S3. Macie는이 버킷에서 개인 식별 정보(PII), 금융 데이터 및 기타 민감한 콘텐츠를 주기적으로 스캔합니다. 인프라는 필요한 모든 AWS 서비스 및 구성을 프로비저닝하는 AWS CloudFormation 템플릿을 통해 배포됩니다.

CloudWatch Logs에는 민감한 사용자 정보를 실수로 포함할 수 있는 애플리케이션 데이터가 포함되는 경우가 많습니다. 이로 인해 규정 준수 및 보안 위험이 발생할 수 있습니다. 기존 로그 모니터링 접근 방식에는 민감한 데이터 자동 감지 기능이 없습니다. 이로 인해 잠재적 데이터 노출을 실시간으로 식별하고 대응하기 어려울 수 있습니다.

이 패턴은 로깅 시스템의 민감한 데이터에 대한 자동 탐지 및 알림을 제공하여 보안 팀과 규정 준수 책임자가 데이터 기밀을 유지하는 데 도움이 됩니다. 이 솔루션은 Amazon Simple Notification Service(Amazon SNS) 알림을 통해 선제적 인시던트 대응을 지원하며 민감한 데이터를 안전한 Amazon S3 버킷에 자동으로 격리합니다. 탐지 패턴을 사용자 지정하고 워크플로를 기존 보안 운영 프로세스와 통합할 수 있습니다.

사전 조건 및 제한 사항

사전 조건 

  • 활성 AWS 계정

  • CloudFormation 스택을 생성할 수 있는 권한

  • 모니터링하려는 CloudWatch Logs 로그 그룹

  • Amazon SNS에서 알림을 수신할 활성 이메일 주소

  • AWS CloudShell에 액세스

  • (선택 사항) 설치구성된 AWS Command Line Interface (AWS CLI)에 대한 액세스

제한 사항

아키텍처

대상 아키텍처

다음 다이어그램은 Macie를 사용하여 민감한 데이터에 대한 CloudWatch Logs 로그 항목을 검사하는 워크플로를 보여줍니다.

 

워크플로는 다음 단계를 보여줍니다.

  1. CloudWatch Logs 로그 그룹은 구독 필터의 적용을 받는 로그를 생성합니다.

  2. 구독 필터는 로그를 Amazon Data Firehose에 전달합니다.

  3. 로그는 Amazon Data Firehose 전송 스트림을 통과할 때 AWS Key Management Service (AWS KMS) 키로 암호화됩니다.

  4. 전송 스트림은 Amazon S3의 내보낸 로그 버킷으로 로그를 전송합니다.

  5. 매일 오전 4시에 Amazon EventBridge는 내보낸 로그 버킷의 민감한 데이터에 대한 Macie 스캔을 시작하는 AWS Lambda 함수를 시작합니다.

  6. Macie가 버킷에서 민감한 데이터를 식별하는 경우 Lambda 함수는 내보낸 로그 버킷에서 로그를 제거하고 로 암호화합니다 AWS KMS key.

  7. Lambda 함수는 데이터 격리 버킷에 민감한 데이터가 포함된 로그를 격리합니다.

  8. 민감한 데이터를 식별하면 Amazon SNS 주제가 시작됩니다.

  9. Amazon SNS는 민감한 데이터가 포함된 로그에 대한 정보로 구성한 이메일 주소로 이메일 알림을 보냅니다.

배포된 리소스

CloudFormation 템플릿은 대상 AWS 계정 및에 다음 리소스를 배포합니다. AWS 리전

  • Amazon S3 버킷 2개:

    • CloudWatch Logs 데이터를 저장하기 위한 내보낸 로그 버킷

    • 민감한 정보를 저장하기 위한 데이터 격리 버킷

  • Macie 결과에 응답하는 Amazon EventBridge 규칙

  • 이벤트를 시작하고 Amazon S3 버킷으로 로그를 내보내는AWS Lambda 함수

  • Amazon SNS 주제구독

  • Amazon Data Firehose 스트림

  • Macie 세션

  • Macie 사용자 지정 데이터 식별자

  • CloudWatch Logs 구독 필터

  • 버킷에 저장된 로그를 암호화하는AWS KMS

  • 솔루션에 필요한 AWS Identity and Access Management (IAM) 역할정책

도구

AWS 서비스

  • AWS CloudFormation를 사용하면 AWS 리소스를 설정하고, 빠르고 일관되게 프로비저닝하고, 수명 주기 전반에 걸쳐 AWS 계정 및에서 리소스를 관리할 수 있습니다 AWS 리전.

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

  • Amazon Data Firehose를 사용하면 지원되는 타사 서비스 공급자가 소유한 다른 AWS 서비스사용자 지정 HTTP 엔드포인트 및 HTTP 엔드포인트에 실시간 스트리밍 데이터를 제공할 수 있습니다.

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

  • AWS Key Management Service (AWS KMS)를 사용하면 암호화 키를 생성하고 제어하여 데이터를 보호할 수 있습니다.

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

  • Amazon Macie는 민감한 데이터를 검색하고, 데이터 보안 위험에 대한 가시성을 제공하고, 이러한 위험에 대한 자동 보호를 지원합니다.

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

  • Amazon Simple Storage Service(S3)는 원하는 양의 데이터를 저장, 보호 및 검색하는 데 도움이 되는 클라우드 기반 객체 스토리지 서비스입니다.

코드 리포지토리

이 패턴의 코드는 GitHub sample-macie-for-securing-cloudwatch-logs 리포지토리에서 사용할 수 있습니다.

모범 사례

CloudFormation 설명서의 CloudFormation 모범 사례를 따릅니다.

에픽

작업설명필요한 기술

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

로컬 워크스테이션에서 코드 리포지토리를 복제하려면 다음 명령을 입력합니다.

git clone https://github.com/aws-samples/sample-macie-for-securing-cloudwatch-logs
앱 개발자

(선택 사항) CloudFormation 템플릿을 편집합니다.

  1. main.yaml 파일을 엽니다.

  2. 다음 중 하나를 수행하여 템플릿을 사용자 지정합니다.

  3. main.yaml 파일을 저장하고 닫습니다.

앱 개발자

옵션 1 - 명령줄 파라미터와 함께 스크립트를 사용하여 배포합니다.

다음 명령을 입력하여 명령줄 파라미터를 사용하여 솔루션을 배포합니다. 여기서의 값은 Amazon Macie가 아직 활성화되지 않은 true 경우에만 enable-macie 입니다.

./scripts/test-macie-solution.sh --deploy-stack \ --stack-name <stack name> \ --email <email address> \ --enable-macie <true or false> \ --region <region> \ --resource-name <prefix for all resources> \ --bucket-name <bucket name>
일반 AWS

옵션 2 - 환경 변수가 있는 스크립트를 사용하여 배포합니다.

  1. 다음 명령을 입력하여 환경 변수를 정의합니다. 여기서의 값은 Amazon Macie가 아직 활성화되지 않은 true 경우에만 ENABLE_MACIE 입니다.

    export STACK_NAME=<stack name> export SNS_EMAIL=<email address> export ENABLE_MACIE=<true or false> export REGION=<region> export RESOURCE_NAME=<prefix for all resources> export BUCKET_NAME=<bucket name>
  2. 다음 명령을 입력하여 배포 전에 파라미터를 검증합니다.

    ./scripts/test-macie-solution.sh \ --validate-params \ --email <email address> \ --region <region>
  3. 다음 명령을 입력하여 솔루션을 배포합니다.

    ./scripts/test-macie-solution.sh --deploy-stack
일반 AWS

옵션 3 -를 사용하여 배포합니다 AWS CLI.

를 사용하여 솔루션을 배포하려면 다음 명령을 입력합니다 AWS CLI. 여기서의 값은 Amazon Macie가 아직 활성화되지 않은 true 경우에만 EnableMacie 입니다.

aws cloudformation create-stack \ --region us-east-1 \ --stack-name macie-for-securing-cloudwatch-logs \ --template-body file://app/main.yml \ --capabilities CAPABILITY_IAM \ --parameters \ ParameterKey=ResourceName,ParameterValue=<prefix for all resources> \ ParameterKey=BucketName,ParameterValue=<bucket name> \ ParameterKey=LogGroupName,ParameterValue=<path for log group> \ ParameterKey=SNSTopicEndpointEmail,ParameterValue=<email address> \ ParameterKey=EnableMacie,ParameterValue=<true or false>

옵션 4 -를 통해 배포합니다 AWS Management Console.

  1. AWS CloudFormation 콘솔을 엽니다.

  2. 화면 상단의 탐색 모음에서 스택 AWS 리전 을 생성할를 선택합니다.

  3. 스택 페이지에서 오른쪽 상단의 스택 생성을 선택하고 새 리소스 사용(표준)을 선택합니다.

  4. 스택 생성 페이지의 사전 조건 - 템플릿 준비에서 기존 템플릿 선택을 선택합니다.

  5. 템플릿 지정에서 템플릿 파일 업로드를 선택한 다음 복제된 리포지토리에서 main.yaml 템플릿을 업로드합니다.

  6. 다음을 선택합니다.

  7. 스택 세부 정보 지정 페이지의 스택 이름 상자에 스택 이름을 입력합니다.

  8. 파라미터 섹션에서 다음 템플릿 파라미터의 값을 지정합니다.

    • ResourceName: 모든 리소스의 접두사

    • BucketName: Amazon S3 버킷의 고유 이름

    • LogGroupName: CloudWatch Logs의 로그 그룹 이름

    • SNSTopicEndpointEmail: 알림을 위한 이메일 주소

    • EnableMacie: Macie가 아직 활성화되지 않은 true 경우 로 설정

    • (선택 사항) Region: 스택을 배포할 AWS 리전 입니다.

    • (선택 사항) TemplatePath: CloudFormation 템플릿 경로

  9. 다음을 선택합니다.

  10. 기능에서 이 템플릿이 IAM 리소스를 생성할 수 있음을 승인합니다를 선택하여 템플릿에서 IAM 리소스를 사용하도록 지정합니다.

  11. 다음을 선택합니다.

  12. 검토 및 생성 페이지에서 스택의 세부 정보를 검토합니다.

  13. 제출을 선택하여 스택을 시작합니다.

일반 AWS

배포 상태를 모니터링하고 배포를 확인합니다.

  1. 다음 명령을 입력하여 배포 상태를 모니터링합니다.

    ./scripts/test-macie-solution.sh \ --deployment-status \ --stack-name <stack name>
    참고

    새 스택의 이벤트 탭에서 스택 생성 진행 상황과 상태를 모니터링할 수도 있습니다. 자세한 내용은 스택 진행 상황 모니터링을 참조하세요.

  2. 상태가 CREATE_COMPLETE로 변경되면 스택 출력에서 리소스 정보를 검토합니다.

일반 AWS

Amazon SNS 구독을 확인합니다.

Amazon SNS 설명서의 Amazon SNS 구독 확인의 지침에 따라 Amazon SNS 구독을 확인합니다. Amazon SNS

앱 개발자
작업설명필요한 기술

옵션 1 - 자동 보고로 테스트합니다.

기본 스택 이름을 사용한 경우 다음 명령을 입력하여 솔루션을 테스트합니다.

./scripts/test-macie-solution.sh \ --full-test

사용자 지정 스택 이름을 사용한 경우 다음 명령을 입력하여 솔루션을 테스트합니다.

./scripts/test-macie-solution.sh \ --full-test \ --stack-name <stack name>

사용자 지정 스택 이름과 사용자 지정 파라미터를 사용한 경우 다음 명령을 입력하여 솔루션을 테스트합니다.

./scripts/test-macie-solution.sh --full-test \ --stack-name <stack name> \ --region <region> \ --log-group <log group path>
일반 AWS

옵션 2 - 대상 확인으로 테스트합니다.

  1. 다음 명령을 입력하여 민감한 정보로 테스트 데이터를 생성합니다.

    ./scripts/test-macie-solution.sh \ --generate-test-data \ --stack-name <stack name>

    이 명령은 다음 작업을 수행합니다.

    • 직원 IDs, 특허 IDs, 신용 카드 번호, 주민등록번호, 이메일 주소 등 사실적이고 민감한 데이터 패턴이 포함된 CloudWatch Logs 로그 항목을 생성합니다.

    • 포괄적인 테스트를 위해 민감한 로그 항목과 민감하지 않은 로그 항목을 모두 생성합니다.

    • 테스트 데이터 생성 프로세스에 대한 자세한 로깅을 제공합니다.

  2. 다음 명령을 입력하여 데이터 파이프라인 흐름을 확인합니다.

    ./scripts/test-macie-solution.sh \ --verify-pipeline \ --stack-name <stack name>

    이 명령은 다음 작업을 수행합니다.

    • CloudWatch Logs 항목이 Amazon Data Firehose로 스트리밍되는지 확인합니다.

    • 로그 데이터가 적절한 암호화를 통해 Amazon S3 버킷으로 전송되었는지 검증합니다.

    • Amazon S3 객체 스토리지의 접두사 구조가 올바른지 확인합니다.

    • 저장된 객체의 암호화 상태를 확인합니다.

    • 데이터 흐름 타이밍을 모니터링하고 처리를 위한 대기 기간을 제공합니다.

  3. 다음 명령을 입력하여 Macie 분류 작업을 시작합니다.

    ./scripts/test-macie-solution.sh \ --trigger-macie-job \ --stack-name <stack name>

    이 명령은 다음 작업을 수행합니다.

    • Lambda 함수를 통해 Macie 분류 작업을 수동으로 트리거합니다.

    • 작업 실행 상태를 모니터링하고 피드백을 제공합니다.

    • 실행 전에 Macie 서비스 가용성을 검증합니다.

    • 계정에서 Macie가 활성화되지 않은 경우를 처리합니다.

    • 자세한 작업 실행 결과를 제공합니다.

  4. 다음 명령을 입력하여 알림 및 데이터 격리를 검증합니다.

    ./scripts/test-macie-solution.sh \ --verify-alerts \ --stack-name <stack name>

    이 명령은 다음 작업을 수행합니다.

    • EventBridge 규칙이 올바르게 구성되고 활성 상태인지 확인합니다.

    • Amazon SNS 주제 구성 및 구독 상태를 검증합니다.

    • 데이터 격리 버킷 설정 및 권한을 확인합니다.

    • 격리 버킷으로의 민감한 데이터 이동을 모니터링합니다.

    • 전체 알림 워크플로 기능을 확인합니다.

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

옵션 1 - 자동 정리를 수행합니다.

기본 스택 이름을 사용한 경우 다음 명령을 입력하여 스택을 삭제합니다.

./scripts/cleanup-macie-solution.sh \ --full-cleanup

사용자 지정 스택 이름을 사용한 경우 다음 명령을 입력하여 스택을 삭제합니다.

./scripts/cleanup-macie-solution.sh \ --full-cleanup \ --stack-name <stack name>

사용자 지정 스택 이름과 사용자 지정 파라미터를 사용한 경우 다음 명령을 입력하여 스택을 삭제합니다.

./scripts/cleanup-macie-solution.sh \ --full-cleanup \ --stack-name <stack name> \ --region <region> \ --disable-macie <true or false>
일반 AWS

옵션 2 step-by-step 수행합니다.

  1. 활성 프로세스를 중지하려면 다음 명령을 입력합니다.

    ./scripts/cleanup-macie-solution.sh \ --stop-processes \ --stack-name <stack name>

    이 명령은 다음 작업을 수행합니다.

    • 새 작업 실행을 방지하기 위해 EventBridge 규칙을 끕니다.

    • 현재 실행 중인 Macie 분류 작업을 중지합니다.

    • 보류 중인 Macie 작업 실행을 취소합니다.

    • 대기열에서 보류 중인 Amazon SNS 메시지를 모두 지웁니다.

    • 중지된 각 프로세스에 대한 상태 업데이트를 제공합니다.

  2. 다음 명령을 입력하여 Amazon S3 버킷을 비웁니다.

    ./scripts/cleanup-macie-solution.sh \ --empty-buckets \ --stack-name <stack name>

    이 명령은 다음 작업을 수행합니다.

    • CloudWatch Logs용 버킷에서 모든 객체를 제거합니다.

    • 데이터 격리 Amazon S3 버킷에서 모든 객체를 제거합니다.

    • 완료되지 않은 멀티파트 업로드를 삭제합니다.

    • Amazon S3 버전 관리가 활성화된 경우 버전이 지정된 객체 처리

    • 객체 수 및 삭제 진행 상황 업데이트 제공

  3. 스택을 삭제하려면 다음 명령을 입력합니다 CloudFormation .

    ./scripts/cleanup-macie-solution.sh \ --delete-stack \ --stack-name <stack name>

    이 명령은 다음 작업을 수행합니다.

    • CloudFormation 스택 삭제 프로세스를 시작합니다.

    • 실시간 상태 업데이트를 통해 삭제 진행 상황을 모니터링합니다.

    • 자세한 오류 보고를 통해 삭제 실패 처리

    • 계속하기 전에 스택 제거가 완료될 때까지 기다립니다.

    • 문제 해결을 위한 스택 이벤트 기록을 제공합니다.

  4. 다음 명령을 입력하여 Macie 리소스를 정리합니다.

    ./scripts/cleanup-macie-solution.sh \ --cleanup-macie \ --stack-name <stack name>

    이 스택은 다음을 수행합니다.

    • 솔루션에서 생성한 사용자 지정 데이터 식별자를 제거합니다.

    • 나머지 Macie 작업 아티팩트 및 조사 결과를 정리합니다.

    • 스택에서 Macie 세션을 활성화한 경우 Macie 세션을 비활성화합니다.

    • Macie 리소스가 다른 애플리케이션과 공유되는 경우를 처리합니다.

    • 각 Macie 구성 요소에 대한 세부 정리 상태를 제공합니다.

일반 AWS

정리를 확인합니다.

  1. 다음 명령을 입력하여 스택이 삭제되었는지 확인합니다.

    aws cloudformation describe-stacks \ --stack-name <stack name> \ --region <region>
  2. 다음 명령을 입력하여 Amazon S3 버킷이 삭제되었는지 확인합니다.

    aws s3 ls | grep macie
  3. 다음 명령을 입력하여 Macie 사용자 지정 데이터 식별자가 제거되었는지 확인합니다.

    aws macie2 list-custom-data-identifiers \ --region <region>
  4. 다음 명령을 입력하여 나머지 리소스가 있는지 확인합니다.

    ./scripts/cleanup-macie-solution.sh \ --verify-cleanup \ --stack-name <stack name>
일반 AWS

문제 해결

문제Solution

CloudFormation 스택 상태는 CREATE_FAILED로 표시됩니다.

CloudFormation 템플릿은 CloudWatch Logs에 로그를 게시하도록 구성됩니다. Amazon EC2 인스턴스에 연결할 필요가 AWS Management Console 없도록에서 로그를 볼 수 있습니다. 자세한 내용은 콘솔에서 CloudFormation 로그 보기(블로그 게시물)를 참조하세요.AWS

CloudFormation delete-stack 명령이 실패합니다.

삭제하려면 일부 리소스는 비어 있어야 합니다. 예를 들어, 버킷 또는 보안 그룹을 삭제하려면 Amazon S3 버킷의 객체를 모두 삭제하거나 Amazon EC2 보안 그룹의 인스턴스를 모두 제거해야 합니다. 자세한 내용은 Amazon S3 설명서의 스택 실패 삭제를 참조하세요.

파라미터를 구문 분석할 때 오류가 발생했습니다.

AWS CLI 또는 CloudFormation 콘솔을 사용하여 값을 전달할 때 따옴표를 추가합니다.

관련 리소스