AWS Control Towerでランディングゾーンを構築し、Account Factoryでアカウントをプロビジョニングできるようになったら、次のステップはガードレールによるコンプライアンスの自動化です。ガードレールは、組織全体のセキュリティとコンプライアンス要件を継続的に維持するための中核機能であり、手動での監視や是正作業を大幅に削減できます。本記事では、ガードレールの概念から実践的な設定方法、カスタムコントロールの作成まで体系的に解説します。

ガードレールとは

ガードレールは、AWS Control Towerが提供する継続的なガバナンス機能であり、組織内のAWSアカウントに対してセキュリティとコンプライアンスのルールを適用します。高速道路のガードレールのように、アカウントが許容範囲を逸脱しないよう「境界」を設けることで、セキュリティインシデントやコンプライアンス違反を未然に防ぎます。

ガードレールの位置づけ

ガードレールは、Control Towerのガバナンス機能において中心的な役割を担います。

flowchart TB
    subgraph "Control Tower ガバナンス"
        GR[ガードレール<br/>コンプライアンス制御]
        AF[Account Factory<br/>アカウント作成]
        DS[ダッシュボード<br/>可視化]
    end
    
    subgraph "ガードレールの種類"
        PREV[予防的ガードレール<br/>SCP実装]
        DET[検出的ガードレール<br/>AWS Config Rules]
        PRO[プロアクティブガードレール<br/>CloudFormation Hooks]
    end
    
    subgraph "適用対象"
        OU1[Security OU]
        OU2[Production OU]
        OU3[Development OU]
    end
    
    GR --> PREV
    GR --> DET
    GR --> PRO
    PREV --> OU1
    PREV --> OU2
    PREV --> OU3
    DET --> OU1
    DET --> OU2
    DET --> OU3

ガードレールとSCPの関係

Control Towerのガードレールは、AWS OrganizationsのSCP(サービスコントロールポリシー)を含む複数の技術で実装されます。SCPを直接管理する場合と比較して、ガードレールには以下の利点があります。

比較項目 SCP直接管理 Control Towerガードレール
作成方法 JSONポリシーを手動作成 コンソールから選択・有効化
テスト 本番環境への影響を自己検証 AWSが事前検証済み
ドキュメント 自分で作成・管理 AWS提供のガイダンスあり
コンプライアンスマッピング 自分で整理 フレームワークとの対応表あり
可視化 CloudWatchなどで自作 ダッシュボードで一元表示
更新管理 手動で最新化 Control Towerが自動管理

ガードレールの3つの動作タイプ

Control Towerのガードレールは、動作タイプによって「予防的」「検出的」「プロアクティブ」の3種類に分類されます。それぞれの特性を理解し、適切に組み合わせることが効果的なガバナンスの鍵です。

予防的ガードレール(Preventive Controls)

予防的ガードレールは、許可されていないアクションの実行を事前にブロックします。AWS OrganizationsのSCPを使用して実装され、違反となる操作をAPI呼び出しの時点で拒否します。

flowchart LR
    USER[ユーザー/アプリ]
    API[AWS API]
    SCP{予防的<br/>ガードレール}
    RES[AWSリソース]
    
    USER --> API
    API --> SCP
    SCP -->|許可| RES
    SCP -->|拒否| DENY[アクセス拒否]

予防的ガードレールの特徴

特徴 説明
実装技術 AWS Organizations SCP
動作タイミング API呼び出し時(リアルタイム)
違反への対応 操作を拒否(実行されない)
適用単位 OU単位
状態表示 「適用済み」または「未適用」

代表的な予防的ガードレール

  • リージョン拒否コントロール(許可されていないリージョンでの操作をブロック)
  • ルートユーザーアクションの禁止
  • CloudTrail設定変更の禁止
  • AWS Configルール削除の禁止

検出的ガードレール(Detective Controls)

検出的ガードレールは、リソースの設定や状態を監視し、コンプライアンス違反を検出して報告します。AWS Config Rulesを使用して実装され、違反を発見した場合はダッシュボードに表示されます。

flowchart TB
    subgraph "AWSアカウント"
        RES1[EC2インスタンス]
        RES2[S3バケット]
        RES3[RDSインスタンス]
    end
    
    CONFIG[AWS Config]
    DET{検出的<br/>ガードレール}
    DS[Control Tower<br/>ダッシュボード]
    
    RES1 --> CONFIG
    RES2 --> CONFIG
    RES3 --> CONFIG
    CONFIG --> DET
    DET -->|準拠| COMP[コンプライアンス]
    DET -->|違反| NONCOMP[非コンプライアンス]
    COMP --> DS
    NONCOMP --> DS

