AWS Organizationsでは、サービスコントロールポリシー(SCP)以外にも、組織全体の運用を効率化するための管理ポリシーが用意されています。タグポリシーによる命名規則の標準化、バックアップポリシーによるデータ保護の一元管理、AIサービスオプトアウトポリシーによるデータプライバシー制御など、これらのポリシーを適切に活用することで、マルチアカウント環境のガバナンスを大幅に強化できます。本記事では、各ポリシーの概念から実装手順、ベストプラクティスまでを体系的に解説します。

AWS Organizations管理ポリシーの全体像

AWS Organizationsでは、SCPを含む複数の種類のポリシーを使用して組織を管理できます。これらは「認可ポリシー」と「管理ポリシー」の2つのカテゴリに分類されます。

ポリシータイプの分類

mindmap
  root((Organizations ポリシー))
    認可ポリシー
      サービスコントロールポリシー(SCP)
        アカウント権限の上限設定
        予防的ガードレール
    管理ポリシー
      タグポリシー
        タグの標準化
        コンプライアンス監視
      バックアップポリシー
        組織全体のバックアップ管理
        AWS Backup連携
      AIサービスオプトアウトポリシー
        AI学習データの利用制御
        プライバシー保護
      チャットボットポリシー
        AWS Chatbot設定の一元化
      宣言的ポリシー
        サービス属性の標準化

各ポリシータイプの特徴を以下の表にまとめます。

ポリシータイプ カテゴリ 主な目的 適用対象
SCP 認可 アカウント権限の制限 アカウント、OU
タグポリシー 管理 タグの標準化と検証 リソースタグ
バックアップポリシー 管理 バックアップの一元管理 対象リソース
AIサービスオプトアウト 管理 AI学習データ利用の制御 AIサービス
チャットボットポリシー 管理 Chatbot設定の統一 AWS Chatbot
宣言的ポリシー 管理 サービス属性の標準化 対象サービス

管理ポリシーの有効化

管理ポリシーを使用するには、Organizations管理アカウントで各ポリシータイプを有効化する必要があります。

sequenceDiagram
    participant Admin as 管理アカウント
    participant Org as AWS Organizations
    participant Member as メンバーアカウント

    Admin->>Org: ポリシータイプを有効化
    Org-->>Admin: 有効化完了
    Admin->>Org: ポリシーを作成
    Admin->>Org: ポリシーをアタッチ(Root/OU/アカウント)
    Org->>Member: ポリシーが継承・適用

AWS CLIでポリシータイプを有効化するコマンドは以下のとおりです。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# タグポリシーの有効化
aws organizations enable-policy-type \
  --root-id r-xxxx \
  --policy-type TAG_POLICY

# バックアップポリシーの有効化
aws organizations enable-policy-type \
  --root-id r-xxxx \
  --policy-type BACKUP_POLICY

# AIサービスオプトアウトポリシーの有効化
aws organizations enable-policy-type \
  --root-id r-xxxx \
  --policy-type AISERVICES_OPT_OUT_POLICY

タグポリシーによる命名規則の標準化

タグポリシーは、組織全体でタグの命名規則と使用可能な値を標準化するための機能です。タグはコスト配分、リソース管理、アクセス制御(ABAC)など多くの用途で使用されるため、一貫性のあるタグ付けは運用効率とガバナンスに直結します。

タグ管理の課題

マルチアカウント環境でタグを管理する際、以下のような課題が発生しがちです。

flowchart TB
    subgraph "タグ管理の課題"
        P1[命名規則の不統一<br/>Environment vs environment]
        P2[値の表記揺れ<br/>Production, production, Prod, prod]
        P3[必須タグの欠落<br/>CostCenterタグなし]
        P4[不要タグの乱立<br/>管理不能なタグの増加]
    end

    subgraph "影響"
        I1[コスト配分の不正確]
        I2[リソース検索の困難]
        I3[ABACポリシーの機能不全]
        I4[監査対応の煩雑化]
    end

    P1 --> I1
    P1 --> I2
    P2 --> I1
    P2 --> I3
    P3 --> I1
    P3 --> I4
    P4 --> I2

タグポリシーの構造

タグポリシーはJSON形式で記述し、タグキーごとにルールを定義します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
{
  "tags": {
    "Environment": {
      "tag_key": {
        "@@assign": "Environment"
      },
      "tag_value": {
        "@@assign": [
          "Production",
          "Staging",
          "Development"
        ]
      },
      "enforced_for": {
        "@@assign": [
          "ec2:instance",
          "ec2:volume",
          "rds:db"
        ]
      }
    }
  }
}

