[AWS] Amazon Macie
정의
Amazon Macie 는 AWS 가 관리하는 데이터 보안 및 프라이버시 서비스 로, 머신러닝과 패턴 매칭을 이용해 S3 버킷의 민감 정보 (PII, PHI, 금융 정보, credential 등) 를 자동 탐지하고 데이터 보안 자세 (posture) 를 평가합니다.
한 줄 요약: “S3 에 이상한 민감 정보가 저장돼 있진 않나?” 에 답하는 서비스.
왜 Macie 인가
조직의 흔한 문제
- S3 버킷 규모 가 커지면 어떤 버킷에 무슨 데이터가 있는지 파악 불가
- 개발자가 실수로 PII 를 로그에 남기거나 backup 에 포함
- 컴플라이언스 요구 (GDPR, HIPAA, PCI DSS) 는 민감 정보 위치를 명확히 알아야
- 누출 리스크: public 버킷에 실수로 개인정보 저장
수동 발견은 불가능. 자동 스캐닝 + 분류 필요.
두 가지 핵심 기능
1. Sensitive Data Discovery
S3 객체를 스캔해 민감 정보 유형 + 위치 식별.
- Managed Data Identifiers (150+ 사전 정의): 신용카드, 여권번호, IP, PHI, credential 등
- Custom Data Identifiers: 정규식으로 자체 정의
- Allow Lists: false-positive 제외
2. S3 Security Posture
S3 계정 전체의 보안 상태 자동 평가.
- 공개 접근 (public read/write) 감지
- 암호화 되지 않은 버킷
- 다른 계정 공유
- 복제 상태
- Object ownership 설정
주요 개념
Managed Data Identifiers (관리형 식별자)
AWS 가 유지 관리하는 150+ 개 사전 정의 유형. 예:
- PII (개인식별정보): 이름, 생년월일, 이메일, 전화, 주소, 주민등록번호
- 금융: 신용카드 (Visa/MC/AmEx/Discover), CVV, 은행 계좌, IBAN, SWIFT
- 의료 (PHI): NPI (National Provider ID), Medicare ID, DEA
- 여행/신분: 여권번호 (국가별), 운전면허, 사회보장번호
- Credential: AWS access key, private key, JWT, GitHub token, database password
- 지역별: 한국 주민등록번호, 일본 My Number, 인도 Aadhaar
각 identifier 는 패턴 + 컨텍스트 키워드 조합으로 감지 (예: 신용카드 번호 근처 “credit card” 텍스트).
Custom Data Identifiers
정규식 기반 자체 식별자:
{
"name": "Employee ID",
"regex": "EMP-[0-9]{6}",
"keywords": ["employee", "emp id"],
"ignoreWords": ["template", "example"],
"maximumMatchDistance": 50
}
keywords근처에서만 감지 -> false-positive 감소ignoreWords로 예외 처리
Findings (발견 사항)
Macie 가 감지한 결과. 두 유형:
- Sensitive Data Findings: 특정 객체에 민감 정보 발견
- Policy Findings: 버킷 정책 문제 (public 접근, 암호화 없음 등)
각 finding 은 심각도 (Low/Medium/High) 와 카테고리로 분류.
Automated Sensitive Data Discovery (자동 발견)
2023년 도입. Macie 활성화 시 자동으로 조직 전체 S3 스캔.
- 일일 샘플링: 각 버킷에서 대표 객체 스캔
- 비용 예측 가능: 정액제 (계정당 월)
- 지속적 인벤토리: 매일 업데이트되는 데이터 자세
수동 discovery job 없이도 baseline 보안 상태 파악.
아키텍처
flowchart LR S3[S3 Buckets] --> M[Macie Engine] M --> MDI[Managed Data<br/>Identifiers] M --> CDI[Custom Data<br/>Identifiers] M --> AL[Allow Lists] MDI --> F[Findings] CDI --> F F --> EB[EventBridge] F --> SH[Security Hub] EB --> Lambda[Lambda] EB --> SNS[SNS Alert]
Discovery Job 실행
명시적 스캐닝 job 생성:
aws macie2 create-classification-job \
--job-type ONE_TIME \
--name "quarterly-pii-scan" \
--s3-job-definition '{
"bucketDefinitions": [
{
"accountId": "123456789012",
"buckets": ["prod-logs", "prod-user-uploads"]
}
],
"scoping": {
"includes": {
"and": [
{
"simpleScopeTerm": {
"comparator": "GTE",
"key": "OBJECT_SIZE",
"values": ["1024"]
}
}
]
}
}
}' \
--managed-data-identifier-selector RECOMMENDED
Job 유형:
- ONE_TIME: 한 번 스캔
- SCHEDULED: 정기 (daily / weekly / monthly)
Scoping: 크기, 확장자, 태그, prefix 로 필터.
지원 파일 형식
Macie 가 파싱하고 스캔:
- 텍스트: TXT, CSV, TSV, HTML, XML, JSON, JSONL
- 문서: PDF, Word (DOC/DOCX), Excel (XLS/XLSX), PowerPoint (PPT/PPTX)
- 아카이브: TAR, ZIP, GZIP (내부 파일 스캔)
- 이메일: EML, MSG
- 로그: Apache, log4j 형식
지원 안 함: 이미지 (JPG, PNG), 비디오, 실행 파일, 암호화된 파일.
Finding 예시
{
"id": "abc123",
"severity": {"description": "High", "score": 3},
"type": "SensitiveData:S3Object/Personal",
"resourcesAffected": {
"s3Bucket": {
"name": "user-uploads",
"publicAccess": {"effectivePermission": "PUBLIC_READ"}
},
"s3Object": {
"key": "backups/users-2026-01.csv",
"size": 15728640
}
},
"classificationDetails": {
"result": {
"sensitiveData": [
{
"category": "PERSONAL_INFORMATION",
"totalCount": 4523,
"detections": [
{"type": "USA_SOCIAL_SECURITY_NUMBER", "count": 4520},
{"type": "USA_DRIVERS_LICENSE", "count": 3}
]
},
{
"category": "FINANCIAL_INFORMATION",
"totalCount": 892,
"detections": [
{"type": "CREDIT_CARD_NUMBER", "count": 892}
]
}
]
}
}
}
이 finding = “public read S3 버킷의 CSV 파일에 SSN 4520개 + 신용카드 892개”.
EventBridge 자동 대응
{
"source": ["aws.macie"],
"detail-type": ["Macie Finding"],
"detail": {
"severity": {"description": ["High"]},
"type": [{"prefix": "SensitiveData:"}]
}
}
Lambda 로 자동 조치:
- 즉시 S3 버킷 public access 차단
- Slack / PagerDuty 알림
- Jira 티켓 생성
- 객체 격리 (다른 버킷으로 이동, KMS 재암호화)
Multi-Account (Organizations 통합)
Delegated administrator 계정이 조직 전체 Macie 관리:
- Central 계정에서 모든 계정 버킷 인벤토리 조회
- Central 에서 통합 finding 대시보드
- 정책/식별자를 중앙에서 배포
관리자 위임:
aws macie2 enable-organization-admin-account \
--admin-account-id 111111111111
요금
Macie 는 두 요금 축:
- S3 버킷 평가 (posture): 계정당 월 정액 (버킷 수/객체 수 기반)
- Sensitive data discovery: GB 당 (스캔된 데이터)
Cost 관리 팁:
- Scoping 으로 큰 파일 (백업, 로그) 제외 후 시작
- Sampling (Automated discovery) 로 baseline 확보
- 필요 부분만 전체 스캔
주의: 큰 조직은 첫 스캔에서 요금 폭발 가능. Free trial (30일) 로 볼륨 예측 후 진행.
GuardDuty 와의 차이
| 서비스 | 초점 |
|---|---|
| Macie | S3 안 데이터 의 민감성 |
| **[[aws-guardduty | GuardDuty]]** |
- Macie: “어떤 데이터 가 노출됐나?”
- GuardDuty: “누가 이상하게 API 를 호출했나?”
병행 사용.
실전 사용 사례
1. 컴플라이언스 (GDPR/HIPAA/PCI DSS)
- 조직 전체 S3 스캔 -> PII/PHI/PCI 위치 지도
- 감사인에게 “우리는 이런 데이터가 어디 있는지 압니다” 증명
- Audit Manager 에 evidence 자동 공급
2. 개발자 실수 감지
- 프로덕션 로그에 API 키/토큰 우연히 저장
- 백업 파일에 원문 credential
- 개발용 dump 파일에 실제 사용자 데이터
Custom Data Identifier + 지속 스캔으로 즉시 감지.
3. Zero-Trust Data
- 새 S3 버킷마다 자동 스캔
- Public 접근 + 민감 정보 = 즉시 alert
- Bucket policy 자동 tightening
4. 데이터 이관 검증
- 마이그레이션 대상 데이터에 예상 밖 민감 정보?
- Redshift/Snowflake export 전 스캔
5. AI/ML 학습 데이터
- 학습 데이터셋에 실수로 포함된 PII
- LLM fine-tuning 전 검증
함정
WARNING
첫 discovery 요금 폭발 가능. Free tier 로 30일 baseline 후 volume 확인.
CAUTION
False positives. 정규식 기반이라 이메일/전화 등 흔한 패턴에 오탐. Allow list + custom keyword 로 튜닝.
WARNING
암호화된 객체 스캔 불가. Client-side 암호화 (SSE-C 등) 는 Macie 가 못 봄. Server-side (SSE-KMS) 는 Macie service role 이 복호화 권한 있어야.
IMPORTANT
이미지/영상 파일은 안 봄. OCR 없음. 스크린샷 PII 는 별도 도구 (Textract + Comprehend).
CAUTION
KMS 사용 버킷은 Macie IAM role 에 kms:Decrypt 부여. 안 하면 스캔 실패.
WARNING
Finding 데이터의 민감성. Finding 자체가 “SSN 4000개 여기 있음” 이라 metadata 유출 시 위험. Macie finding S3 export 는 KMS + 접근 제한.
관련 위키
- S3 - 스캔 대상
- GuardDuty - 활동 기반 위협 탐지 (짝)
- Inspector - 취약점 스캔 (인프라)
- Shield - DDoS 방어
- CloudTrail - 활동 로깅
- Config - 리소스 구성
- Audit Manager - 감사 증거
- EventBridge - 자동 대응
- KMS - 저장 암호화
- IAM - Macie 접근 제어
- Differential Privacy - 관련 프라이버시 기법
이 글의 용어 (11개)
- [AWS] Amazon GuardDutycloud
- 정의 Amazon GuardDuty 는 AWS 계정 활동 로그를 머신러닝 과 위협 인텔리전스 로 지속 분석하여 악의적 활동/이상 행동을 감지하는 관리형 위협 탐지 서비스입니다. …
- [AWS] Amazon Inspectorcloud
- 정의 Amazon Inspector (v2, 2021+) 는 AWS 워크로드의 취약점 (CVE) 과 의도치 않은 네트워크 노출 을 지속 스캔하는 서비스입니다. EC2, ECR 이…
- [AWS] Audit Manager (Automated Compliance Auditing)cloud
- 정의 AWS Audit Manager 는 AWS 사용량에 대한 감사 (audit) 준비 프로세스를 자동화 하는 서비스입니다. 규제 프레임워크 (CIS, PCI DSS, HIPAA…
- [AWS] CloudTrail (API Activity Logging)cloud
- 정의 AWS CloudTrail 은 AWS 계정의 API 호출 및 사용자 활동을 기록 하는 감사 로깅 서비스입니다. "누가, 언제, 어디서, 어떤 API 를, 어떤 리소스에 대해…
- [AWS] Config (Resource Configuration Tracking)cloud
- 정의 AWS Config 는 AWS 계정 안 리소스의 구성 (configuration) 상태를 지속 기록 하고, 정책 규칙 (Config Rules) 위반을 자동 감지하는 서비스…
- [AWS] EventBridge: 이벤트 버스, 스케줄러, partner sourcescloud
- 정의 EventBridge = AWS 의 통합 event bus. 옛 CloudWatch Events 의 후계. AWS service 이벤트 + custom 이벤트 + SaaS …
- [AWS] IAM: User, Role, Policy, STScloud
- 정의 IAM (Identity and Access Management) = AWS 의 권한 관리 전부. User, Group, Role, Policy 로 구성. "누가 어떤 리소…
- [AWS] KMS: 암호화 키 관리, envelope encryptioncloud
- 정의 KMS (Key Management Service) = 암호화 키 중앙 관리. envelope encryption + IAM 통합 + 감사 로그. 키 종류 | 종류 | 의미…
- [AWS] S3: object storage, storage classes, lifecyclecloud
- 정의 S3 = AWS 의 object storage. bucket + key + object. 11 9's durability (99.999999999%), 무한 확장. 2026…
- [AWS] Shield (DDoS Protection)cloud
- 정의 AWS Shield 는 AWS 워크로드를 분산 서비스 거부 (DDoS, Distributed Denial of Service) 공격으로부터 보호하는 관리형 서비스입니다. S…
- Differential Privacy: (ε, δ) 로 정량화하는 프라이버시 보장ml
- 정의 Differential Privacy (DP, 차분 프라이버시) 는 데이터셋에 대한 질의 (query) 결과에 calibrated noise 를 추가함으로써, 한 개인의 데…
💬 댓글