検出的ガードレールの特徴

特徴 説明
実装技術 AWS Config Rules
動作タイミング 定期的な評価(設定変更時、または定期実行)
違反への対応 検出・報告(操作は許可される)
適用単位 OU単位
状態表示 「準拠」「非準拠」「不明」

代表的な検出的ガードレール

  • パブリックアクセス可能なS3バケットの検出
  • 暗号化されていないEBSボリュームの検出
  • MFAなしのルートユーザーアクセスの検出
  • 暗号化されていないRDSインスタンスの検出

プロアクティブガードレール(Proactive Controls)

プロアクティブガードレールは、AWS CloudFormation Hooksを使用して、リソースがプロビジョニングされる前に設定をチェックします。非準拠のリソース作成を事前に防止できる、予防的ガードレールとは異なるアプローチの予防策です。

flowchart TB
    USER[開発者]
    CFN[CloudFormation<br/>テンプレート]
    HOOK{プロアクティブ<br/>ガードレール}
    STACK[CloudFormation<br/>スタック]
    RES[AWSリソース]
    
    USER --> CFN
    CFN --> HOOK
    HOOK -->|準拠| STACK
    STACK --> RES
    HOOK -->|非準拠| FAIL[デプロイ失敗]

プロアクティブガードレールの特徴

特徴 説明
実装技術 AWS CloudFormation Hooks
動作タイミング CloudFormationデプロイ時
違反への対応 デプロイを失敗させる
適用単位 OU単位
対象 CloudFormation経由のリソース作成のみ

代表的なプロアクティブガードレール

  • 暗号化設定のないS3バケット作成の防止
  • パブリックアクセス設定のあるRDSインスタンス作成の防止
  • タグなしリソース作成の防止

3つのタイプの使い分け

3つのガードレールタイプは補完関係にあり、組み合わせて使用することで多層的な防御を実現できます。

flowchart TB
    subgraph "多層防御"
        direction TB
        L1[予防的ガードレール<br/>SCP]
        L2[プロアクティブガードレール<br/>CloudFormation Hooks]
        L3[検出的ガードレール<br/>AWS Config Rules]
    end
    
    REQ[リソース作成<br/>リクエスト]
    
    REQ --> L1
    L1 -->|許可| L2
    L2 -->|準拠| DEPLOY[デプロイ実行]
    DEPLOY --> L3
    L3 --> MONITOR[継続監視]
    
    L1 -->|拒否| BLOCK1[ブロック]
    L2 -->|非準拠| BLOCK2[デプロイ失敗]
    L3 -->|非準拠| ALERT[アラート]
シナリオ 推奨するガードレールタイプ
絶対に許可してはいけない操作 予防的(SCP)
CloudFormation経由のデプロイを制御 プロアクティブ
既存リソースの継続監視 検出的
コンソールからの手動操作を検出 検出的
緊急時の一時的な制限 予防的(SCP)

ガードレールの適用レベル

Control Towerのガードレールは、その重要度と必須性に応じて3つの適用レベルに分類されます。

必須ガードレール(Mandatory)

必須ガードレールは、Control Towerのランディングゾーンをセットアップすると自動的に有効化され、無効化できません。Control Towerのガバナンス機能の根幹を保護するための最低限のセキュリティ制御です。

flowchart TB
    subgraph "必須ガードレール"
        M1[CloudTrailログ記録の保護]
        M2[CloudTrail設定変更の禁止]
        M3[AWS Config設定の保護]
        M4[ログアーカイブ削除の禁止]
    end
    
    CT[Control Tower<br/>セットアップ]
    
    CT --> M1
    CT --> M2
    CT --> M3
    CT --> M4
    
    M1 --> NOTE[無効化不可]
    M2 --> NOTE
    M3 --> NOTE
    M4 --> NOTE

主要な必須ガードレール一覧