主要な要素は以下のとおりです。

要素 説明
tag_key タグキーの正規表現(大文字小文字の指定)
tag_value 許可されるタグ値のリスト
enforced_for 強制適用するリソースタイプ
@@assign 値を割り当てる演算子
@@append 親ポリシーの値に追加する演算子
@@remove 親ポリシーから値を削除する演算子

実践的なタグポリシーの設計

組織で一般的に必要となるタグポリシーの例を示します。

 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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
{
  "tags": {
    "Environment": {
      "tag_key": {
        "@@assign": "Environment"
      },
      "tag_value": {
        "@@assign": [
          "Production",
          "Staging",
          "Development",
          "Sandbox"
        ]
      },
      "enforced_for": {
        "@@assign": [
          "ec2:instance",
          "ec2:volume",
          "rds:db",
          "s3:bucket",
          "lambda:function"
        ]
      }
    },
    "CostCenter": {
      "tag_key": {
        "@@assign": "CostCenter"
      },
      "tag_value": {
        "@@assign": [
          "Engineering",
          "Marketing",
          "Sales",
          "Operations",
          "SharedServices"
        ]
      },
      "enforced_for": {
        "@@assign": [
          "ec2:instance",
          "rds:db",
          "s3:bucket"
        ]
      }
    },
    "Owner": {
      "tag_key": {
        "@@assign": "Owner"
      }
    },
    "Project": {
      "tag_key": {
        "@@assign": "Project"
      }
    }
  }
}

タグポリシーの作成とアタッチ

タグポリシーを作成し、OUまたはアカウントにアタッチする手順を示します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
# タグポリシーの作成
aws organizations create-policy \
  --name "StandardTagPolicy" \
  --description "組織標準のタグ規則" \
  --type TAG_POLICY \
  --content file://tag-policy.json

# ポリシーをルートにアタッチ(組織全体に適用)
aws organizations attach-policy \
  --policy-id p-xxxxxxxxxx \
  --target-id r-xxxx

# 特定のOUにアタッチ
aws organizations attach-policy \
  --policy-id p-xxxxxxxxxx \
  --target-id ou-xxxx-xxxxxxxx

タグコンプライアンスの確認

タグポリシーを適用した後、リソースが準拠しているかを確認できます。

1
2
3
4
5
6
7
8
# 組織全体のタグコンプライアンス状況を取得
aws resourcegroupstaggingapi get-compliance-summary

# 非準拠リソースの一覧を取得
aws resourcegroupstaggingapi get-resources \
  --tag-filters Key=Environment \
  --include-compliance-details \
  --exclude-compliant-resources

マネジメントコンソールでは、Resource Groupsのタグポリシーページからコンプライアンスレポートをダウンロードすることもできます。

タグポリシー設計のベストプラクティス

効果的なタグポリシーを設計するためのベストプラクティスを紹介します。

flowchart LR
    subgraph "設計原則"
        direction TB
        BP1[最小限のタグから開始]
        BP2[段階的に強制適用を拡大]
        BP3[継承を活用した階層設計]
    end

    subgraph "運用原則"
        direction TB
        OP1[定期的なコンプライアンス監査]
        OP2[例外処理のプロセス確立]
        OP3[タグカタログの維持]
    end

    BP1 --> OP1
    BP2 --> OP2
    BP3 --> OP3

推奨される必須タグ

  • Environment: 環境識別(Production、Development等)
  • CostCenter: コスト配分先の部門やプロジェクト
  • Owner: リソースの責任者や担当チーム
  • Application: 関連するアプリケーション名
  • Compliance: 準拠すべきコンプライアンス要件

段階的な導入アプローチ

  1. まず監視モードで非準拠リソースを特定
  2. 既存リソースのタグを修正
  3. 主要なリソースタイプから強制適用を開始
  4. 徐々に対象リソースタイプを拡大

バックアップポリシーによる組織全体のデータ保護

バックアップポリシーは、AWS Backupと連携して組織全体のバックアップ戦略を一元管理するための機能です。個々のアカウントでバックアップを設定する代わりに、組織レベルでバックアップ計画を定義し、自動的に適用できます。

バックアップポリシーのアーキテクチャ

