リソース階層の保護
リソース、リソース グループ、サブスクリプション、管理グループ、およびテナントは、リソース階層を構成しています。 ルート管理グループでの設定 (Azure カスタム ロールやポリシーの割り当てなど) は、リソース階層内のすべてのリソースに影響を与える可能性があります。 すべてのリソースに悪影響を及ぼす可能性のある変更からリソース階層を保護することが重要です。
管理グループには、テナント管理者がこれらの動作を制御できるようにする階層設定があります。 この記事では、使用可能な各階層設定と、その設定方法について説明します。
階層設定の Azure RBAC アクセス許可
階層設定を構成するには、ルート管理グループに対して次のリソース プロバイダー操作を行う必要があります。
Microsoft.Management/managementgroups/settings/write
Microsoft.Management/managementgroups/settings/read
これらの操作は、Azure ロールベースのアクセス制御 (Azure RBAC) アクセス許可を表します。 これらは、ユーザーに階層設定の読み取りと更新のみを許可します。 管理グループ階層または階層内のリソースへのその他のアクセスは提供しません。
これらの操作はいずれも、Azure 組み込みロール Hierarchy Settings Administrator で使用できます。
設定: 既定の管理グループを定義する
既定では、テナントに追加した新しいサブスクリプションがルート管理グループのメンバーになります。 ポリシーの割り当て、Azure RBAC、およびその他のガバナンスコンストラクトをルート管理グループに割り当てると、これらの新しいサブスクリプションにすぐに影響します。 このため、多くの組織では、これらの構成要素の割り当てに適した場所であるにもかかわらず、ルート管理グループにこれらの構成要素を適用しません。 また、新しいサブスクリプションにはより制限の厳しい一連の制御が必要であっても、それをすべてのサブスクリプションに割り当てるべきではない場合もあります。 この設定では、両方のユース ケースがサポートされています。
新しいサブスクリプションの既定の管理グループを定義できるようにすることで、組織全体のガバナンス コンストラクトをルート管理グループに適用できます。 ポリシーの割り当てまたは新しいサブスクリプションに最適な Azure ロールの割り当てを使用して、個別の管理グループを定義できます。
ポータルで既定の管理グループを定義する
Azure portal にサインインします。
検索バーを使用し、[管理グループ] を検索して選択します。
ルート管理グループを選択します。
ページの左側にある [設定] を選びます。
[Change default management group](既定の管理グループの変更) ボタンを選択します。
[Change default management group] (既定の管理グループの変更) ボタンが使用できない場合、原因は次のいずれかの条件です。
- 表示している管理グループがルート管理グループではありません。
- セキュリティ プリンシパルには、階層設定を変更するために必要なアクセス許可がありません。
階層から管理グループを選択して、[選択] ボタンを選択します。
REST API を使用して既定の管理グループを定義する
REST API を使用して既定の管理グループを定義するには、階層設定エンドポイントを呼び出す必要があります。 これには、次の REST API URI と本文の形式を使用します。 {rootMgID}
を、実際のルート管理グループの ID に置き換えます。 {defaultGroupID}
を、既定の管理グループになる管理グループの ID に置き換えます。
REST API URI:
PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{rootMgID}/settings/default?api-version=2020-05-01
要求本文:
{ "properties": { "defaultManagementGroup": "/providers/Microsoft.Management/managementGroups/{defaultGroupID}" } }
既定の管理グループをルート管理グループに設定し直すには、同じエンドポイントを使用して defaultManagementGroup
を /providers/Microsoft.Management/managementGroups/{rootMgID}
の値に設定します。
設定: 承認を要求する
既定では、すべてのユーザーがテナント内に新しい管理グループを作成できます。 テナントの管理者は、管理グループ階層内の整合性と適合性を維持するために、これらのアクセス許可を特定のユーザーのみに提供したい場合があります。 子管理グループを作成するには、ユーザーは、ルート管理グループで Microsoft.Management/managementGroups/write
操作が必要になります。
ポータルで承認を要求する
Azure portal にサインインします。
検索バーを使用し、[管理グループ] を検索して選択します。
ルート管理グループを選択します。
ページの左側にある [設定] を選びます。
[Permissions for creating new management groups] (新しい管理グループを作成するためのアクセス許可) トグルをオンにします。
[Require write permissions for creating new management groups] (新しい管理グループを作成するための書き込みアクセス許可を要求) トグルが使用できない場合、原因は次のいずれかの条件です。
- 表示している管理グループがルート管理グループではありません。
- セキュリティ プリンシパルには、階層設定を変更するために必要なアクセス許可がありません。
REST API を使用して承認を要求する
REST API を使用して承認を要求するには、階層設定エンドポイントを呼び出します。 これには、次の REST API URI と本文の形式を使用します。 この値はブール値であるため、値に true
または false
を指定します。 true
の値を指定すると、管理グループ階層を保護するこの方法が有効になります。
REST API URI:
PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{rootMgID}/settings/default?api-version=2020-05-01
要求本文:
{ "properties": { "requireAuthorizationForGroupCreation": true } }
設定をオフにするには、同じエンドポイントを使用し、requireAuthorizationForGroupCreation
を false
の値に設定します。
Azure PowerShell サンプル
Azure PowerShell には、既定の管理グループを定義する、または承認を要求する Az
コマンドはありません。 回避策として、次の Azure PowerShell サンプルで REST API を使用できます。
$root_management_group_id = "Enter the ID of root management group"
$default_management_group_id = "Enter the ID of default management group (or use the same ID of the root management group)"
$body = '{
"properties": {
"defaultManagementGroup": "/providers/Microsoft.Management/managementGroups/' + $default_management_group_id + '",
"requireAuthorizationForGroupCreation": true
}
}'
$token = (Get-AzAccessToken).Token
$headers = @{"Authorization"= "Bearer $token"; "Content-Type"= "application/json"}
$uri = "https://management.azure.com/providers/Microsoft.Management/managementGroups/$root_management_group_id/settings/default?api-version=2020-05-01"
Invoke-RestMethod -Method PUT -Uri $uri -Headers $headers -Body $body
関連するコンテンツ
管理グループについて詳しくは、以下をご覧ください。