ガードレール名 タイプ 説明
ログアーカイブの削除を不許可にする 予防的 ログアーカイブアカウントのS3バケット削除をブロック
ログアーカイブへのポリシー変更を不許可にする 予防的 ログ保存S3バケットのポリシー変更をブロック
AWS Configルールの変更を不許可にする 予防的 Control Towerが管理するConfigルールの変更をブロック
AWS Config集約の変更を不許可にする 予防的 Config Aggregatorの設定変更をブロック
CloudTrailへの設定変更を不許可にする 予防的 CloudTrailの設定変更をブロック
CloudTrail S3バケットの削除を不許可にする 予防的 CloudTrailログ保存バケットの削除をブロック
CloudTrailの暗号化を検出する 検出的 CloudTrailログが暗号化されているか監視
CloudTrailログファイル検証を検出する 検出的 ログファイルの整合性検証が有効か監視

強く推奨ガードレールは、AWSのベストプラクティスに基づいてAWSが強く推奨するセキュリティ制御です。デフォルトでは有効化されていませんが、多くの組織で適用が推奨されます。

主要な強く推奨ガードレール一覧

ガードレール名 タイプ 説明
ルートユーザーに対するアクセスキーの作成を不許可にする 予防的 ルートユーザーのアクセスキー作成をブロック
ルートユーザーとしてのアクションを不許可にする 予防的 ルートユーザーでの操作をブロック
MFAなしのIAMユーザーコンソールアクセスを検出する 検出的 MFA未設定のユーザーを検出
パブリック読み取りアクセス可能なS3バケットを検出する 検出的 パブリックアクセス設定のバケットを検出
パブリック書き込みアクセス可能なS3バケットを検出する 検出的 パブリック書き込み設定のバケットを検出
暗号化されていないEBSボリュームを検出する 検出的 暗号化なしのEBSボリュームを検出
暗号化されていないRDSインスタンスを検出する 検出的 暗号化なしのRDSを検出
SSHによる無制限インバウンドトラフィックを検出する 検出的 0.0.0.0/0からのSSH許可を検出

選択的ガードレール(Elective)

選択的ガードレールは、特定の規制要件やユースケースに対応するためのオプション機能です。組織の要件に応じて選択的に有効化します。

主要な選択的ガードレール一覧

ガードレール名 タイプ 説明
リージョン拒否コントロール 予防的 指定リージョン以外での操作をブロック
S3バケットのバージョニングを検出する 検出的 バージョニング未設定のバケットを検出
EC2インスタンスにアタッチされていないEBSを検出する 検出的 未使用のEBSボリュームを検出
VPCフローログが有効でないVPCを検出する 検出的 フローログ未設定のVPCを検出

適用レベルの選定指針

ガードレールの適用レベルを選定する際は、以下の指針を参考にしてください。

flowchart TB
    START[ガードレール選定開始]
    
    START --> Q1{Control Tower<br/>基盤保護に必要?}
    Q1 -->|はい| MANDATORY[必須<br/>自動適用済み]
    Q1 -->|いいえ| Q2{AWSベスト<br/>プラクティス?}
    
    Q2 -->|はい| STRONG[強く推奨<br/>適用を検討]
    Q2 -->|いいえ| Q3{特定の規制・<br/>要件対応?}
    
    Q3 -->|はい| ELECTIVE[選択的<br/>要件に応じて適用]
    Q3 -->|いいえ| SKIP[適用不要]
環境タイプ 推奨する適用レベル
本番環境 必須 + 強く推奨 + 選択的(規制要件)
ステージング環境 必須 + 強く推奨
開発環境 必須 + 強く推奨(一部)
サンドボックス環境 必須のみ

ガードレールの有効化と管理

Control Towerコンソールを使用したガードレールの有効化手順と、効果的な管理方法を解説します。

ガードレール有効化の手順

ガードレールはOU単位で有効化します。以下の手順で設定を行います。

sequenceDiagram
    participant Admin as 管理者
    participant CT as Control Tower<br/>コンソール
    participant OU as 対象OU
    participant ACC as 配下アカウント
    
    Admin->>CT: ガードレール一覧を表示
    Admin->>CT: 有効化するガードレールを選択
    Admin->>CT: 適用するOUを選択
    CT->>OU: ガードレール適用
    OU->>ACC: 配下アカウントに反映
    CT-->>Admin: 適用完了通知

手順1:Control Towerダッシュボードにアクセス

  1. AWSマネジメントコンソールにサインイン
  2. Control Towerサービスにアクセス
  3. 左側メニューから「コントロール」を選択

手順2:ガードレールの検索と選択