flowchart TB
    subgraph "管理アカウント"
        BP[バックアップポリシー]
    end

    subgraph "AWS Backup"
        BV[バックアップボールト]
        BR[バックアップルール]
    end

    subgraph "メンバーアカウント"
        subgraph "Account A"
            R1[EC2インスタンス]
            R2[RDSデータベース]
            R3[EFSファイルシステム]
        end
        subgraph "Account B"
            R4[DynamoDBテーブル]
            R5[S3バケット]
        end
    end

    BP -->|ポリシー適用| BR
    BR -->|自動バックアップ| R1
    BR -->|自動バックアップ| R2
    BR -->|自動バックアップ| R3
    BR -->|自動バックアップ| R4
    BR -->|自動バックアップ| R5
    R1 -->|バックアップ保存| BV
    R2 -->|バックアップ保存| BV
    R3 -->|バックアップ保存| BV
    R4 -->|バックアップ保存| BV
    R5 -->|バックアップ保存| BV

バックアップポリシーの構造

バックアップポリシーはJSON形式で定義し、バックアップ計画の詳細を指定します。

 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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
{
  "plans": {
    "DailyBackupPlan": {
      "regions": {
        "@@assign": ["ap-northeast-1"]
      },
      "rules": {
        "DailyRule": {
          "schedule_expression": {
            "@@assign": "cron(0 5 ? * * *)"
          },
          "start_backup_window_minutes": {
            "@@assign": "60"
          },
          "complete_backup_window_minutes": {
            "@@assign": "180"
          },
          "lifecycle": {
            "delete_after_days": {
              "@@assign": "35"
            },
            "move_to_cold_storage_after_days": {
              "@@assign": "7"
            }
          },
          "target_backup_vault_name": {
            "@@assign": "OrganizationBackupVault"
          },
          "copy_actions": {
            "arn:aws:backup:ap-northeast-3:$account:backup-vault:DisasterRecoveryVault": {
              "lifecycle": {
                "delete_after_days": {
                  "@@assign": "90"
                }
              }
            }
          }
        }
      },
      "selections": {
        "tags": {
          "BackupSelection": {
            "iam_role_arn": {
              "@@assign": "arn:aws:iam::$account:role/AWSBackupDefaultServiceRole"
            },
            "tag_key": {
              "@@assign": "Backup"
            },
            "tag_value": {
              "@@assign": ["Daily"]
            }
          }
        }
      }
    }
  }
}

主要な要素の説明は以下のとおりです。

要素 説明
plans バックアップ計画の定義
regions バックアップを実行するリージョン
rules バックアップルール(スケジュール、保持期間等)
schedule_expression バックアップスケジュール(cron式)
lifecycle バックアップの保持期間とコールドストレージ移行
target_backup_vault_name バックアップ保存先のボールト名
copy_actions クロスリージョンコピーの設定
selections バックアップ対象の選択条件(タグベース)

階層別バックアップ戦略の実装

本番環境と開発環境で異なるバックアップ戦略を適用する例を示します。

本番環境向けバックアップポリシー(Production OU)

 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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
{
  "plans": {
    "ProductionBackupPlan": {
      "regions": {
        "@@assign": ["ap-northeast-1"]
      },
      "rules": {
        "HourlyRule": {
          "schedule_expression": {
            "@@assign": "cron(0 * ? * * *)"
          },
          "lifecycle": {
            "delete_after_days": {
              "@@assign": "7"
            }
          },
          "target_backup_vault_name": {
            "@@assign": "ProductionVault"
          }
        },
        "DailyRule": {
          "schedule_expression": {
            "@@assign": "cron(0 5 ? * * *)"
          },
          "lifecycle": {
            "delete_after_days": {
              "@@assign": "90"
            },
            "move_to_cold_storage_after_days": {
              "@@assign": "30"
            }
          },
          "target_backup_vault_name": {
            "@@assign": "ProductionVault"
          },
          "copy_actions": {
            "arn:aws:backup:ap-northeast-3:$account:backup-vault:DRVault": {
              "lifecycle": {
                "delete_after_days": {
                  "@@assign": "365"
                }
              }
            }
          }
        },
        "MonthlyRule": {
          "schedule_expression": {
            "@@assign": "cron(0 5 1 * ? *)"
          },
          "lifecycle": {
            "delete_after_days": {
              "@@assign": "2555"
            },
            "move_to_cold_storage_after_days": {
              "@@assign": "90"
            }
          },
          "target_backup_vault_name": {
            "@@assign": "ProductionArchiveVault"
          }
        }
      },
      "selections": {
        "tags": {
          "ProductionResources": {
            "iam_role_arn": {
              "@@assign": "arn:aws:iam::$account:role/AWSBackupDefaultServiceRole"
            },
            "tag_key": {
              "@@assign": "Environment"
            },
            "tag_value": {
              "@@assign": ["Production"]
            }
          }
        }
      }
    }
  }
}

