AWSセキュリティ設計ハンドブック
周辺資料: 学習インデックス · AWSサービス一覧(2026) · インシデントレスポンス設計 · IAM最小権限設計
AWSセキュリティ設計の7つの柱と実装パターン。
1. セキュリティ設計の7本柱
1. ID・アクセス管理 (IAM)
誰が・何に・どのようにアクセスできるかを最小権限で制御
2. 検知 (Detection)
GuardDuty / Security Hub / Config で異常・逸脱を検知
3. インフラ保護 (Infrastructure Protection)
VPC / SG / NACL / WAF / Shield で境界を保護
4. データ保護 (Data Protection)
KMS / Macie / S3 Object Lock でデータを保護
5. インシデント対応 (Incident Response)
検知 → トリアージ → 封じ込め → 根絶 → 復旧を自動化
6. 脆弱性管理 (Vulnerability Management)
Inspector / ECR Scan / Patch Manager で継続的に管理
7. アプリケーションセキュリティ (Application Security)
WAF / Cognito / API Gateway 認証・認可設計
2. ID・アクセス管理(IAM)
設計原則
[最小権限の原則]
× Action: "*" の使用禁止(緊急用 BreakGlass ロールを除く)
◯ 必要なアクション・リソース・条件を明示
[ロールベースアクセス制御]
× IAM ユーザーにポリシーを直接アタッチ
◯ IAM グループ → ポリシー
◯ IAM ロール(人間は IAM Identity Center 経由)
[一時的な認証情報]
× IAM ユーザーのアクセスキーを長期使用
◯ ロールの AssumeRole + 一時的トークン
◯ Lambda / ECS / EC2 には IAM ロールを直接アタッチ
よく使うポリシーパターン
{
"Effect": "Deny",
"Action": "s3:*",
"Resource": "*",
"Condition": {
"StringNotEquals": {
"aws:SourceVpc": "vpc-xxxxxxxxx"
}
}
}
{
"Effect": "Allow",
"Action": "iam:PassRole",
"Resource": "arn:aws:iam::123456789:role/MySpecificRole"
}
Permission Boundary(権限境界)
用途: 開発者に IAM 操作を委任しつつ、付与できる最大権限を制限する
設定例:
管理者がPermission Boundaryポリシーを作成("最大これまで")
開発者がIAMロールを作成する際、このBoundaryを指定必須に
→ 開発者が Admin ポリシーをアタッチしても Boundary 内の権限のみ有効
3. 暗号化設計
KMS エンベロープ暗号化
[仕組み]
1. KMS が CMK(Customer Managed Key)を管理
2. データ暗号化キー(DEK)を CMK で暗号化して保存
3. 実際のデータは DEK で暗号化(CMK で直接暗号化しない)
[利点]
- CMK はオフプレミスのハードウェア(CloudHSM)に保管可能
- キーローテーション時も過去データを復号可能
- アクセスポリシーで誰が暗号化/復号できるかを制御
キーの種類と使い分け
| キー種別 |
管理者 |
コスト |
用途 |
| AWS 管理キー |
AWS |
無料 |
S3/RDS等のデフォルト暗号化 |
| CMK(対称) |
お客様 |
$1/月 |
カスタム暗号化・監査証跡必要時 |
| CMK(非対称 RSA/ECC) |
お客様 |
$1/月 |
署名検証・外部システム連携 |
| CloudHSM |
お客様 |
高い |
規制対応・キーをAWSに渡したくない |
S3 暗号化オプション
- SSE-S3 (AES-256): AWS管理キー。最もシンプル
- SSE-KMS: CMK使用。監査証跡(CloudTrail)・アクセス制御が必要な場合
- SSE-C: お客様がキーを管理・提供。AWSにキーを渡したくない場合
- DSSE-KMS: 2重暗号化。CNSSI/NSA Suite B 準拠が必要な場合
4. ネットワーク保護
多層防御アーキテクチャ
インターネット
│
Route 53(DNS Firewall で悪意ドメイン遮断)
│
CloudFront + WAF(L7: SQLi/XSS/レートリミット/地理制限)
│
Shield Advanced(L3/L4 DDoS 軽減)
│
ALB / NLB
│
Security Group(インスタンスレベルのステートフルフィルタ)
│
NACL(サブネットレベルのステートレスフィルタ)
│
EC2 / ECS / Lambda(アプリ)
│
RDS / DynamoDB(プライベートサブネット)
WAF ルール設計
[推奨ルールセット(優先度順)]
1. AWS マネージドルール(OWASP Top 10 対応)
2. レートベースルール(例: 同一IP から5分間に2000リクエスト超でブロック)
3. 地理的ブロック(アクセス元国を制限)
4. カスタムルール(特定URI パターン / ヘッダーでの制御)
[モード]
まず Count モードで影響を確認 → Block モードに切替
過検知が多い場合は Scope-Down Statement でスコープ絞り込み
VPC セキュリティ設計
パブリックサブネット:
✓ ALB / NLB
✓ NAT Gateway
× EC2 インスタンス(原則配置しない)
× データベース
プライベートサブネット:
✓ ECS Fargate / Lambda
✓ EC2 アプリサーバー
✓ ElastiCache
分離サブネット(インターネット/NATへの経路なし):
✓ RDS / Aurora
✓ 機密データを扱うサービス
5. 脅威検知と自動対応
検知サービスの役割分担
| サービス |
何を検知するか |
ログソース |
| GuardDuty |
脅威行動(マルウェア・不審API・C2通信) |
CloudTrail / VPC Flow / DNS / S3 |
| Security Hub |
セキュリティ設定の逸脱(CSPM) |
GuardDuty / Config / Inspector 等を集約 |
| Macie |
S3 内の PII・機密データ |
S3 オブジェクトの内容スキャン |
| Inspector |
EC2/ECR/Lambda の既知脆弱性(CVE) |
パッケージ情報・OS設定 |
| Detective |
侵害の根本原因分析(グラフ分析) |
GuardDuty 検出結果 + VPC Flow + CloudTrail |
| Config |
リソース設定の変更・コンプライアンス逸脱 |
AWS Config レコーダー |
GuardDuty 検出結果への自動対応
[自動対応フロー]
GuardDuty 検出 → EventBridge → Lambda(自動対応)
│
Severity >= 7(HIGH/CRITICAL)
│
┌──────────────────────────────┐
EC2 隔離 IAMキー無効化 S3 ブロック
SG 変更で AccessKey Public Access
インバウンド Deactivate Block 有効化
遮断 + SNS 通知 + SNS 通知
+ スナップ
ショット
└──────────────────────────────┘
│
SNS → PagerDuty / Slack
Systems Manager OpsCenter 起票
6. ゼロトラストアーキテクチャ
従来境界防御 vs ゼロトラスト
[従来の境界防御]
「VPC 内は安全」という前提
外部: 厳しく制限 / 内部: 緩い制御
リスク: 内部不正・横移動攻撃に弱い
[ゼロトラスト]
「すべてのアクセスは潜在的に悪意あり」
ユーザー / デバイス / リソースを常に検証
最小権限 + 継続的モニタリング
AWS Verified Access の設計
[従来のリモートアクセス]
ユーザー → VPN(社内ネットワーク全体へのアクセス)
[Verified Access]
ユーザー → Verified Access(IdP + デバイス姿勢評価)
→ アクセスポリシーで個別アプリへのみ許可
→ VPN 不要、最小権限で内部アプリに接続
[Cedar ポリシー例]
permit(
principal in Group::"engineering",
action == Action::"access",
resource == Application::"internal-tools"
) when {
context.device.compliance == "Compliant"
&& context.network.type == "corporate"
};
7. マルチアカウントのセキュリティ統制
Security OU 構成
Organizations
└── Security OU
├── Security Tooling Account(委任管理者)
│ GuardDuty(全アカウントの検出結果集約)
│ Security Hub(全アカウントの検出結果集約)
│ Macie(S3スキャン結果集約)
│ Detective(調査ハブ)
│ IAM Access Analyzer(外部公開リソース検出)
│
└── Log Archive Account(ログ保管専用)
CloudTrail Organization Trail → S3(変更不可)
Config Organization Recorder → S3
VPC Flow Logs → S3
S3 Object Lock(削除・変更を防止)
SCP セキュリティガードレール例
{
"Effect": "Deny",
"Action": [
"guardduty:DeleteDetector",
"guardduty:DisassociateFromMasterAccount",
"cloudtrail:DeleteTrail",
"cloudtrail:StopLogging",
"config:DeleteConfigurationRecorder",
"securityhub:DisableSecurityHub"
],
"Resource": "*"
}
8. コンプライアンス・監査対応
主要コンプライアンスと対応サービス
| 規制・フレームワーク |
主なAWSサービス |
| PCI DSS |
KMS / CloudHSM / Config / CloudTrail / WAF |
| HIPAA |
KMS / Macie / CloudTrail / VPC / BAA |
| SOC 2 |
CloudTrail / Config / Security Hub / IAM |
| ISO 27001 |
Config / Security Hub / Organizations |
| GDPR |
Macie(PII検出)/ データ主権(リージョン固定)/ KMS |
AWS Audit Manager の活用
[用途]
PCI DSS / SOC 2 等のフレームワークへの証拠を自動収集・評価
[手順]
1. Audit Manager でフレームワークを選択
2. コントロールに対応するAWSサービスを設定
3. Config ルール・CloudTrail 等から証拠を自動収集
4. 評価レポートを監査人に提出
9. セキュリティ設計クイックチェックリスト
[必須(本番稼働前)]
□ ルートアカウント MFA 有効化
□ IAM ユーザーへの直接ポリシーアタッチ禁止
□ CloudTrail 全リージョン有効化
□ GuardDuty 有効化
□ S3 パブリックアクセスブロック(全バケット)
□ 保存データ KMS 暗号化(S3/RDS/EBS/DynamoDB)
□ 転送データ TLS 1.2+
□ Secrets Manager または SSM でシークレット管理
□ セキュリティグループ 0.0.0.0/0 の最小化
□ AWS Budgets でコスト監視
[推奨(運用安定後)]
□ Security Hub + CIS ベンチマーク有効化
□ Macie で S3 PII スキャン
□ Inspector で EC2/ECR 脆弱性スキャン自動化
□ Config ルール + 自動修復設定
□ IAM Access Analyzer で定期棚卸し
□ AWS Organizations + SCP でガードレール適用
□ Detective で GuardDuty 検出結果の調査体制
□ Security Lake(OCSF)でログ統合分析