コントロールライブラリから適用するガードレールを検索します。

1
2
3
4
5
# フィルタリングオプション
# - 動作タイプ: 予防的、検出的、プロアクティブ
# - 適用レベル: 必須、強く推奨、選択的
# - フレームワーク: CIS、NIST、PCIなど
# - カテゴリ: データ保護、IAM、ログ記録など

手順3:OUへの適用

  1. 有効化するガードレールの詳細画面を開く
  2. 「OUで有効にする」をクリック
  3. 適用するOUを選択(複数選択可能)
  4. 「コントロールを有効にする」をクリック

コンプライアンスステータスの確認

ガードレール有効化後は、ダッシュボードでコンプライアンスステータスを確認できます。

flowchart TB
    subgraph "コンプライアンスステータス"
        COMP[準拠<br/>Compliant]
        NONCOMP[非準拠<br/>Non-compliant]
        UNKNOWN[不明<br/>Unknown]
    end
    
    subgraph "対応アクション"
        A1[継続監視]
        A2[是正措置実施]
        A3[原因調査]
    end
    
    COMP --> A1
    NONCOMP --> A2
    UNKNOWN --> A3
ステータス 説明 推奨アクション
準拠(Compliant) すべてのリソースがルールに準拠 継続監視
非準拠(Non-compliant) 1つ以上のリソースが違反 是正措置を実施
不明(Unknown) 評価できない状態 AWS Config設定を確認

非準拠リソースの特定と是正

検出的ガードレールで非準拠が検出された場合の対応手順を解説します。

手順1:非準拠リソースの特定

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
# AWS CLIで非準拠リソースを確認
aws configservice get-compliance-details-by-config-rule \
    --config-rule-name "AWSControlTower_AWS-GR_ENCRYPTED_VOLUMES" \
    --compliance-types NON_COMPLIANT

# 出力例
# {
#     "EvaluationResults": [
#         {
#             "EvaluationResultIdentifier": {
#                 "EvaluationResultQualifier": {
#                     "ConfigRuleName": "AWSControlTower_AWS-GR_ENCRYPTED_VOLUMES",
#                     "ResourceType": "AWS::EC2::Volume",
#                     "ResourceId": "vol-0123456789abcdef0"
#                 }
#             },
#             "ComplianceType": "NON_COMPLIANT"
#         }
#     ]
# }

手順2:是正措置の実施

非準拠リソースに対して、手動または自動で是正措置を実施します。

flowchart TB
    DETECT[非準拠検出]
    
    DETECT --> MANUAL{手動是正?}
    MANUAL -->|はい| M1[リソース設定を変更]
    MANUAL -->|いいえ| AUTO[自動修復設定]
    
    AUTO --> SSM[Systems Manager<br/>Automation]
    AUTO --> LAMBDA[Lambda関数<br/>トリガー]
    
    M1 --> VERIFY[コンプライアンス再評価]
    SSM --> VERIFY
    LAMBDA --> VERIFY

ガードレールの無効化

強く推奨または選択的ガードレールは、必要に応じて無効化できます。

1
2
3
4
5
# 無効化前の確認事項
# 1. 無効化の理由を記録
# 2. 影響を受けるアカウントを確認
# 3. 代替の制御手段を検討
# 4. 変更管理プロセスに従って承認を取得

無効化手順

  1. Control Towerコンソールで対象ガードレールを選択
  2. 「有効なOU」タブを開く
  3. 無効化するOUを選択
  4. 「コントロールを無効にする」をクリック

リージョン拒否コントロールの設定

リージョン拒否コントロールは、許可されていないリージョンでの操作をブロックする強力な予防的ガードレールです。データレジデンシー要件やコスト管理に有効です。

リージョン拒否の仕組み

flowchart TB
    USER[ユーザー]
    
    USER --> REQ1[ap-northeast-1<br/>東京リージョン]
    USER --> REQ2[us-east-1<br/>バージニアリージョン]
    USER --> REQ3[eu-west-1<br/>アイルランドリージョン]
    
    REQ1 --> CHECK{リージョン<br/>拒否コントロール}
    REQ2 --> CHECK
    REQ3 --> CHECK
    
    CHECK -->|許可リージョン| ALLOW[操作許可]
    CHECK -->|拒否リージョン| DENY[操作拒否]
    
    REQ1 --> ALLOW
    REQ2 --> DENY
    REQ3 --> DENY