開発環境向けバックアップポリシー(Development OU)

 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
36
37
38
39
{
  "plans": {
    "DevelopmentBackupPlan": {
      "regions": {
        "@@assign": ["ap-northeast-1"]
      },
      "rules": {
        "DailyRule": {
          "schedule_expression": {
            "@@assign": "cron(0 5 ? * * *)"
          },
          "lifecycle": {
            "delete_after_days": {
              "@@assign": "7"
            }
          },
          "target_backup_vault_name": {
            "@@assign": "DevelopmentVault"
          }
        }
      },
      "selections": {
        "tags": {
          "DevelopmentResources": {
            "iam_role_arn": {
              "@@assign": "arn:aws:iam::$account:role/AWSBackupDefaultServiceRole"
            },
            "tag_key": {
              "@@assign": "Backup"
            },
            "tag_value": {
              "@@assign": ["Required"]
            }
          }
        }
      }
    }
  }
}

バックアップポリシーの前提条件

バックアップポリシーを適用する前に、各メンバーアカウントで以下の準備が必要です。

flowchart TB
    subgraph "前提条件"
        direction TB
        P1[AWS Backupサービスの有効化]
        P2[バックアップボールトの作成]
        P3[IAMロールの作成]
        P4[クロスアカウント管理の有効化]
    end

    P1 --> P2
    P2 --> P3
    P3 --> P4

AWS Backupのクロスアカウント管理を有効化

1
2
3
# 管理アカウントでクロスアカウント管理を有効化
aws backup update-global-settings \
  --global-settings '{"isCrossAccountBackupEnabled":"true"}'

各アカウントでバックアップボールトを作成

1
2
3
4
# バックアップボールトの作成
aws backup create-backup-vault \
  --backup-vault-name OrganizationBackupVault \
  --encryption-key-arn arn:aws:kms:ap-northeast-1:123456789012:key/xxxx

バックアップジョブの監視

組織全体のバックアップ状況を監視するには、AWS Backup Audit Managerを活用します。

flowchart LR
    subgraph "監視体制"
        direction TB
        BAM[Backup Audit Manager]
        CW[CloudWatch メトリクス]
        SNS[SNS 通知]
    end

    subgraph "レポート"
        direction TB
        R1[コンプライアンスレポート]
        R2[バックアップジョブレポート]
        R3[リストアテストレポート]
    end

    BAM --> R1
    BAM --> R2
    BAM --> R3
    CW --> SNS

AIサービスオプトアウトポリシー

AIサービスオプトアウトポリシーは、AWSのAIサービスがコンテンツを機械学習モデルの改善に使用することをオプトアウト(拒否)するための機能です。プライバシーやデータ主権に関する要件がある組織にとって重要なポリシーです。

オプトアウト対象のAIサービス

このポリシーで制御できるAIサービスは以下のとおりです。

サービス オプトアウトキー 説明
Amazon CodeGuru codeguru コードレビューとプロファイリング
Amazon Comprehend comprehend 自然言語処理
Amazon Lex lex 会話型AI
Amazon Polly polly テキスト読み上げ
Amazon Rekognition rekognition 画像・動画分析
Amazon Textract textract ドキュメント分析
Amazon Transcribe transcribe 音声文字起こし
Amazon Translate translate 機械翻訳
Amazon Q q 生成AIアシスタント

オプトアウトポリシーの構造

すべてのAIサービスに対してオプトアウトするポリシーの例を示します。

1
2
3
4
5
6
7
8
9
{
  "services": {
    "default": {
      "opt_out_policy": {
        "@@assign": "optOut"
      }
    }
  }
}

特定のサービスのみオプトアウトする場合は以下のように記述します。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
{
  "services": {
    "default": {
      "opt_out_policy": {
        "@@assign": "optIn"
      }
    },
    "rekognition": {
      "opt_out_policy": {
        "@@assign": "optOut"
      }
    },
    "transcribe": {
      "opt_out_policy": {
        "@@assign": "optOut"
      }
    },
    "comprehend": {
      "opt_out_policy": {
        "@@assign": "optOut"
      }
    }
  }
}

ポリシーの作成とアタッチ

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
# AIサービスオプトアウトポリシーの作成
aws organizations create-policy \
  --name "AIOptOutPolicy" \
  --description "AI サービスの学習データ利用をオプトアウト" \
  --type AISERVICES_OPT_OUT_POLICY \
  --content file://ai-optout-policy.json

