Cloud Service
Azure Management Groups
複数のサブスクリプションを階層構造でまとめ、ポリシーやアクセス権限を一括で統制するためのガバナンス用コンテナ。AWS の Organizations に相当。
- 1.サブスクリプションの上に階層を作り、ポリシーと RBAC をまとめて継承させる仕組み。
- 2.ルート管理グループから下位へ設定が降りるため、組織全体の統制を一元化できる。
- 3.AWS の Organizations(OU・SCP)に近い位置づけのサービス。
解決する課題
- サブスクリプションが増えると、ポリシーやアクセス権限をサブスクリプションごとに個別設定する運用が破綻する
- 部門・環境(本番/開発)・地域などの単位で、ガバナンスをまとめて適用したい
- 全社共通のルール(許可リージョン、必須タグ、禁止リソース種別など)を、一箇所で定義して全体へ波及させたい
- 「誰が・どの範囲で操作できるか」を、サブスクリプション横断で一貫して統制したい
主要概念と用語
- 管理グループ(Management Group): サブスクリプションをまとめるコンテナ。管理グループの中に管理グループやサブスクリプションを入れ子にして階層を作れる
- ルート管理グループ(Tenant Root Group): テナントに 1 つだけ存在する最上位の管理グループ。すべての管理グループとサブスクリプションの祖先にあたる
- 階層(Hierarchy): ルートを頂点としたツリー構造。上位に設定したものが下位へ継承される
- 継承(Inheritance): 上位の管理グループに割り当てた Azure Policy や RBAC ロールが、配下のすべての管理グループ・サブスクリプション・リソースに自動で適用される性質
- スコープ(Scope): 設定を適用する範囲。管理グループ、サブスクリプション、リソースグループ、リソースという入れ子の階層になっている
- Azure Policy / イニシアティブ: 管理グループに割り当てると配下を一括統制できる、コンプライアンス定義の仕組み
- テナント(Microsoft Entra テナント): 管理グループ階層が属する組織の単位。階層はテナント境界を越えられない
管理グループは「とりあえず作る」より、組織のガバナンス境界(本番と非本番、部門、規制要件など)に合わせて階層をどう切るかを先に設計するのが要です。ここでの線引きが、以降のポリシーと権限の継承範囲を決めます。
仕様・制限・クォータ
- ルート管理グループはテナントに 1 つで、自動的に作成される。これを削除したり移動したりはできない
- 階層には入れ子の深さに上限がある(おおむね数階層程度)。実運用では深くしすぎず、浅く分かりやすい構造が推奨される
- 1 つのサブスクリプションや管理グループは、親を 1 つだけ持つ(複数の親には属せない)
- 1 テナントあたりの管理グループ総数にも上限があるが、通常の組織設計では十分な余裕がある
- 新規作成時、当初はすべてのサブスクリプションがルート直下に位置づけられ、そこから階層へ整理していく
- 管理グループの操作には、親側に対する適切な権限が必要(後述のセキュリティ参照)
ルート管理グループにポリシーや RBAC を割り当てると、テナント内の全サブスクリプションに継承されます。利便性が高い反面、誤った拒否ポリシーを置くと全体が止まりかねません。ルートへの割り当ては最小限にとどめ、慎重に検証します。
内部の仕組み
管理グループは、サブスクリプションの「上」に位置するスコープのコンテナです。Azure のコントロールプレーン(Azure Resource Manager)は、ある操作の可否を判断する際に、リソースから親方向(リソースグループ → サブスクリプション → 管理グループ → ルート)へさかのぼって、各スコープに割り当てられたポリシーと RBAC を合成して評価します。
- 継承は上から下へ一方向。上位スコープの割り当ては下位で取り消せず、下位スコープでは「さらに絞る」追加の制約しか足せない
- 複数スコープのポリシーが重なった場合、より上位の拒否(Deny)が優先される傾向にあり、組織レベルのガードレールが効く
- RBAC も同様に継承され、上位で付与したロールは配下の全リソースに及ぶ
- サブスクリプションを別の管理グループへ移動すると、新しい親の継承が即座に適用され、古い親由来の継承は外れる
設計パターン / ベストプラクティス
- 環境やガバナンス境界で階層を分ける(例: 本番 / 非本番、規制対象 / 非対象)。組織図そのままより、ポリシーの適用単位で切る方が運用しやすい
- 共通ガードレールはなるべく上位に置き、例外は下位スコープで個別に扱う。重複設定を減らせる
- ルート直下に「サンドボックス」や「隔離(Quarantine)」用の管理グループを設け、新規サブスクリプションを一旦そこへ入れて検証してから本番階層へ移す
- Azure Policy のイニシアティブを管理グループに割り当て、許可リージョン・必須タグ・禁止 SKU などをまとめて統制する
- 階層・ポリシー・RBAC を IaC(Bicep / Terraform)で管理し、ガバナンス構成をコードで追跡可能にする
- Microsoft のランディングゾーン(Cloud Adoption Framework)の管理グループ設計を参考にすると、定石に沿った構造を作りやすい
運用・監視
- Azure Policy のコンプライアンス状態を管理グループ単位で集約し、組織全体の準拠率を俯瞰する
- アクティビティログで、管理グループへのポリシー割り当て・ロール割り当て・サブスクリプション移動などの操作を監査する
- サブスクリプションの所属(どの管理グループの配下か)の棚卸しを定期的に行い、想定外の階層配置を是正する
- ルートや上位への割り当て変更は影響範囲が広いため、変更管理プロセスに載せて段階的に展開する
- コスト管理(Cost Management)と組み合わせると、管理グループ単位での集計で部門横断のコスト可視化ができる
コスト
管理グループ自体の利用に追加料金は発生しないのが基本です。ガバナンスのためのコンテナであり、課金対象のリソースではありません。実際の費用は、その配下にあるサブスクリプションやリソースの利用に対して通常どおり発生します。むしろ、ポリシーで禁止 SKU や許可外リージョンを抑止することで、無駄なコストの発生を未然に防ぐ側面があります。
セキュリティ
- 上位スコープの RBAC を継承できるため、組織横断の権限設計を一元化できる
- 管理グループの作成・移動・割り当てには、親スコープに対する権限が必要。例えば既定では、サブスクリプションを管理グループへ移すには移動元・移動先の双方に適切な権限が求められる
- ルートへの割り当てはテナント全体に及ぶため、ルートに対する権限保有者を厳格に絞る
- Azure Policy を管理グループに割り当て、禁止リソース種別や必須構成を組織レベルで強制するガードレールを敷ける
利便性を理由に、強力なロール(所有者など)をルートや上位の管理グループに広く付与するのは危険です。上位の権限は配下すべてに継承されるため、1 つの過剰な割り当てがテナント全体の権限を緩めます。割り当ては必要なスコープまで下げ、最小権限を徹底してください。
Well-Architected の観点
- セキュリティ: ポリシーと RBAC を上位スコープに集約し、組織全体に一貫したガードレールを継承させられる。許可リージョンや禁止リソースの強制で攻撃面と逸脱を抑える
- オペレーショナルエクセレンス: ガバナンスを一箇所で定義して全体へ波及させることで、サブスクリプションごとの個別運用をなくし、構成の標準化と監査の一元化を進められる
試験で問われるポイント
- 管理グループはサブスクリプションの上位に位置し、ポリシーと RBAC を配下へ継承させるコンテナであること
- ルート管理グループはテナントに 1 つで、すべての祖先にあたること
- 上位に割り当てた拒否ポリシーや権限は下位で覆せず、下位ではさらに絞ることしかできないこと
- 全社共通ルールを一括適用したいときの正解は、サブスクリプション個別設定ではなく管理グループへの割り当てであること
- AWS の Organizations(OU と SCP)に相当する位置づけであること
関連サービス・比較
管理グループは、AWS Organizations の OU(組織単位)に最も近い概念です。ポリシー継承の仕組みは、AWS の SCP(サービスコントロールポリシー)に Azure Policy が対応します。
| 観点 | Azure | AWS |
|---|---|---|
| 階層のコンテナ | 管理グループ | OU(組織単位) |
| 最上位の単位 | ルート管理グループ | Organizations のルート |
| 継承されるガードレール | Azure Policy / イニシアティブ | SCP(サービスコントロールポリシー) |
| アクセス権限の継承 | Azure RBAC ロール割り当て | IAM(権限の境界と併用) |
| まとめる対象 | サブスクリプション | アカウント |
| コスト集計の単位 | 管理グループ単位の集計 | Organizations 連結請求 |
AWS で複数アカウントを OU でまとめ、SCP で組織レベルのガードレールを継承させるのと同じ発想です。Azure では複数サブスクリプションを管理グループでまとめ、Azure Policy と RBAC を上位に割り当てて継承させます。「アカウント」を「サブスクリプション」、「SCP」を「Azure Policy」と読み替えると対応が取りやすくなります。
ハンズオン / CLI例
# 管理グループを作成(部門単位の例)
az account management-group create \
--name finance-mg \
--display-name "Finance Department"
# 既存の管理グループの配下に子の管理グループを作る(本番用)
az account management-group create \
--name finance-prod-mg \
--display-name "Finance Production" \
--parent finance-mg
# サブスクリプションを管理グループの配下へ移動
az account management-group subscription add \
--name finance-prod-mg \
--subscription "00000000-0000-0000-0000-000000000000"
# 管理グループにポリシーを割り当て、許可リージョンを統制(配下へ継承)
az policy assignment create \
--name "allowed-locations" \
--display-name "Allowed locations" \
--scope "/providers/Microsoft.Management/managementGroups/finance-mg" \
--policy "e56962a6-4747-49cd-b67b-bf8b01975c4c" \
--params '{ "listOfAllowedLocations": { "value": ["japaneast", "japanwest"] } }'
# 階層を確認(配下の子要素も含めて取得)
az account management-group show \
--name finance-mg \
--expand --recurse -o table
Azure Service
Azure Management Groupsを実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
管理・ガバナンス
比較で見る軸
クラウド: Azure / カテゴリ: 管理・ガバナンス / 難易度: basic
導入後に効く点
ルート管理グループから下位へ設定が降りるため、組織全体の統制を一元化できる。
先に潰すリスク
サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。
- クラウド
- Azure
- カテゴリ
- 管理・ガバナンス
- 難易度
- basic
- 関連資格
- —
- 設計柱
- security / operational
判断チェックリスト
- 自社の用途が「管理・ガバナンス / security」に近いか確認する。
- 強みである「サブスクリプションの上に階層を作り、ポリシーと RBAC をまとめて継承させる仕組み。」が本当に評価軸になるか確認する。
- 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。