設定手順

手順1:リージョン拒否コントロールの有効化

  1. Control Towerコンソールで「ランディングゾーン設定」を開く
  2. 「リージョン拒否設定」セクションで「編集」をクリック
  3. 「リージョン拒否コントロールを有効にする」を選択

手順2:許可リージョンの設定

1
2
3
4
5
6
7
# 許可するリージョンを選択
# - ap-northeast-1 (東京)
# - ap-northeast-3 (大阪)
# - us-east-1 (バージニア) ※グローバルサービス用に必要な場合

# グローバルサービスの考慮
# IAM、Route 53、CloudFrontなどはus-east-1が必要

手順3:例外設定

特定のサービスやアクションを例外として設定できます。

例外タイプ 説明 設定例
グローバルサービス リージョンに依存しないサービス IAM、Organizations、STS
特定のアクション 特定のAPIアクションのみ例外 Describe*、List*系

リージョン拒否のSCPサンプル

Control Towerが生成するリージョン拒否SCPの構造を理解しておくと、トラブルシューティングに役立ちます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "GRREGIONDENY",
            "Effect": "Deny",
            "NotAction": [
                "iam:*",
                "organizations:*",
                "route53:*",
                "budgets:*",
                "waf:*",
                "cloudfront:*",
                "globalaccelerator:*",
                "importexport:*",
                "support:*",
                "sts:*"
            ],
            "Resource": "*",
            "Condition": {
                "StringNotEquals": {
                    "aws:RequestedRegion": [
                        "ap-northeast-1",
                        "ap-northeast-3"
                    ]
                },
                "ArnNotLike": {
                    "aws:PrincipalARN": [
                        "arn:aws:iam::*:role/AWSControlTowerExecution"
                    ]
                }
            }
        }
    ]
}

データ保護ガードレールの活用

データ保護に関連するガードレールは、情報漏洩やセキュリティインシデントを防止するための重要な制御です。

S3関連ガードレール

S3バケットのセキュリティを確保するためのガードレールを解説します。

flowchart TB
    subgraph "S3セキュリティガードレール"
        S1[パブリック読み取りの検出]
        S2[パブリック書き込みの検出]
        S3[暗号化の検出]
        S4[バージョニングの検出]
        S5[SSLの強制]
    end
    
    subgraph "検出対象"
        B1[パブリックバケット]
        B2[暗号化なしバケット]
        B3[バージョニングなしバケット]
    end
    
    S1 --> B1
    S2 --> B1
    S3 --> B2
    S4 --> B3
ガードレール タイプ 推奨環境
パブリック読み取りアクセス可能なS3バケットを検出する 検出的 全環境
パブリック書き込みアクセス可能なS3バケットを検出する 検出的 全環境
S3バケットのサーバー側暗号化を検出する 検出的 本番環境
S3バケットでMFAによる削除を検出する 検出的 重要データ保存バケット
S3バケットのバージョニングを検出する 検出的 本番環境

暗号化関連ガードレール

保存データの暗号化を確保するためのガードレールを解説します。

ガードレール 対象サービス タイプ
暗号化されていないEBSボリュームを検出する EC2 検出的
暗号化されていないRDSインスタンスを検出する RDS 検出的
暗号化されていないAmazon EFSファイルシステムを検出する EFS 検出的
保管中の暗号化が有効でないDynamoDBテーブルを検出する DynamoDB 検出的

カスタムコントロールの作成

組織固有の要件に対応するため、カスタムコントロール(カスタムガードレール)を作成できます。

カスタムコントロールの種類

Control Towerでは、以下の方法でカスタムコントロールを作成できます。

flowchart TB
    subgraph "カスタムコントロール作成方法"
        M1[カスタムSCP<br/>予防的コントロール]
        M2[カスタムConfig Rules<br/>検出的コントロール]
        M3[CloudFormation Hooks<br/>プロアクティブコントロール]
    end
    
    M1 --> ORG[Organizations<br/>SCP作成]
    M2 --> CFG[AWS Config<br/>カスタムルール]
    M3 --> HOOK[CloudFormation<br/>Hook登録]

カスタムSCPの作成

予防的なカスタムコントロールとして、SCPを作成してOUにアタッチします。