# 組織全体にアタッチ
aws organizations attach-policy \
  --policy-id p-xxxxxxxxxx \
  --target-id r-xxxx

プライバシー要件に応じた設計

組織のプライバシー要件に応じて、OU単位で異なるポリシーを適用できます。

flowchart TB
    ROOT[Root<br/>デフォルト: optIn]

    subgraph "厳格なプライバシー要件"
        OU1[ヘルスケア OU<br/>すべてoptOut]
        OU2[金融 OU<br/>すべてoptOut]
    end

    subgraph "標準要件"
        OU3[一般 OU<br/>デフォルト継承]
    end

    ROOT --> OU1
    ROOT --> OU2
    ROOT --> OU3

チャットボットポリシーと宣言的ポリシー

AWS Organizationsでは、チャットボットポリシーと宣言的ポリシーも提供されています。

チャットボットポリシー

チャットボットポリシーは、AWS Chatbotの設定を組織全体で標準化するための機能です。SlackやMicrosoft Teamsとの連携設定、通知の許可範囲などを制御できます。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
{
  "chatbot": {
    "platforms": {
      "slack": {
        "client": {
          "@@assign": "enabled"
        }
      },
      "teams": {
        "client": {
          "@@assign": "disabled"
        }
      }
    }
  }
}

宣言的ポリシー

宣言的ポリシーは、特定のAWSサービスの属性を組織全体で標準化するための機能です。EC2のシリアルコンソールアクセスやEBSのデフォルト暗号化などを一元管理できます。

1
2
3
4
5
6
7
8
9
{
  "ec2_attributes": {
    "serial_console_access": {
      "status": {
        "@@assign": "disabled"
      }
    }
  }
}

ポリシー適用のベストプラクティス

組織全体のポリシーを効果的に運用するためのベストプラクティスを紹介します。

継承の活用

ポリシーは組織のルートからOU、アカウントへと継承されます。この仕組みを活用して効率的にポリシーを管理します。

flowchart TB
    subgraph "継承の例"
        ROOT[Root<br/>基本タグポリシー]
        
        OU1[Production OU<br/>厳格なバックアップポリシー]
        OU2[Development OU<br/>簡易バックアップポリシー]
        
        ACC1[本番アカウント<br/>継承されたポリシー適用]
        ACC2[開発アカウント<br/>継承されたポリシー適用]
    end

    ROOT --> OU1
    ROOT --> OU2
    OU1 --> ACC1
    OU2 --> ACC2

有効なポリシーの確認

複数のポリシーが継承されている場合、最終的に適用される有効なポリシーを確認することが重要です。

1
2
3
4
5
6
7
8
9
# タグポリシーの有効なポリシーを確認
aws organizations describe-effective-policy \
  --policy-type TAG_POLICY \
  --target-id 123456789012

# バックアップポリシーの有効なポリシーを確認
aws organizations describe-effective-policy \
  --policy-type BACKUP_POLICY \
  --target-id 123456789012

段階的な導入

新しいポリシーを導入する際は、以下の手順で段階的に進めることを推奨します。

flowchart LR
    S1[サンドボックス環境<br/>でテスト] --> S2[開発環境<br/>に適用]
    S2 --> S3[ステージング環境<br/>に適用]
    S3 --> S4[本番環境<br/>に適用]
  1. サンドボックスアカウントでポリシーをテスト
  2. 開発環境のOUに適用して影響を確認
  3. ステージング環境に展開して本番相当のテスト
  4. 本番環境に適用

監査とコンプライアンス

定期的にポリシーの準拠状況を監査し、改善を行います。

監査項目 確認方法 頻度
タグコンプライアンス Resource Groups コンソール 週次
バックアップ完了状況 AWS Backup レポート 日次
ポリシー変更履歴 CloudTrail リアルタイム
非準拠リソース Config Rules 継続的

まとめ

AWS Organizationsの管理ポリシーを活用することで、マルチアカウント環境のガバナンスを大幅に強化できます。タグポリシーによる命名規則の標準化はコスト管理とリソース追跡を容易にし、バックアップポリシーは組織全体のデータ保護を一元化します。AIサービスオプトアウトポリシーはプライバシー要件への対応を簡素化します。

これらのポリシーは単独で使用することも、組み合わせて使用することもできます。組織の要件に応じて適切なポリシーを選択し、段階的に導入することで、セキュアで効率的なマルチアカウント環境を実現できます。

参考リンク