監査法人や審査機関から、ある日こう問われます。
「この顧客データに、誰が・いつ・どの権限で・どこからアクセスしたかを、改ざんされていない形で出せますか?」
この一問に、ログのスクリーンショットではなく「暗号学的に改ざん不能な証拠」で即答できるか。それが、PCI DSS・SOC 2・ISO 27001・HIPAA といった規制対応の本丸です。私はサーバーレス(Lambda + DynamoDB)の決済プラットフォームの信頼性レイヤーを設計・主導し、本番稼働中の二重課金0件を維持してきましたが、その規律の核心は「正しさを、後から否認不能(non-repudiation)に証明できる状態」を最初から設計しておくことでした。監査証跡はインシデント対応のためだけにあるのではありません。「やった/やっていない」を第三者に証明するための装置です。
この記事は、AWS CloudTrail を監査の証拠(audit evidence)として設計するための実践ガイドです。CloudTrail の基本設定・Terraform初期構築・イベント種別・整合性検証の基礎はCloudTrail 完全ガイド(ピラー記事)に譲り、ここではコンプライアンス監査に出せる証拠を作るという一点に絞って深掘りします。
この記事のルール:コンプライアンスは法的な重みを持ちます。本記事は、要求番号・保持期間・コントロールIDを権威ある一次情報(PCI SSC/ISO/HHS/AWS公式)に照合した範囲のみで記載し、未確認のものは「(要確認)」と明示します。本記事は実装の解説であって、法的助言や監査の合否保証ではありません。自組織の準拠判断は、必ず該当規格の原文と、契約する監査人・QSA・審査機関に確認してください。
0. メンタルモデル:CloudTrailは「証拠」を生む。だが、設定しなければ証拠にならない
最初に、この記事全体を貫く一行を固定します。
CloudTrail は「誰が・何を・いつ・どこから」という監査証跡を自動で生む。しかし、それが監査人に出せる『証拠』になるかは、顧客側の「設定・保管・レビュー」次第である。
「CloudTrailを有効化した=コンプライアンスを満たした」は、現場で最も多い誤解です。CloudTrailを有効化しただけの状態には、監査で必ず突かれる穴があります。
| よくある状態 | 監査での問題 |
|---|---|
| イベント履歴だけで満足している | 履歴は過去90日・管理イベントのみ。恒久保存ではない → 12ヶ月保持要件を満たせない |
| 証跡(Trail)はあるが整合性検証OFF | 「このログは改ざんされていない」を証明できない → 証拠能力が弱い |
| ログS3バケットが普通のバケット | 権限を持つ者(や侵入者)がログを消せる → 否認不能性が崩れる |
| ログを溜めているだけ | 日次レビューの記録がない → PCI DSS等の「レビューした証跡」要求を満たせない |
つまり、コンプライアンス対応とは「CloudTrailを賢く使う」ことではなく、**「証拠として成立する条件を全部埋める」**ことです。本記事の構成はそのまま、その条件のチェックリストになっています。
0-1. すべての起点:AWS 責任共有モデル
監査人と話すとき、最初に共有すべき地図がこれです。コンプライアンスはAWSと顧客の分担作業であり、CloudTrailはその「顧客側」に属します。
┌─────────────────────── AWS 責任共有モデル ───────────────────────┐
│ │
│ 顧客の責任:Security IN the Cloud(クラウド「内」のセキュリティ)│
│ ├─ どのログを取得するか(証跡/データイベントの設計) │
│ ├─ どこに・何年保管するか(S3 + Object Lock + ライフサイクル) │
│ ├─ 暗号化・アクセス制御(SSE-KMS / 最小権限) │
│ ├─ ログのレビュー(日次レビューの自動化と記録) │
│ └─ 証拠の提出(監査人へのパッケージング) │
│ ── ここが CloudTrail の領域。本記事の対象 ── │
├──────────────────────────────────────────────────────────────────┤
│ AWS の責任:Security OF the Cloud(クラウド「自体」のセキュリティ)│
│ ├─ 物理データセンター・ハードウェア・ハイパーバイザ │
│ ├─ マネージドサービスの基盤 │
│ └─ AWS自身のコンプライアンス認証(SOC/PCI/ISO…) │
│ ── その証明は AWS Artifact で入手する(後述5章)── │
└──────────────────────────────────────────────────────────────────┘
公式の表現は明快です——AWS = "security of the cloud"、顧客 = "security in the cloud"。AWSがどれだけ準拠したインフラを提供しても、その上でログを取らない・消せる・レビューしない設計をすれば、監査は通りません。CloudTrailが自動でコンプライアンスを満たすことは、構造上ありえないのです。
1. 監査人は何を求めるか:監査証跡(audit trail)の5要素
フレームワークが何であれ、監査ログに対する要求の骨格は同じです。監査人が知りたいのは、本質的にこの5つです。
| 監査証跡の要素 | 問い | CloudTrailの該当フィールド |
|---|---|---|
| Who(誰が) | どのIDが操作したか | userIdentity(IAMユーザ/ロール/AssumedRole/ARN/accountId) |
| What(何を) | どのAPIを呼んだか | eventName / eventSource(例: DeleteObject / s3.amazonaws.com) |
| When(いつ) | 正確な時刻は | eventTime(UTC, ISO8601) |
| Where(どこから) | 送信元は | sourceIPAddress / userAgent |
| Outcome(結果) | 成功か失敗か | errorCode / errorMessage(無ければ成功) |
CloudTrailのレコードは、まさにこの5要素を構造化JSONで持っています。実際のレコードを見れば、監査要件がそのままフィールドに写像されていることが分かります。
{
"eventTime": "2026-06-27T04:21:09Z",
"eventSource": "s3.amazonaws.com",
"eventName": "GetObject",
"sourceIPAddress": "203.0.113.42",
"userAgent": "aws-cli/2.x",
"userIdentity": {
"type": "AssumedRole",
"arn": "arn:aws:sts::111122223333:assumed-role/PaymentOpsRole/alice",
"accountId": "111122223333",
"sessionContext": { "attributes": { "mfaAuthenticated": "true" } }
},
"requestParameters": { "bucketName": "cardholder-data-prod", "key": "txn/2026/...json" },
"errorCode": "AccessDenied"
}
このレコード1件で、監査の主要な問いに答えられます。「
PaymentOpsRoleを引き受けたaliceが、MFA認証済みで、203.0.113.42から、カード会員データバケットの特定オブジェクトをGetObjectしようとして、拒否された」。これが「証拠」の最小単位です。
ここで決定的に重要なのは、「このJSONは改ざんされていない」を証明できないと、証拠としての価値が崩れるという点です。被疑者が「そのログは後で書き換えられたものだ」と否認したら終わりだからです。否認不能性をどう作るかは3章で扱います。
1-1. 「ログ」と「証拠」を分けるもの:監査適格性の3条件
同じCloudTrailレコードでも、監査人が証拠として採用できるかは、レコードの中身ではなく**その周囲の保証(assurance)**で決まります。現場で監査人が突くのは、いつもこの3点です。
| 条件 | 監査人の問い | 満たす仕組み | 本記事の章 |
|---|---|---|---|
| 完全性(Integrity) | このログは配信後に変更・削除されていないか? | ログ整合性検証(SHA-256 / digestチェーン) | 3-1 |
| 不変性(Immutability) | そもそも誰かが消せる状態になっていないか? | S3 Object Lock コンプライアンスモード(WORM) | 3-2 |
| 網羅性(Completeness) | 対象期間に「記録漏れ」はないか? | digestチェーンの連続性検証(「ある期間に配信ゼロ」も証明可能) | 3-1 / 6-2 |
多くのチームは「Who/What/Whenを記録できている」で安心しますが、監査で落ちるのは大抵この3条件のどれかです。レコードの質ではなく、レコードを守る仕組みの有無が合否を分けます。次章でフレームワーク要求を見たあと、3章でこの3条件をまとめて埋めます。
2. フレームワーク別:監査ログ要求とCloudTrailの対応
ここからが本題です。主要4フレームワークの「監査ログに関する要求」と、それをCloudTrailでどう満たすかを対応させます。
重要な前提:以下の要求番号・保持期間は、確認できた一次情報の範囲で記載します。規格の原文は改定され、また有償・著作権で保護されているため、自組織で引用・準拠判断する際は、必ず最新の原文(PCI SSC文書ライブラリ、ISO/IEC原本、eCFR、AICPA TSC)と監査人に確認してください。
2-1. PCI DSS v4.0.1 — Requirement 10
PCI DSS の Requirement 10 は "Log and Monitor All Access to System Components and Cardholder Data"(システムコンポーネントとカード会員データへの全アクセスのログ取得と監視)。CloudTrailが最も直接的に効く領域です。
バージョンについて:2026年6月時点の有効版は v4.0.1(2024年6月公開の限定改訂)。v4.0は2024年12月末で廃止され、要求番号の新設・削除・リナンバリングはありません。51の将来日付要求は2025年3月31日に必須化済みです。
| PCI DSS要求(v4.0.1) | 要旨 | CloudTrailでの満たし方 |
|---|---|---|
| 10.2.x(監査ログの実装) | 個々のユーザアクセス・特権操作・認証情報へのアクセス等を記録 | 管理イベント+必要なデータイベントを記録する証跡を作成。カード会員データバケットはS3データイベントを有効化 |
| 10.3.x(ログの保護) | ログの改ざん・不正変更から保護 | ログ整合性検証(ON)+S3 Object Lock(WORM)+SSE-KMS+最小権限バケットポリシー(3章) |
| 10.4.1(日次レビュー) | セキュリティイベント・該当コンポーネントのログを少なくとも日次でレビュー | EventBridge/CloudWatch/Athenaでレビューを自動化し、レビュー実施の記録を残す(6章) |
| 10.4.1.1(自動レビュー) | 監査ログレビューを自動化された仕組みで実施(v4.0新設、2025-03-31必須) | レビューをツール化(手動のみは不可) |
| 10.5.1(保持) | 監査ログ履歴を少なくとも12ヶ月保持し、直近3ヶ月は即時アクセス可能に | S3に12ヶ月以上保管。直近3ヶ月はS3標準(即時)、それ以降はGlacier系へライフサイクル移行(4章) |
数値の扱いについて(要確認):上記の 「12ヶ月保持/直近3ヶ月は即時アクセス可能(10.5.1)」「日次レビュー(10.4.1)」は、複数のQSA系情報源とAWSのマッピングで一貫して確認できましたが、逐語の引用としては PCI SSC 文書ライブラリの v4.0.1 原本(著作権保護・有償)で最終確認してください。要求番号(10.4.1 / 10.5.1)と実質は確度が高いものとして扱えます。
PCI DSS対応で実務上いちばん効くのは、「カード会員データを保存・処理・転送するシステムコンポーネント」のアクセスを確実に拾うことです。S3のカード会員データバケットは管理イベントだけでは不十分で、**データイベント(オブジェクトレベルの読み書き)**を明示的に有効化する必要があります(データイベントは1コピー目から課金されるので、対象バケットを絞るのがコスト設計の勘所——料金最適化スポーク参照)。
2-2. SOC 2 — Trust Services Criteria(信頼サービス基準)
SOC 2 は **認証(certification)ではなく、CPAによる「報告書(attestation)」**です。固定の「コントロール一覧」は存在せず、**AICPAの Trust Services Criteria(TSC)という「基準」**に対して、自組織のコントロールが有効に運用されているかを監査人が評価します。CloudTrailは、その中の以下の共通基準(Common Criteria, CC)に対する証拠を提供します。
| TSC 共通基準 | 領域 | CloudTrailが提供する証拠 |
|---|---|---|
| CC6(Logical and Physical Access Controls) | 論理・物理アクセス制御 | 誰がどのリソースへアクセスしたかの記録(userIdentity+アクセスAPI) |
| CC7(System Operations) | 監視・異常/セキュリティイベントの検知 | 最も適合度が高い。継続的なAPIアクティビティ監視・検知のエビデンス |
| CC8(Change Management) | 変更管理 | インフラ・設定変更の記録(Create*/Update*/Delete*等の管理イベント) |
SOC 2では「コントロールXを満たす」より、**「CC6/CC7/CC8 という基準に、自社のコントロールが対応している」**という言い方をします。基準には Points of Focus(着眼点)という非強制の補助ガイドが付きますが、これはチェックリストではありません。在スコープのカテゴリは組織が選択しますが、Security(共通基準)は常に必須です。
CloudTrailの強みは、SOC 2のType II(一定期間にわたる運用有効性)で問われる「その期間ずっと監視が機能していたか」を、digestチェーンの連続性(3章)で示せる点にあります。「監視を入れた」だけでなく「監視が途切れず動き続けた」を証明できるのが、Type II対応で効きます。
2-3. ISO/IEC 27001:2022 — Annex A(A.8.15 / A.8.16)
ISO/IEC 27001 は2022年版で Annex A が再編されました。ログと監視は次の2コントロールに対応します。
| ISO 27001:2022 Annex A | タイトル | CloudTrailでの満たし方 |
|---|---|---|
| A.8.15 | Logging(ログ取得) | 証跡(Trail)でAPIアクティビティを継続記録。整合性検証でログ自体を保護 |
| A.8.16 | Monitoring activities(監視活動) | 異常なAPIパターンの監視・検知(EventBridge/CloudWatch)。A.8.16は2022版で新設 |
コントロール番号について:2013年版では **A.12.4「Logging and monitoring」**という見出しの下に3つの副管理策(A.12.4.1〜3)がありました。2022版で A.8.15「Logging」がそれらを統合し、A.8.16「Monitoring activities」が新設されています。番号・タイトルは複数の信頼できる情報源で一致を確認しましたが、**原本(ISO/IEC 27001:2022, 有償)**での最終確認を推奨します。引用時は規格番号「8.15 / 8.16」を用いるのが正確です。
ISO対応では「ログを取っている」だけでなく、A.8.15が求める「ログの保護」(改ざん・削除・不正アクセスからの保護)が問われます。ここがまさに、整合性検証+Object Lockの出番です(3章)。
2-4. HIPAA セキュリティルール — §164.312(b) Audit controls
HIPAA(米国の医療情報保護法)のセキュリティルールは、技術的セーフガードとして監査統制を要求します。これは米国連邦規則(CFR)でありパブリックドメインなので、逐語で引用できます。
45 CFR §164.312(b) — Standard: Audit controls(監査統制) "Implement hardware, software, and/or procedural mechanisms that record and examine activity in information systems that contain or use electronic protected health information." (ePHI を含む/使用する情報システムにおけるアクティビティを記録し検査するための、ハードウェア/ソフトウェア/手続き的メカニズムを実装すること。)
| HIPAA要求 | 要旨 | CloudTrailでの満たし方 |
|---|---|---|
| §164.312(b) Audit controls | ePHIを扱うシステムのアクティビティを記録・検査する仕組み | ePHIを保存するリソース(S3/DynamoDB等)へのデータイベントを含む証跡で「記録」を、自動レビュー(6章)で「検査」を実現 |
§164.312(b) は実装仕様(required/addressable)を持たない「Standard(必須)」です。条文は「メカニズムを実装せよ」とだけ述べ、具体的な技術は問わない——だからこそ、CloudTrail+自動レビューという実装でこれを満たせます。なお、医療データをAWSで扱う場合はAWSとの BAA(事業提携契約) が前提になります(本記事のスコープ外、契約面で要確認)。
3. 改ざん不能な証拠を作る:整合性検証 + S3 Object Lock(WORM)
ここが本記事の技術的な核です。「ログがある」と「ログが証拠になる」の差は、否認不能性(non-repudiation)で決まります。 これを2層で作ります。
- 暗号学的な証明:ログ整合性検証(=「このログは配信後に変更されていない」を数学的に示す)
- 物理的な不変性:S3 Object Lock コンプライアンスモード(=「そもそも誰も消せない・上書きできない」)
3-1. 第1層:ログ整合性検証(SHA-256 / digestチェーン)
CloudTrailのログ整合性検証は、SHA-256でハッシュ化し、SHA-256 with RSAで署名する仕組みです。1時間ごとにdigestファイルを生成し、各digestは直前のdigestを参照してチェーンを成します。これにより、ログファイルの変更・削除を検出でき、さらに「ある期間にログが1件も配信されていない」ことすら証明できます。
公式の非否認性の表現は強力です。
"a validated log file enables you to assert positively that the log file itself has not changed, or that particular user credentials performed specific API activity. The CloudTrail log file integrity validation process also lets you know if a log file has been deleted or changed, or assert positively that no log files were delivered to your account during a given period of time."
Terraformでは、証跡作成時に整合性検証を有効化するだけです(基本構成はピラー記事を参照。ここでは要点のみ)。
resource "aws_cloudtrail" "compliance" {
name = "org-compliance-trail"
s3_bucket_name = aws_s3_bucket.audit_logs.id
is_multi_region_trail = true
enable_log_file_validation = true # ← これが整合性検証(digest)の有効化
kms_key_id = aws_kms_key.audit.arn
include_global_service_events = true
}
監査の現場では、提出前に自分で検証を回し、その結果も証拠に添えるのが効きます。
# 指定期間のログ整合性を検証(digestチェーンをたどって改ざん有無を判定)
aws cloudtrail validate-logs \
--trail-arn arn:aws:cloudtrail:ap-northeast-1:111122223333:trail/org-compliance-trail \
--start-time 2026-04-01T00:00:00Z \
--end-time 2026-06-27T00:00:00Z \
--region ap-northeast-1
運用上の注意:
validate-logsは S3上の元の場所にあるログを検証します。ローカルにダウンロードしたファイルはこの方法では検証できません。またリージョン単位の検証なので--regionが効きます。「四半期ごとに validate-logs を回し、結果をエビデンスとして保管する」を運用ルーチンに組み込みましょう。
3-2. 第2層:S3 Object Lock コンプライアンスモード(WORM)
整合性検証は「改ざんを検出できる」仕組みですが、攻撃者や内部不正者がログ自体を削除してしまえば、検出はできても証拠は失われます。そこで、そもそも消せない保管を作ります。それが S3 Object Lock の WORM(Write Once Read Many) モデルです。
Object Lockには2つのモードがあります。
| モード | 保護の強さ | 誰が解除できるか |
|---|---|---|
| Governance(ガバナンス) | 中 | s3:BypassGovernanceRetention 権限を持つ者は上書き/削除/期間短縮が可能 |
| Compliance(コンプライアンス) | 最強 | rootアカウントを含め、誰も保持期間中は上書き/削除できない。保持期間の短縮も不可 |
監査証跡にはCompliance モードが本命です。公式はこう述べています——コンプライアンスモードでは、保護されたオブジェクトバージョンはrootユーザを含むいかなるユーザによっても上書き・削除できず、保持モードの変更も保持期間の短縮もできない、と。「権限を持つ管理者なら消せる」という抜け道がないこと。これが監査人にとっての決定的な安心材料です。
加えて Legal Hold(リーガルホールド) があります。これは保持期間とは独立し、**訴訟・調査中に「期間が満了しても消させない」**ためのもの。removeするまで無期限に有効です。
実装のHCLです。Object Lockはバージョニング有効が前提で、典型的にはバケット作成時に有効化します。
# 1) 監査ログ専用バケット(Object Lock を作成時に有効化)
resource "aws_s3_bucket" "audit_logs" {
bucket = "org-audit-logs-immutable-111122223333"
object_lock_enabled = true # ← バケット作成時に有効化が前提
# 監査ログの誤削除を二重に防ぐ
lifecycle {
prevent_destroy = true
}
}
# 2) バージョニング(Object Lock の必須前提)
resource "aws_s3_bucket_versioning" "audit_logs" {
bucket = aws_s3_bucket.audit_logs.id
versioning_configuration {
status = "Enabled"
}
}
# 3) Object Lock 既定保持ルール:コンプライアンスモードで例えば 365 日
# (保持年数は2-1のPCI 10.5.1等、適用フレームワークの要求に合わせる)
resource "aws_s3_bucket_object_lock_configuration" "audit_logs" {
bucket = aws_s3_bucket.audit_logs.id
rule {
default_retention {
mode = "COMPLIANCE" # GOVERNANCE ではなく COMPLIANCE
days = 365 # ← 適用要件に合わせて設定。短縮不可なので慎重に
}
}
}
# 4) SSE-KMS で暗号化(保管中の機密性)
resource "aws_s3_bucket_server_side_encryption_configuration" "audit_logs" {
bucket = aws_s3_bucket.audit_logs.id
rule {
apply_server_side_encryption_by_default {
sse_algorithm = "aws:kms"
kms_master_key_id = aws_kms_key.audit.arn
}
bucket_key_enabled = true
}
}
# 5) パブリックアクセスは全面ブロック
resource "aws_s3_bucket_public_access_block" "audit_logs" {
bucket = aws_s3_bucket.audit_logs.id
block_public_acls = true
block_public_policy = true
ignore_public_acls = true
restrict_public_buckets = true
}
設計上の落とし穴(重要):コンプライアンスモードの
daysは短縮できません。テストで「365日」のつもりが本番に流れると、そのオブジェクトは1年間誰にも消せなくなります。ステージングではごく短い保持で検証し、本番値は適用フレームワークの保持要件(2-1のPCI 10.5.1等)から逆算して確定してください。MFA Delete との両立不可(公式仕様):AWS公式は「MFA Delete とライフサイクル設定は併用できない」と明言しています。CloudTrailのベストプラクティスはMFA Deleteとライフサイクルの両方を推奨しますが、同一バケットでは両立しません。実務では「不変の生ログバケット = Object Lock」「アーカイブ/移行 = 別バケットでライフサイクル」と分けるか、Object Lockで一本化するのが定石です。本記事はObject Lockを軸に据えます。
監査ログバケットの一元集約(log-archiveアカウントへの集中)まで踏み込むなら、組織トレイル/マルチアカウント監査を参照。Object Lockは集約先バケットに適用します。
4. 保管要件を満たす:保持期間の設計とコスト
「改ざん不能」にしたら、次は「規定の年数だけ保つ」です。ここはフレームワークの保持要件と、S3のストレージクラス/ライフサイクルの掛け算で設計します。
4-1. 保持期間は要件から逆算する
| フレームワーク | 監査ログ保持の目安 | 出典の扱い |
|---|---|---|
| PCI DSS v4.0.1 | 12ヶ月保持・直近3ヶ月は即時アクセス(10.5.1) | QSA系・AWSマッピングで確認、逐語は原本で要確認 |
| SOC 2 | 監査対象期間(Type II は通常6〜12ヶ月)をカバー | 期間は監査契約次第(要確認) |
| ISO 27001 | 規格は固定年数を指定しない。組織のポリシーで定義 | A.8.15に明示の年数なし |
| HIPAA | §164.312(b)に固定年数の指定はない(別途、文書保持6年の規定があるが対象が異なる:要確認) | 監査ログ年数は組織判断 |
要は、「最も長い要件」に合わせて一本化するのが運用上シンプルです。多くの規制業種では「最低12ヶ月、安全側で複数年」に倒します。Object Lockのコンプライアンスモードで決めた
daysが、この保持の物理的な保証になります。
4-2. ライフサイクルでコストを抑える
PCI 10.5.1の「直近3ヶ月は即時アクセス、それ以降は12ヶ月まで保持」という構造は、S3のストレージクラスにそのまま写像できます。
# 注意: Object Lock バケットと MFA Delete は併用不可。
# ここは「Object Lock で不変性を担保しつつ、コスト最適化のため階層移行」する例。
resource "aws_s3_bucket_lifecycle_configuration" "audit_logs" {
bucket = aws_s3_bucket.audit_logs.id
rule {
id = "tiered-retention"
status = "Enabled"
# 直近: S3 標準(即時アクセス)
transition {
days = 90 # ~3ヶ月は標準(PCIの即時アクセス相当)
storage_class = "GLACIER_IR" # 90日以降は低頻度アクセス向けに移行
}
transition {
days = 180
storage_class = "DEEP_ARCHIVE" # 長期は最安アーカイブへ
}
# expiration は設定しない(Object Lock の保持が満了管理を担う)
}
}
コストの深掘りは別記事へ:長期保管のストレージ階層・取り出しコスト・データイベント課金の試算はCloudTrail 料金・コスト最適化ガイドに集約しています。本記事では「保持要件→ストレージ設計」の写像だけ押さえます。
CloudTrail Lake は新規には使わない:長期保持に CloudTrail Lake(最大3,653日≒10年)を使う手もありますが、Lakeは2026年5月31日以降、新規顧客の受付を終了しています(既存顧客は継続利用可)。新規構築では S3 + Object Lock + ライフサイクルが現実的かつ将来安全な選択です。
5. 証拠収集を自動化する:Config / Artifact(と Audit Manager の現状)
ログを正しく溜めても、監査では「それを証拠として体系的に集め、提示する」工程が残ります。AWSはここを支援するサービスを持ちますが、2026年時点での提供ステータスに注意が必要です。
5-1. AWS Config Conformance Pack で「構成」を継続評価する
CloudTrailが「操作の記録」なら、AWS Config は「構成が要求を満たし続けているか」の継続評価です。AWSは規制別のサンプル**Conformance Pack(適合パック)**を提供しています。
- Operational Best Practices for PCI DSS(PCI DSS 3.2.1 / 4.0 版あり)
- Operational Best Practices for HIPAA Security
- ほか NIST・CIS 等のテンプレート
これらは「CloudTrailが有効か」「ログ整合性検証がONか」「S3バケットが暗号化・パブリックブロックされているか」等を継続的に評価し、ドリフトを検出します。
# サンプル Conformance Pack(PCI DSS)をデプロイする例
aws configservice put-conformance-pack \
--conformance-pack-name pci-dss-operational-best-practices \
--template-s3-uri s3://aws-sample-conformance-packs/Operational-Best-Practices-for-PCI-DSS.yaml \
--delivery-s3-bucket org-config-conformance-results
AWSの注記(重要):これらは**サンプルテンプレートであり、「特定の規格への準拠を完全に保証するものではない」**とAWS自身が明記しています。準拠の最終判断は監査人が行う前提で、「自動評価で穴を早期に見つける道具」として使います。Config と CloudTrail の役割分担の詳細はCloudTrail vs CloudWatch vs Config 使い分けへ。
5-2. AWS Artifact で「AWS側の証明書」を入手する
責任共有モデルのAWS側(0-1章)の証明は、顧客が作るものではなく、AWSからダウンロードします。それが AWS Artifact です。Artifactは、AWSのコンプライアンス文書をオンデマンドで提供します——SOC レポート、PCI(DSS)関連レポート、ISO 認証など。
監査人から「AWSはちゃんと認証を持っているのか」と問われたら、Artifactで該当文書を取得して提出します。これが「インフラ層はAWSが準拠している」の証拠になります。
要確認の注記:Artifact公式ページは「ISO・PCI・SOC レポート」を明示しますが、「SOC 1/2/3」「PCI DSS AOC(Attestation of Compliance)」という個別文書名はそのページでは逐語列挙されていません。実際にはこれらは提供されますが、正確な文書名はArtifactコンソールで確認してください。
5-3. AWS Audit Manager の現状(新規受付終了)
AWS Audit Manager は本来、フレームワークを選び CloudTrail を証拠源として user activity evidence を自動収集する、まさに本記事の文脈にぴったりのサービスでした(標準フレームワークに PCI DSS / SSAE-18 SOC 2 / ISO 27001:2013 Annex A / HIPAA / GDPR / CIS / NIST / FedRAMP 等を持つ)。
ただし(重要・要確認の影響大):AWS公式ドキュメントは現在「AWS Audit Manager は新規顧客の受付を終了した(Existing customers can continue to use the service as normal)」というバナーを掲示しています。新規構築では当てにできません。 既存利用がある組織のみ継続利用可能です。**新規は「Config Conformance Pack(自動評価)+ Artifact(AWS側証明)+ CloudTrail(証跡)+ 自前の証拠パッケージ化(6章)」**で代替するのが2026年の現実解です。Audit Managerの標準フレームワーク名(例: SSAE-18 SOC 2)は確認済みですが、新規には利用不可である点を最優先で押さえてください。
6. 監査対応の実務:日次レビューの自動化と提出パッケージ
最後は「レビューした証跡を残す」と「監査人に出す」の実務です。PCI 10.4.1(日次レビュー)やHIPAA §164.312(b)の「examine(検査)」は、ログを溜めるだけでは満たせません。「レビューを実施した」こと自体の記録が要ります。
6-1. 日次レビューを自動化する(EventBridge / CloudWatch)
「人が毎日目視」は破綻します。高リスクなAPIアクティビティを検知して通知し、その通知・対応の記録をそのままレビュー証跡にする設計にします。
// EventBridge ルール例:監査ログ保護に関わる危険操作を即時検知
// (CloudTrail → EventBridge。CloudTrail自体の停止・KMS鍵の無効化・Object Lock関連の不正操作を監視)
{
"source": ["aws.cloudtrail", "aws.kms", "aws.s3"],
"detail": {
"eventName": [
"StopLogging",
"DeleteTrail",
"UpdateTrail",
"DisableKey",
"ScheduleKeyDeletion",
"PutBucketObjectLockConfiguration",
"DeleteBucketPolicy"
]
}
}
このルールを Lambda/SNS に流し、Slack/メール+チケット起票へつなげれば、「いつ何を検知し、誰がどう対応したか」が自動で記録されます。これが「日次レビューを自動化された仕組みで実施した(PCI 10.4.1.1)」の証拠になります。
「監査ログの保護に関わる操作(CloudTrail停止・KMS鍵削除・Object Lock変更)」を最優先で監視するのがコツです。監査証跡そのものを無力化する操作こそ、攻撃者と内部不正者が最初に狙う場所だからです。脅威検知・インシデント対応の体系(GuardDuty/CIS連携)はCloudTrailによる脅威検知・インシデント対応へ。コンプライアンス(=証拠保全)と脅威検知(=攻撃の発見)は補完関係にある別物です。
6-2. 監査人への提出パッケージを作る
監査の現場で評価される「提出パッケージ」は、おおむね次の構成です。
| 提出物 | 中身 | 取得元 |
|---|---|---|
| ① 証跡の構成証明 | 証跡がマルチリージョン・整合性検証ON・暗号化済みであること | Terraform定義 + aws cloudtrail get-trail-status |
| ② 整合性の証明 | 対象期間のログが改ざんされていない検証結果 | aws cloudtrail validate-logs の出力 |
| ③ 不変性の証明 | ログバケットがObject Lock(Compliance)であること | aws s3api get-object-lock-configuration |
| ④ レビューの証跡 | 日次/自動レビューが機能していた記録 | EventBridge検知ログ・対応チケット |
| ⑤ 構成の継続評価 | 要件構成が維持されていた証拠 | AWS Config Conformance Pack 結果 |
| ⑥ AWS側の証明 | AWSインフラの認証 | AWS Artifact のレポート |
# ①証跡ステータス(録っているか・整合性検証ONか)
aws cloudtrail get-trail-status --name org-compliance-trail
# ③バケットの不変性(Object Lock 設定)
aws s3api get-object-lock-configuration --bucket org-audit-logs-immutable-111122223333
このパッケージの強さは、**①〜⑥がすべて機械的に再現可能(コマンド一発で再取得できる)**点にあります。スクリーンショットの寄せ集めではなく、「いつでも同じ証拠を再生成できる状態」を作っておくこと——これが「正しさを後から否認不能に証明できる状態」の実体です。
7. まとめ:コンプライアンス監査 対応チェックリスト
CloudTrailを「監査の証拠」に昇格させるための、最終チェックリストです。
- 責任共有モデルを共有:AWS側の証明はArtifact、顧客側(ログ・保持・レビュー)は自分の責任、と監査人と握る
- 証跡(Trail)を作成:イベント履歴(90日・管理イベントのみ)に頼らず、マルチリージョン証跡を作る
- 対象データのデータイベント:カード会員データ/ePHIを保存するS3等はデータイベントを有効化
- ログ整合性検証ON:
enable_log_file_validation = true。四半期ごとにvalidate-logsを回し結果を保管 - S3 Object Lock コンプライアンスモード:rootすら消せないWORM保管(バージョニング前提、保持日数は要件から逆算)
- SSE-KMS + パブリックブロック + 最小権限:機密性とアクセス制御
- 保持期間:適用フレームの最長要件に合わせる(PCIは12ヶ月/直近3ヶ月即時:要確認の上で)。ライフサイクルでコスト最適化
- 日次/自動レビュー:EventBridgeで危険操作(証跡停止・KMS削除・ObjectLock変更)を検知し、対応記録をレビュー証跡に
- 継続評価:AWS Config Conformance Pack(PCI/HIPAA等)で構成ドリフトを検出
- AWS側証明:AWS Artifact から該当レポートを取得
- 提出パッケージ:①〜⑥をコマンドで再生成可能な形で整える
- 非推奨サービスの回避:Audit Manager・CloudTrail Lakeは新規受付終了。新規構築では代替で組む
そして最後に、最も大切な原則を。
CloudTrailは、コンプライアンスを「自動で満たす」道具ではありません。 それは「誰が・何を・いつ・どこから・成功したか失敗したか」という監査証跡を生む道具です。それを改ざん不能に保管し、規定年数保持し、レビューした記録を残す——その設計を顧客が担って初めて、監査人に出せる「証拠」になります。責任共有モデルの「顧客側」を、最初から設計に織り込むこと。それが規制業種でのAWS監査基盤の本質です。
私は決済基盤の信頼性レイヤーを設計・主導する中で、「正しさを、後から第三者に否認不能に証明できる状態」を最初から作ることを規律にしてきました。監査証跡は、その規律をインフラに落とし込んだものです。
PCI DSS・SOC 2・ISO 27001・HIPAA などの規制対応で、改ざん不能な監査証跡を備えたAWS基盤を設計したい——そんな課題があれば、お問い合わせからご相談ください。責任共有モデルの整理から、CloudTrail+Object Lock+Config+Artifactによる証拠基盤の設計・実装まで、一気通貫でお手伝いします。