例:特定のEC2インスタンスタイプのみ許可

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowOnlyApprovedInstanceTypes",
            "Effect": "Deny",
            "Action": "ec2:RunInstances",
            "Resource": "arn:aws:ec2:*:*:instance/*",
            "Condition": {
                "StringNotEquals": {
                    "ec2:InstanceType": [
                        "t3.micro",
                        "t3.small",
                        "t3.medium",
                        "m5.large",
                        "m5.xlarge"
                    ]
                }
            }
        }
    ]
}

例:特定のタグがないリソース作成の禁止

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "RequireCostCenterTag",
            "Effect": "Deny",
            "Action": [
                "ec2:RunInstances",
                "ec2:CreateVolume",
                "rds:CreateDBInstance"
            ],
            "Resource": "*",
            "Condition": {
                "Null": {
                    "aws:RequestTag/CostCenter": "true"
                }
            }
        }
    ]
}

カスタムAWS Config Rulesの作成

検出的なカスタムコントロールとして、AWS Config Rulesを作成します。

例:特定のタグを持たないEC2インスタンスを検出(Lambda関数)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import json
import boto3

def lambda_handler(event, context):
    config = boto3.client('config')
    
    invoking_event = json.loads(event['invokingEvent'])
    configuration_item = invoking_event['configurationItem']
    
    # タグの確認
    tags = configuration_item.get('tags', {})
    required_tags = ['Environment', 'CostCenter', 'Owner']
    
    missing_tags = [tag for tag in required_tags if tag not in tags]
    
    if missing_tags:
        compliance_type = 'NON_COMPLIANT'
        annotation = f'Missing required tags: {", ".join(missing_tags)}'
    else:
        compliance_type = 'COMPLIANT'
        annotation = 'All required tags present'
    
    config.put_evaluations(
        Evaluations=[
            {
                'ComplianceResourceType': configuration_item['resourceType'],
                'ComplianceResourceId': configuration_item['resourceId'],
                'ComplianceType': compliance_type,
                'Annotation': annotation,
                'OrderingTimestamp': configuration_item['configurationItemCaptureTime']
            }
        ],
        ResultToken=event['resultToken']
    )

コントロールの組織への展開

カスタムコントロールを作成した後、CloudFormation StackSetsを使用して組織全体に展開できます。

flowchart TB
    ADMIN[管理アカウント]
    
    ADMIN --> STACKSET[CloudFormation<br/>StackSet]
    
    STACKSET --> ACC1[アカウント1<br/>Config Rule]
    STACKSET --> ACC2[アカウント2<br/>Config Rule]
    STACKSET --> ACC3[アカウント3<br/>Config Rule]
    
    ACC1 --> AGG[Config Aggregator<br/>監査アカウント]
    ACC2 --> AGG
    ACC3 --> AGG

コンプライアンスフレームワークとの対応

Control Towerのガードレールは、主要なコンプライアンスフレームワークにマッピングされています。

対応フレームワーク

flowchart TB
    subgraph "コンプライアンスフレームワーク"
        CIS[CIS AWS Foundations<br/>Benchmark]
        NIST[NIST 800-53]
        PCI[PCI DSS]
        HIPAA[HIPAA]
        SOC[SOC 2]
    end
    
    subgraph "Control Tower ガードレール"
        GR1[データ保護コントロール]
        GR2[アクセス管理コントロール]
        GR3[ログ記録コントロール]
        GR4[ネットワークコントロール]
    end
    
    CIS --> GR1
    CIS --> GR2
    NIST --> GR2
    NIST --> GR3
    PCI --> GR1
    PCI --> GR4
    HIPAA --> GR1
    SOC --> GR3

CIS AWS Foundations Benchmarkへの対応

CIS(Center for Internet Security)AWS Foundations Benchmarkに対応するガードレールの例を示します。

CIS要件 Control Towerガードレール タイプ
1.4 - ルートアカウントへのアクセスキー禁止 ルートユーザーに対するアクセスキーの作成を不許可にする 予防的
1.10 - MFA有効化 MFAなしのIAMユーザーコンソールアクセスを検出する 検出的
2.1 - CloudTrail有効化 CloudTrailへの設定変更を不許可にする 予防的
2.6 - S3バケットアクセスログ CloudTrail S3バケットのロギングを検出する 検出的
2.7 - CloudTrail暗号化 CloudTrailの暗号化を検出する 検出的

フレームワーク別ガードレール選定

監査要件に応じたガードレールの選定指針を示します。

