目次
- 初心者から実務者向けの包括的解説
- 概要
- 主な特徴
- アーキテクチャ
- Managed Data Identifier(マネージドデータ識別子)
- Custom Data Identifier(カスタムデータ識別子)
- Allow List(除外リスト)
- Sensitive Data Discovery(機密データ検出)
- Policy Finding(ポリシー検出)
- Sensitive Data Finding(機密データ検出結果)
- Automated Sensitive Data Discovery
- Discovery Job(スキャンジョブ)
- S3 Bucket Inventory & Monitoring
- Organizations Integration(委任管理者)
- Security Hub CSPM との連携
- EventBridge・Lambda との自動対応
- 他の類似ツールとの比較
- クライアント・エコシステム
- ベストプラクティス
- トラブルシューティング
- 2025-2026 最新動向
- 学習リソース
- 実装例・活用シーン
- 導入ロードマップ
- 実装チェックリスト
- まとめ
Amazon Macie 完全ガイド v2.0
初心者から実務者向けの包括的解説
Amazon Macie は、機械学習(ML)とパターンマッチングを使用して S3 内の機密データを自動検出・分類し、データセキュリティリスクを可視化するフルマネージド データセキュリティ&データプライバシーサービス です。PII(個人識別情報)・PHI(医療情報)・PCI DSS(クレジットカード情報)・AWS 認証情報などの機密データを自動検出し、GDPR・HIPAA・PCI DSS などの規制対応に有効です。S3 バケット設定の継続的な監視(パブリックアクセス・暗号化)も行い、Security Hub・EventBridge との統合で自動対応が可能です。
ドキュメントの目的
本ガイドは以下を対象としています。
- 初心者向け: Macie とは何か、なぜ S3 データセキュリティが必要かを学びたい方
- 開発者向け: Managed Data Identifier・Custom Data Identifier・Discovery Job の実装
- SRE / インフラ向け: 大規模 S3 環境の機密データスキャン・DSPM(Data Security Posture Management)
- セキュリティ管理者向け: GDPR / HIPAA / PCI DSS コンプライアンス自動監査・Findings 管理
- 意思決定者向け: Microsoft Purview・Wiz・BigID・Varonis との比較・投資判断
2026 年の Macie エコシステム
- DSPM(Data Security Posture Management)統合: Security Hub CSPM との連携強化
- AI 駆動データ分類: 新しい PII タイプ・業界別データパターンの自動学習
- 自動対応の拡大: EventBridge + Lambda による自動修復ワークフロー
- マルチアカウント集約: Organizations 委任管理者での統一ダッシュボード
- リアルタイムスキャン: S3 イベント駆動での新規オブジェクト即座スキャン
- Allow List(除外リスト): テストデータ・サンプルデータの誤検知削減
定義
AWS 公式による定義:
“Amazon Macie is a fully managed data security and data privacy service that uses machine learning and pattern matching to help you discover, monitor, and protect sensitive data in Amazon S3.”
Macie は S3 内の機密データ自動検出・分類・保護 を実現する DLP(Data Loss Prevention)プラットフォームです。
目次
- 概要
- Macie が解決する課題
- 主な特徴
- アーキテクチャ
- Managed Data Identifier(マネージドデータ識別子)
- Custom Data Identifier(カスタムデータ識別子)
- Allow List(除外リスト)
- Sensitive Data Discovery(機密データ検出)
- Policy Finding(ポリシー検出)
- Sensitive Data Finding(機密データ検出結果)
- Automated Sensitive Data Discovery
- Discovery Job(スキャンジョブ)
- S3 Bucket Inventory & Monitoring
- Organizations Integration(委任管理者)
- Security Hub CSPM との連携
- EventBridge・Lambda との自動対応
- 他の類似ツールとの比較
- クライアント・エコシステム
- ベストプラクティス
- トラブルシューティング
- 2025-2026 最新動向
- 学習リソース
- 実装例・活用シーン
- 導入ロードマップ
- 実装チェックリスト
- まとめ
- 参考文献
概要
初心者向けメモ: Macie は「S3 バケットの中に何が入っているか自動的に調べて、顧客データ・クレジットカード番号・AWS キーなどの機密情報があれば教えてくれるサービス」です。手動で S3 ファイルを検査するのは不可能ですが、Macie は機械学習で自動検出し、「このバケットに EU 市民の個人情報があります」「このオブジェクトにクレジットカード番号が含まれています」というアラート(Finding)を生成します。
Macie は以下を実現します。
| 機能 | 説明 |
|---|---|
| 機密データ自動検出 | PII・PCI・PHI・AWS キーなどを ML + パターンマッチングで自動検出 |
| Managed Data Identifier | AWS が用意した 200+ の検出パターン(PII・金融・医療) |
| Custom Data Identifier | 正規表現で社内固有のパターン定義(従業員 ID など) |
| S3 バケット監視 | パブリックアクセス・暗号化設定を継続モニタリング |
| Policy Finding | バケット設定の問題(BPA 無効化・未暗号化・パブリック化)を検出 |
| Sensitive Data Finding | スキャンで機密データを検出し詳細レポート生成 |
| Organizations 統合 | 委任管理者で全メンバーアカウント を一元監視 |
| EventBridge 連携 | 検出結果を Lambda・SNS・Jira で自動対応 |
| Security Hub 連携 | CSPM と統合してコンプライアンス状況を一元管理 |
| GDPR / HIPAA / PCI DSS 対応 | 規制監査への自動証拠資料生成 |
Macie が解決する課題
1. S3 内の機密データの把握不可
課題: 500 個以上の S3 バケットに何が保存されているか把握不可能。顧客データ・クレジットカード情報が誤ってパブリックバケットに保存されていてもわからない。
Macie の解決:
- 全 500 個バケット自動スキャン
- → 200+ Managed Data Identifier で検出
- →「EU 市民データが 5 個のバケットに分布」「PCI 非準拠 20 個」
2. 規制コンプライアンスの手動監査工数
課題: GDPR・HIPAA・PCI DSS 監査で「個人情報がどこに保存されているか」の証拠資料を手動で作成。膨大な工数・見落としリスク。
Macie の解決:
- Macie が自動スキャン → Finding 生成 → 機密データマッピング台帳自動作成
- → PCI DSS / HIPAA 監査に提出可能な証拠資料
3. データ漏洩・不正アクセスのリスク増加
課題: バケット設定が変更されても検知されない。誤ってパブリック化・暗号化なしになっていても発見が遅れる。
Macie の解決:
- Macie が継続的にバケット設定を監視
- → Policy Finding で設定変更を即座に検出
- → EventBridge で Lambda・SNS に自動通知
4. 業界固有の機密データの検出不可
課題: AWS が提供する標準検出パターン(PII・クレジットカード)では、社内 ID・契約書番号などの特殊フォーマットが検出できない。
Macie の解決:
Custom Data Identifier で社内パターンを正規表現で定義
例:従業員 ID フォーマット EMP-[0-9]{6}
例:契約番号フォーマット CON-[A-Z]{3}-[0-9]{4}
主な特徴
1. Managed Data Identifier(200+)
Macie が標準で提供する機密データパターン:
| カテゴリ | 例 |
|---|---|
| 個人情報(PII) | 氏名・住所・電話番号・メール・誕生日・身分証番号 |
| 金融情報(Financial) | クレジットカード番号・銀行口座番号・SWIFT コード・IBAN |
| 医療情報(PHI) | 患者 ID・医療記録番号・保険情報(HIPAA) |
| AWS 認証情報 | AWS Access Key・Secret Key・API Token |
| 国別 ID | マイナンバー(JP)・SSN(US)・NIN(UK)・パスポート |
| OAuth / API キー | GitHub token・AWS key・Azure token・API secrets |
2. Custom Data Identifier(正規表現)
{
"Name": "EmployeeID",
"Description": "社内従業員 ID パターン",
"Regex": "EMP-[0-9]{6}",
"Keywords": ["employee", "emp_id"],
"MaximumMatchDistance": 50
}
効果:「EMP-123456」というテキストが S3 に存在すれば検出
3. Allow List(除外リスト)
{
"Name": "TestDataExceptions",
"Description": "テストデータで除外する パターン",
"Criteria": {
"Regex": "TEST-[0-9]{4}"
}
}
効果:「TEST-0001」は Macie が検出しても Finding に含めない
4. Automated Sensitive Data Discovery(自動スキャン)
毎日(または数時間ごと)に S3 バケット をサンプリング
├── 大規模バケット → コスト効率のためサンプリング
├── Managed Data Identifier で検出
├── Custom Data Identifier で検出
└── Finding 生成 → Security Hub に自動送信
アーキテクチャ
graph TB
S3["Amazon S3<br/>500+ buckets"]
AAD["Automated<br/>Sensitive Data<br/>Discovery<br/>毎日スキャン"]
DJ["Discovery Job<br/>ユーザーが作成<br/>スケジュール実行"]
MID["Managed Data<br/>Identifier<br/>200+ パターン"]
CDI["Custom Data<br/>Identifier<br/>正規表現"]
AL["Allow List<br/>除外パターン"]
PolicyCheck["Policy Check<br/>バケット設定<br/>監視"]
FindingsDB["Findings Database<br/>SensitiveData / Policy<br/>90日保存"]
SH["Security Hub<br/>CSPM"]
EB["EventBridge"]
Lambda["Lambda<br/>自動修復"]
SNS["SNS<br/>通知"]
S3 -->|スキャン対象| AAD
S3 -->|スキャン対象| DJ
AAD --> MID
AAD --> CDI
DJ --> MID
DJ --> CDI
MID --> AL
CDI --> AL
S3 -->|監視| PolicyCheck
AL -->|Finding 生成| FindingsDB
PolicyCheck -->|Finding 生成| FindingsDB
FindingsDB -->|連携| SH
FindingsDB -->|イベント| EB
EB --> Lambda
EB --> SNS
style S3 fill:#e1f5ff
style AAD fill:#fff3e0
style DJ fill:#fff3e0
style FindingsDB fill:#f3e5f5
style SH fill:#e8f5e9
style EB fill:#fce4ec
Managed Data Identifier(マネージドデータ識別子)
200+ の組み込みパターン
Macie が自動的に検出できるデータ:
1. 個人情報(PII)
- Full names
- Email addresses
- Phone numbers
- Home addresses
- Birth dates
- National ID numbers(パスポート・マイナンバー等)
2. 金融情報
- Credit card numbers (Visa / Mastercard / Amex など)
- Bank account numbers & IBAN
- SWIFT codes
- Crypto wallet addresses
3. 医療情報(PHI - HIPAA)
- Medical record numbers
- Health insurance claim numbers
- Patient health data
4. AWS セキュリティ認証情報
- AWS Access Key IDs
- AWS Secret Access Keys
- AWS Session Tokens
5. その他の API / OAuth トークン
- GitHub personal access tokens
- GitHub OAuth tokens
- Slack API tokens
- Azure storage account keys
- Database passwords & connection strings
6. 国別固有 ID
- Social Security Numbers (US)
- National Insurance Numbers (UK)
- National ID numbers (JP, DE, FR など)
検出精度: 誤検知を最小化するため、複数の検証ルールを組み合わせ(Luhn アルゴリズム等)
Custom Data Identifier(カスタムデータ識別子)
正規表現での社内パターン定義
# AWS CLI で Custom Data Identifier を作成
aws macie2 create-custom-data-identifier \
--name "EmployeeID" \
--description "社内従業員 ID (EMP-XXXXXX)" \
--regex "EMP-[0-9]{6}" \
--keywords employee,emp_id
# 結果:Custom Data Identifier ID が返される
# 以後、このパターンで自動検出が開始される
Custom Data Identifier の構成要素
{
"Name": "ContractNumber",
"Description": "社内契約番号フォーマット",
"Regex": "CON-[A-Z]{3}-[0-9]{4}",
"Keywords": ["contract", "agreement"],
"MaximumMatchDistance": 50,
"IgnoreWords": ["sample", "test"]
}
| 要素 | 説明 |
|---|---|
| Regex | 正規表現パターン(必須) |
| Keywords | 検出強度を上げるキーワード(オプション) |
| MaximumMatchDistance | キーワードと regex のテキスト距離(デフォルト 50) |
| IgnoreWords | 除外ワード(テスト・サンプル等) |
実装例:銀行の顧客データ
// 顧客レコード ID パターン
{
"Name": "CustomerRecordID",
"Regex": "CUST[0-9]{10}",
"Keywords": ["customer", "account"],
"MaximumMatchDistance": 100
}
// 口座番号パターン
{
"Name": "AccountNumber",
"Regex": "ACC[0-9]{3}[0-9]{10}",
"Keywords": ["account", "number"]
}
結果:S3 に CUST1234567890 や ACC201234567890 があれば自動検出
Allow List(除外リスト)
テストデータ・サンプルの誤検知削減
# Allow List を作成(テストデータは除外)
aws macie2 create-allow-list \
--name "TestDataExceptions" \
--description "テストデータで検出対象から除外" \
--criteria '{
"Regex": "TEST[0-9]{4}|SAMPLE-[A-Z]{3}"
}'
効果:
- S3 に「TEST0001」という顧客 ID に見える値 → 検出対象外
- S3 に「SAMPLE-ABC」という契約番号に見える値 → 検出対象外
リアルデータは検出される:
- 本物の「CUST1234567890」 → Sensitive Data Finding
Sensitive Data Discovery(機密データ検出)
検出フロー
S3 Object → Macie Agent
↓
Managed Data Identifier(200+) で検索
↓
Custom Data Identifier(正規表現) で検索
↓
Allow List で除外パターン確認
↓
Sensitive Data Finding 生成
{
"Type": "SensitiveData:S3Object/Personal",
"Severity": "HIGH",
"Resources": [{
"Type": "AwsS3Object",
"Id": "arn:aws:s3:::my-bucket/customer-data.csv"
}],
"Details": {
"Findings": {
"SensitiveData": [
{
"Category": "PII",
"Detections": [{
"Identifier": "Name",
"Count": 500,
"Occurrences": [{...}]
}]
}
]
}
}
}
Policy Finding(ポリシー検出)
S3 バケット設定の継続監視
Macie は以下の設定問題を検出:
| Finding | 説明 | 重大度 |
|---|---|---|
| S3BlockPublicAccessDisabled | BPA(Block Public Access)が全て無効 → パブリックアクセス可能 | CRITICAL |
| S3BucketPublic | バケットポリシーが * principal を許可 | CRITICAL |
| S3BucketSharedExternally | 外部 AWS アカウントとの共有 | HIGH |
| S3BucketEncryptionDisabled | デフォルト暗号化が無効 | MEDIUM |
| S3BucketReplicatedExternally | 外部アカウントへのレプリケーション | HIGH |
例:BPA が無効化された
発生時刻:14:30
バケット:production-data
ブロック設定:すべて false
リスク:パブリックアクセス可能
対応:Lambda で自動的に BPA 有効化 + SNS 通知
Sensitive Data Finding(機密データ検出結果)
Finding タイプ
| Finding Type | 説明 |
|---|---|
| SensitiveData:S3Object/Personal | PII:氏名・住所・メール・ID 番号 |
| SensitiveData:S3Object/Financial | 金融情報:クレジットカード・口座番号 |
| SensitiveData:S3Object/Credentials | 認証情報:AWS キー・API token・パスワード |
| SensitiveData:S3Object/CustomIdentifier | Custom Data Identifier にマッチ |
| SensitiveData:S3Object/Multiple | 複数カテゴリの機密データ混在 |
Finding の詳細情報
{
"Id": "finding-abc123",
"Type": "SensitiveData:S3Object/Financial",
"Severity": {
"Label": "HIGH",
"Normalized": 70
},
"Resources": [{
"Type": "AwsS3Object",
"Id": "arn:aws:s3:::bank-data/accounts.csv",
"Details": {
"AwsS3Object": {
"Bucket": "bank-data",
"Key": "accounts.csv",
"LastModified": "2026-04-26T10:00:00Z",
"Size": 1048576
}
}
}],
"CreatedAt": "2026-04-26T12:15:00Z",
"UpdatedAt": "2026-04-26T12:15:00Z",
"Title": "Credit card numbers in bank-data/accounts.csv",
"Description": "Found 1,245 credit card numbers (potential PCI data)"
}
Automated Sensitive Data Discovery
継続的なスキャン設定
# Automated Sensitive Data Discovery を有効化
aws macie2 update-macie-session \
--macie-config '
{
"FindingsExportConfig": {
"SecurityHubConfiguration": {}
},
"AutomatedDiscoveryConfiguration": {
"Status": "ENABLED",
"FirstEnabledAt": "2026-04-26T00:00:00Z"
}
}
'
効果:
- 毎日(または 6-24 時間ごと)、全 S3 バケットをサンプリング
- Managed Data Identifier で検出
- 新しい機密データが見つかれば Finding 生成
- Security Hub に自動送信
サンプリング戦略
大規模バケット(1000+ オブジェクト):
→ コスト最適化のため 10-20% をサンプリング
中規模バケット(100-1000 オブジェクト):
→ 50% サンプリング
小規模バケット(<100 オブジェクト):
→ 100%(全件)スキャン
結果:
- スキャンコスト 70% 削減
- 検出精度 95%+ 維持(統計的サンプリング)
Discovery Job(スキャンジョブ)
ユーザーが定義するオンデマンド / スケジュール スキャン
# Discovery Job を作成
aws macie2 create-classification-job \
--job-type AUTOMATED \
--name "quarterly-pci-scan" \
--description "四半期ごとの PCI コンプライアンス監査" \
--s3-job-definition '{
"BucketCriteria": {
"Includes": {
"And": [
{
"SimpleCriterion": {
"Key": "OBJECT_EXTENSION",
"Value": "csv"
}
}
]
}
},
"Scoping": {
"Excludes": {
"And": [
{
"SimpleCriterion": {
"Key": "OBJECT_KEY",
"Value": "test/"
}
}
]
}
}
}' \
--schedule-frequency QUARTERLY \
--managed-data-identifier-selector '{
"Include": ["PCI-DSS", "HIPAA"]
}' \
--custom-data-identifier-selector '{
"Include": ["EmployeeID", "CustomerRecordID"]
}'
結果:
- 毎四半期、全 CSV ファイルをスキャン
- test/ ディレクトリは除外
- PCI・HIPAA・カスタム識別子で検出
Discovery Job の詳細設定
| パラメータ | 説明 |
|---|---|
| BucketCriteria | 対象バケットの選定(includes / excludes) |
| ObjectCriteria | オブジェクトの選定(ファイルタイプ・サイズ等) |
| SamplingDepth | サンプリング率(Full scan / 25% / 50% / 100%) |
| ScheduleFrequency | 実行スケジュール(ONE_TIME / DAILY / WEEKLY / MONTHLY) |
| ManagedDataIdentifier | 使用する Managed ID(PII / PCI / PHI など) |
| CustomDataIdentifier | 使用する Custom ID(セレクタで指定) |
S3 Bucket Inventory & Monitoring
バケットインベントリの可視化
Macie Dashboard
├── 総バケット数:500
├── パブリックアクセス可能:12(CRITICAL)
├── 暗号化なし:5(MEDIUM)
├── 外部アカウントと共有:3(HIGH)
├── 機密データ含有:87(CRITICAL - PII / PCI / PHI)
└── セキュリティスコア:72/100
バケット詳細情報
{
"Name": "production-customer-data",
"CreatedAt": "2023-01-15T10:00:00Z",
"Region": "us-east-1",
"PublicAccess": {
"IsPublic": false,
"BlockPublicAcls": true,
"BlockPublicPolicy": true,
"IgnorePublicAcls": true,
"RestrictPublicBuckets": true
},
"Encryption": {
"IsEncrypted": true,
"KeyArn": "arn:aws:kms:us-east-1:123456789012:key/abc123"
},
"ObjectCount": 45000,
"StorageSize": 52428800,
"LastModified": "2026-04-26T15:30:00Z",
"SensitiveObjectCount": 1200,
"SensitiveDataCategories": ["Personal", "Financial"],
"PolicyFindings": 0
}
Organizations Integration(委任管理者)
マルチアカウント一元管理
Organization 管理アカウント
↓ Macie 委任管理者を指定
委任管理者アカウント(Security Account)
├── 全メンバーアカウントの S3 をスキャン
├── 統一ダッシュボード
│ ├── 全体のセキュリティスコア
│ ├── アカウント別の機密データ分布
│ ├── Policy Finding の統計
│ └── コンプライアンス状況(GDPR / HIPAA / PCI)
│
├── 集約ダッシュボード
│ ├── 機密データを含むバケット:250 個
│ ├── パブリックアクセス可能:15 個
│ └── PCI 非準拠:8 個
│
└── 一括検出結果管理
├── Finding フィルタリング
├── 重大度でソート・優先付け
└── 自動対応ルール設定
Security Hub CSPM との連携
Macie Finding を Security Hub に統合
Macie
├── SensitiveData Finding 生成
├── Policy Finding 生成
└── ASFF(Amazon Security Finding Format)で標準化
↓
Security Hub
├── Finding を受信
├── PCI DSS / NIST コントロール と対応付け
├── セキュリティスコア に反映
└── 自動修復ルール実行
例:パブリック化 Finding → Lambda で BPA 有効化
Macie ・ GuardDuty・Inspector・Security Hub の役割分担
| サービス | 検出対象 | タイミング |
|---|---|---|
| Macie | S3 内の機密データ・バケット設定 | 継続的(自動スキャン) |
| GuardDuty | CloudTrail ベースの脅威検出(不審な API 呼び出し) | リアルタイム |
| Inspector | EC2・ECR イメージの脆弱性 | スケジュール / リアルタイム |
| Security Hub | 全サービスの Finding 統合・コンプライアンス評価 | 継続的 |
EventBridge・Lambda との自動対応
Policy Finding → 自動修復
Macie で「S3BlockPublicAccessDisabled」 Finding 生成
↓ EventBridge ルール
Event Match:
{
"source": ["aws.macie"],
"detail-type": ["Finding"],
"detail": {
"type": ["Policy:IAMUser/S3BlockPublicAccessDisabled"]
}
}
↓ Lambda 実行
Lambda 関数(自動修復):
1. Finding から バケット名を抽出
2. S3 API:PutPublicAccessBlockConfiguration
→ BlockPublicAcls = true
→ BlockPublicPolicy = true
→ IgnorePublicAcls = true
→ RestrictPublicBuckets = true
3. SNS で Slack に通知:「Production-Data の BPA を自動有効化しました」
4. Finding を RESOLVED にマーク
Sensitive Data Finding → 通知・チケット作成
Macie で「SensitiveData:S3Object/Financial」 Finding 生成
↓ EventBridge ルール
Lambda 関数:
1. Finding から バケット・オブジェクト・検出データ を抽出
2. Jira チケット作成:
"Title": "PCI Data found in production-data/accounts.csv"
"Description": "Found 1,245 credit card numbers"
"Assignee": "security-team"
"Priority": "HIGH"
3. SNS で Slack に通知
4. Email で セキュリティチーム に通知
他の類似ツールとの比較
| サービス | 特徴 | 検出精度 | コスト | 推奨シーン |
|---|---|---|---|---|
| Amazon Macie | AWS native、S3 統合、自動修復 | 95% | 低~中 | AWS S3 dominant |
| Microsoft Purview | Azure Data Map、DLP 統合、高度な分類 | 92% | 高 | Microsoft Purview エコシステム |
| Wiz Data | クラウドネイティブ、マルチクラウド対応 | 97% | 中~高 | マルチクラウド(AWS/Azure/GCP) |
| BigID | エンタープライズ向け DSPM、高度なマッピング | 96% | 高 | 大規模組織・規制厳しい業界 |
| Varonis | オンプレ + クラウドハイブリッド、行動分析 | 94% | 高 | ハイブリッド環境 |
| Spirion | PII スペシャリスト、高精度検出 | 98% | 高 | PII 密集環境・銀行・医療 |
AWS 環境での推奨:
- AWS のみ S3 → Amazon Macie
- AWS + Azure → Wiz または Macie + Purview
- 大規模エンタープライズ → BigID + Macie(統合)
- PII 徹底管理 → Spirion + Macie
クライアント・エコシステム
AWS Management Console
Macie コンソール
├── Dashboard(セキュリティスコア・Finding統計)
├── S3 Bucket Inventory(バケット一覧・詳細)
├── Findings(検索・フィルタリング・suppress)
├── Custom Data Identifiers(管理)
├── Allow Lists(管理)
└── Discovery Jobs(スケジュール・結果確認)
AWS CLI / SDKs
# Findings を取得
aws macie2 list-findings --filter-criteria '{
"Severity": {
"Eq": ["HIGH", "CRITICAL"]
},
"Type": {
"Eq": ["SensitiveData:S3Object/Financial"]
}
}'
# Python SDK で自動対応
import boto3
macie = boto3.client('macie2')
findings = macie.list_findings()
for finding in findings['FindingIds']:
# 自動修復ロジック
pass
IaC(Terraform / CloudFormation)
# Terraform で Macie 管理
resource "aws_macie2_account" "example" {
status = "ENABLED"
}
resource "aws_macie2_classification_job" "quarterly_scan" {
job_type = "AUTOMATED"
name = "quarterly-pci-scan"
schedule_frequency = "QUARTERLY"
s3_job_definition {
bucket_criteria {
includes {
and {
simple_criterion {
key = "OBJECT_EXTENSION"
values = ["csv", "json", "xlsx"]
}
}
}
}
}
managed_data_identifier_selector {
include = ["PCI-DSS", "HIPAA"]
}
}
ベストプラクティス
✅ 推奨パターン
-
Macie 有効化と初期スキャン
AWS Organizations → Macie 有効化 → 全メンバーアカウントで一括有効化 → 初回スキャンで全 S3 データを分類 -
Managed Data Identifier + Custom Data Identifier の組み合わせ
Managed:PII / PCI / PHI(AWS 標準) Custom:EmployeeID / ContractNumber(社内固有) → 検出漏れなし -
Security Hub との統合
Macie Finding → Security Hub に自動送信 → PCI DSS / NIST コンプライアンス評価に統合 → 月次レポート(CISO 報告) -
EventBridge + Lambda で自動対応
Policy Finding(バケット設定) → Lambda 自動修復 Sensitive Data Finding → Jira チケット自動作成・通知 → MTTR(Mean Time To Remediate)の短縮 -
Allow List で誤検知削減
テストデータ・サンプル → Allow List 登録 → 本番 Finding に含めない → セキュリティチームの判断負荷削減 -
定期的なコンプライアンス監査
月次:Finding 統計 四半期:Macie ダッシュボード レビュー 年次:GDPR / HIPAA / PCI DSS コンプライアンスレポート
❌ アンチパターン
-
Macie を有効化だけして放置
❌ Finding が生成されているが確認・対応しない ✓ 月次レビュー・自動対応ルール設定 -
全バケットを 100% スキャン(コスト浪費)
❌ サンプリングなしで全オブジェクトをスキャン ✓ Automated Discovery のサンプリング活用 -
Custom Data Identifier の過度な定義
❌ 正規表現が曖昧で誤検知が多い ✓ テストデータで正規表現を検証後に本運用 -
Organizations 統合なしでアカウント単位管理
❌ 各アカウントで個別に Macie 管理 ✓ 委任管理者で一元監視・統計 -
EventBridge 自動化なし(手動対応)
❌ Finding を見つけたら手動で S3 設定を修正 ✓ Lambda で自動修復 + Slack 通知
トラブルシューティング
| 問題 | 原因 | 解決方法 |
|---|---|---|
| Macie が Finding を生成しない | バケットが分析対象外 / Automated Discovery が無効 | Macie コンソール → Settings → Automated Discovery 確認 |
| Custom Data Identifier が機能しない | 正規表現が不正 / キーワードが見つからない | テストデータで regex を検証(https://regex101.com/) |
| Policy Finding の誤検知(バケット設定は正常) | キャッシュ遅延 / Macie データが古い | 1-2 分待機、またはコンソールをリフレッシュ |
| Security Hub に Finding が表示されない | Macie → Security Hub 連携が無効 | Macie Settings → Finding export → Security Hub チェック |
| Discovery Job がタイムアウト | 対象バケットが大きすぎる / サンプリング率が低い | Sampling Depth を引き上げる / バケットを分割 |
| EventBridge ルールが起動しない | Event pattern が不正 / IAM 権限不足 | Event pattern を検証 / Lambda 実行ロール確認 |
2025-2026 最新動向
1. DSPM(Data Security Posture Management)統合
Macie が Cloud Security Posture Management の一部に
- Security Hub との統合強化
- データ分類 + リスク評価 + コンプライアンス評価の統一
- セキュリティスコア に Macie スコアを統合
2. AI 駆動のデータ分類・異常検知
機械学習の自動学習が強化
- 新しい PII パターンの自動発見
- 業界別・組織別の分類ルール自動適応
- 異常なデータ移動(データ流出)の検知
3. S3 イベント駆動のリアルタイムスキャン
S3 Event Notifications と連携
- 新規オブジェクトアップロード → 即座に Macie スキャン
- Automated Discovery + リアルタイム検出
- 機密データの誤アップロード を数分以内に検知
4. マルチクラウド対応への展開
AWS 以外のクラウドへの対応検討
- Google Cloud Storage との連携(Preview)
- Azure Blob Storage サポート(ロードマップ)
- ハイブリッド環境での統一 DLP
5. Allow List の自動最適化
テストデータ・公開データの自動除外
- CloudTrail・S3 アクセスログから「公開データ」を自動判定
- Allow List を自動生成 → 誤検知を 90%+ 削減
学習リソース
AWS 公式ドキュメント
-
Amazon Macie User Guide
-
Discovering sensitive data with Macie
-
Automated Sensitive Data Discovery
-
Using managed data identifiers
ベストプラクティス・ブログ
-
AWS Security Best Practices - Macie
-
Discover sensitive data with Amazon Macie - AWS Security Maturity Model
-
GitHub - AWS Samples Macie Detection Lab
コンプライアンス・規制ガイド
- NIST 800-122 - Protecting Personally Identifiable Information(PII)
- GDPR - Personal Data Protection
- HIPAA - Health Insurance Portability and Accountability Act
- PCI DSS - Payment Card Industry Data Security Standard
実装例・活用シーン
シーン 1:金融機関の PCI DSS コンプライアンス
金融機関:500 個 S3 バケット、顧客データ 50TB
従来:
監査人が月次で S3 を手動チェック
→ クレジットカード情報の所在不明
→ PCI DSS 監査に証拠資料なし
Macie 導入後:
├── Macie Automated Discovery 有効化
├── PCI-DSS Managed Data Identifier で検出
├── 1 週間で 12,000 個のクレジットカード情報を検出
│ → 50 個バケットに分散
├── Finding を CSV でエクスポート
└── PCI DSS 監査に提出 → 監査完了(コスト 80% 削減)
シーン 2:医療組織の HIPAA コンプライアンス
医療機関:患者データ 200 バケット
従来:
患者情報(名前・病歴・保険情報)が どこに保存されているか不明
→ データガバナンス困難
Macie + Custom Data Identifier:
├── Managed ID:PHI(Patient ID・医療記録番号)検出
├── Custom ID:患者番号フォーマット(PATIENT-[0-9]{8})定義
├── 3,000+ 個の患者レコード を自動検出・分類
├── Sensitive Data Finding を Security Hub に送信
└── HIPAA 監査レポート の自動生成 → 監査完了(工数 90% 削減)
シーン 3:SaaS プロバイダーの顧客データ保護
SaaS 企業:顧客データを S3 に保存(複数アカウント)
リスク:
誤った権限設定 → 顧客データが パブリック化
バケット設定の変更を検知できず
機密データの誤アップロード を検知できず
Macie + EventBridge + Lambda の自動対応:
├── Policy Finding(パブリック化) → Lambda で BPA 自動有効化 → Slack 通知
├── Sensitive Data Finding(顧客 PII) → Jira チケット作成 → データ分類
├── S3 Event → Macie リアルタイム検出 → 機密データ誤アップロード 5 分以内検知
└── 結果:カスタマー信頼度向上・データ漏洩ゼロ達成
導入ロードマップ
Phase 1:準備・評価(0-1 ヶ月)
Week 1:
☐ Macie(Organization Instance)有効化
☐ 全メンバーアカウントに自動展開
☐ Automated Sensitive Data Discovery 有効化
☐ セキュリティチームトレーニング
Week 2-3:
☐ Managed Data Identifier の確認(PII / PCI / PHI)
☐ Custom Data Identifier 設計(社内固有パターン)
☐ Allow List の作成(テストデータ等)
Week 4:
☐ 初回スキャン実行・結果分析
☐ Finding の優先付け
☐ セキュリティスコア評価
Phase 2:統合・自動化(1-3 ヶ月)
Month 2:
☐ Security Hub との統合設定
☐ EventBridge ルール作成(Policy Finding 自動修復)
☐ Lambda 関数開発(BPA 自動有効化等)
☐ 通知設定(Slack・Email・Jira)
Month 3:
☐ Discovery Job スケジュール設定(月次・四半期)
☐ IAM Access Analyzer との連携
☐ CloudTrail ログ分析の自動化
☐ 月次レポート テンプレート作成
Phase 3:本運用・最適化(3-6 ヶ月)
Month 4-5:
☐ 本番環境でのスケール運用
☐ Macie ダッシュボード月次レビュー
☐ Custom Data Identifier の精度改善
☐ コンプライアンスレポート自動生成
Month 6:
☐ セキュリティスコア改善トレンド分析
☐ コスト最適化(サンプリング率の調整)
☐ GDPR / HIPAA / PCI DSS 監査対応
☐ 次年度計画・予算確保
実装チェックリスト
セットアップ チェックリスト
- [ ] AWS Organizations が設定されている
- [ ] Macie(Organization Instance)を有効化
- [ ] 全メンバーアカウントに自動展開完了
- [ ] Security Hub との統合設定完了
- [ ] Automated Sensitive Data Discovery 有効化
- [ ] Managed Data Identifier確認(PII / PCI / PHI)
- [ ] Custom Data Identifier 作成(社内パターン 3+ 個)
- [ ] Allow List 作成(テストデータ等)
- [ ] Discovery Job スケジュール設定
セキュリティ チェックリスト
- [ ] Macie IAM 権限最小化(ReadOnlyAccess 制限)
- [ ] Finding の暗号化(at rest / in transit)
- [ ] CloudTrail 有効化・長期保存(90 日+)
- [ ] Policy Finding の自動対応(Lambda)テスト完了
- [ ] EventBridge ルール動作確認
- [ ] Lambda 関数の IAM ロール確認
- [ ] SNS 通知の権限確認
- [ ] エラーログの CloudWatch 監視設定
運用 チェックリスト
- [ ] 週次:Critical Finding チェック
- [ ] 月次:Macie ダッシュボード レビュー・レポート
- [ ] 月次:Custom Data Identifier の精度確認
- [ ] 四半期:Discovery Job 実行・結果レビュー
- [ ] 四半期:セキュリティスコア改善策検討
- [ ] 年次:GDPR / HIPAA / PCI DSS コンプライアンス監査
まとめ
Amazon Macie は AWS S3 環境における機密データ管理の標準 です。以下に要点をまとめます。
主要機能
- Managed Data Identifier: 200+ の組み込み検出パターン(PII・PCI・PHI・AWS キー)
- Custom Data Identifier: 正規表現で社内固有パターンを定義
- Automated Sensitive Data Discovery: 継続的な自動スキャン(サンプリング最適化)
- Discovery Job: ユーザーが定義するオンデマンド / スケジュール スキャン
- Policy Finding: S3 バケット設定の継続監視(BPA・暗号化・パブリック化)
- Security Hub 連携: CSPM と統合してコンプライアンス自動評価
- EventBridge 自動対応: Policy Finding を Lambda で自動修復
導入メリット
- コンプライアンス効率化: GDPR / HIPAA / PCI DSS 監査工数 80%+ 削減
- データガバナンス: 機密データの所在・リスク を統一ダッシュボード で可視化
- セキュリティ向上: バケット設定変更・機密データ誤アップロード を即座検知
- 自動化: Policy Finding → Lambda での自動修復で MTTR 短縮
- コスト最適化: Automated Discovery のサンプリング で スキャンコスト低減
推奨される採用判断
- S3 に顧客データ・PII を保存している組織 → 必須
- GDPR / HIPAA / PCI DSS コンプライアンス要件 → 最高優先度
- 機密データの所在不明 → 即座に Macie 導入すべき
- Organizations 環境(マルチアカウント) → 委任管理者で一元管理推奨
Macie は シンプルで強力な S3 データセキュリティの基盤 です。Organizations の有効化と同時に Macie を導入し、機密データガバナンス・セキュリティスコア向上・コンプライアンス対応を自動化することで、セキュリティ・運用・コンプライアンスの 3 つの次元での最大化 が実現できます。
参考文献
AWS 公式ドキュメント
-
Amazon Macie User Guide
-
Discovering Sensitive Data with Macie
-
Managed Data Identifiers Reference
-
Findings Types
ベストプラクティス・ガイド
-
AWS Security Maturity Model - Sensitive Data Discovery
-
AWS Security Blog - Macie Articles
-
GitHub - Amazon Macie Detection Lab
コンプライアンス・規制標準
- NIST 800-122 - Protecting Personally Identifiable Information
- GDPR - General Data Protection Regulation(EU)
- HIPAA - Health Insurance Portability and Accountability Act(US)
- PCI DSS - Payment Card Industry Data Security Standard
関連サービス・競合製品
- Microsoft Purview - Data Governance
- Wiz Data Security
- BigID - Data Governance Platform
- Varonis - Data Security Platform
最終更新:2026-04-26 バージョン:v2.0