1
2
3
4
5
6
7
# フレームワークでフィルタリング
# Control Towerコンソール > コントロール > フィルター

# 例:PCI DSS対応
# - 暗号化関連コントロールをすべて有効化
# - アクセスログ関連コントロールをすべて有効化
# - ネットワーク分離コントロールを有効化

ガードレール運用のベストプラクティス

効果的なガードレール運用のためのベストプラクティスを解説します。

段階的な適用戦略

ガードレールは段階的に適用することで、影響を最小限に抑えながら展開できます。

flowchart TB
    subgraph "フェーズ1: 基盤"
        P1[必須ガードレール<br/>自動適用]
    end
    
    subgraph "フェーズ2: 強化"
        P2[強く推奨ガードレール<br/>検出的のみ]
    end
    
    subgraph "フェーズ3: 予防"
        P3[強く推奨ガードレール<br/>予防的追加]
    end
    
    subgraph "フェーズ4: 最適化"
        P4[選択的ガードレール<br/>要件に応じて]
    end
    
    P1 --> P2 --> P3 --> P4
フェーズ 内容 期間目安
フェーズ1 Control Towerセットアップ、必須ガードレール自動適用 1週間
フェーズ2 検出的ガードレールで現状把握 2-4週間
フェーズ3 予防的ガードレールで制御強化 2-4週間
フェーズ4 選択的ガードレールで最適化 継続的

OU別の適用方針

OUの特性に応じてガードレールの適用方針を変えることが効果的です。

OU ガードレール方針 理由
Security OU 最も厳格(必須+強く推奨+選択的) セキュリティ機能の保護
Production OU 厳格(必須+強く推奨) 本番環境の保護
Staging OU 標準(必須+強く推奨の一部) 本番に近い環境
Development OU 緩和(必須+検出的) 開発の柔軟性確保
Sandbox OU 最小(必須のみ) 実験・学習の自由度

監視とアラート設定

ガードレール違反の検出時に通知を受け取る仕組みを構築します。

flowchart TB
    GR[ガードレール<br/>非準拠検出]
    
    GR --> SNS[SNS トピック]
    
    SNS --> EMAIL[メール通知]
    SNS --> SLACK[Slack通知]
    SNS --> LAMBDA[Lambda<br/>自動修復]
    SNS --> TICKET[チケット作成<br/>ServiceNow等]

EventBridgeルールの設定例

1
2
3
4
5
6
7
8
{
    "source": ["aws.controltower"],
    "detail-type": ["AWS Service Event via CloudTrail"],
    "detail": {
        "eventName": ["UpdateLandingZone", "EnableControl", "DisableControl"],
        "eventSource": ["controltower.amazonaws.com"]
    }
}

定期レビューとメンテナンス

ガードレールの有効性を維持するため、定期的なレビューを実施します。

レビュー項目 頻度 担当
非準拠リソースの確認と是正 週次 セキュリティチーム
新規ガードレールの評価 月次 クラウドアーキテクト
フレームワーク対応の確認 四半期 コンプライアンスチーム
Control Towerバージョンアップ 随時 クラウドアーキテクト

まとめ

AWS Control Towerのガードレールは、組織全体のコンプライアンスを自動的に維持するための中核機能です。本記事では、ガードレールの概念から実践的な設定方法、カスタムコントロールの作成まで解説しました。

ガードレール活用のポイントを以下にまとめます。

  1. 3つの動作タイプの理解:予防的(SCP)、検出的(Config Rules)、プロアクティブ(CloudFormation Hooks)を組み合わせた多層防御
  2. 適用レベルの使い分け:必須、強く推奨、選択的ガードレールを環境特性に応じて適用
  3. 段階的な展開:検出的ガードレールで現状把握後、予防的ガードレールで制御強化
  4. コンプライアンス対応:CIS、NIST、PCI DSSなどのフレームワークへのマッピングを活用
  5. カスタムコントロール:組織固有の要件に対応するカスタムSCPやConfig Rulesの作成
  6. 継続的な運用:定期レビューとアラート設定による違反の早期検出と是正

ガードレールを効果的に活用することで、セキュリティチームの負担を軽減しながら、組織全体のセキュリティとコンプライアンスレベルを向上させることができます。次のステップとして、Control Towerのカスタマイズやセキュリティサービスとの統合について学ぶことで、より高度なガバナンス体制を構築できます。

参考リンク