管理グループで Azure サブスクリプションを大規模に管理する

組織に多数のサブスクリプションがある場合は、それらのサブスクリプションのアクセス、ポリシー、コンプライアンスを効率的に管理する方法が必要になることがあります。 Azure 管理グループでは、サブスクリプションより上のレベルのスコープが提供されます。 "管理グループ" と呼ばれるコンテナーにサブスクリプションを整理して、管理グループに管理条件を適用できます。 管理グループ内のすべてのサブスクリプションは、管理グループに適用された条件を自動的に継承します。

管理グループを使用すると、お使いのサブスクリプションの種類に関係なく、大規模にエンタープライズ レベルの管理を行うことができます。 管理グループの詳細については、「Azure 管理グループでリソースを整理する」を参照してください。

Note

この記事は、デバイスまたはサービスから個人データを削除する手順について説明しており、GDPR の下で義務を果たすために使用できます。 GDPR に関する一般情報については、Microsoft Trust Center の GDPR に関するセクションおよび Service Trust Portal の GDPR に関するセクションをご覧ください。

重要

Azure Resource Manager のユーザー トークンと管理グループ キャッシュは、強制的に更新されるまで 30 分間継続します。 管理グループまたはサブスクリプションの移動などの操作は、表示されるまでに最大 30 分かかることがあります。 更新プログラムをすぐに確認するには、ブラウザーを更新するか、サインインしてからサインアウトするか、新しいトークンを要求して、トークンを更新する必要があります。

この記事の Azure PowerShell 操作では、AzManagementGroup 関連のコマンドレットで、-GroupId-GroupName パラメーターのエイリアスであると説明されていることに注意してください。 これらのいずれかを使用して、管理グループ ID を文字列値として指定できます。

管理グループの名前を変更する

管理グループの名前を変更するには、Azure portal、Azure PowerShell、または Azure CLI を使用します。

ポータルでの名前の変更

  1. Azure portal にサインインします。

  2. [すべてのサービス]>[管理グループ] を選択します。

  3. 名前を変更したい管理グループを選択します。

  4. 詳細を選択します。

  5. ウィンドウの上部にある [グループ名の変更] オプションを選択します。

    [管理グループ] ページの操作バーと [グループ名の変更] ボタンのスクリーンショット。

  6. [グループ名の変更] ウィンドウで、表示する新しい名前を入力します。

    管理グループの名前を変更するためのオプションのスクリーンショット。

  7. [保存] を選択します。

Azure PowerShell での名前の変更

表示名を更新するには、Azure PowerShell で Update-AzManagementGroup を使用します。 たとえば、管理グループの表示名を Contoso IT から Contoso Group に変更するには、次のコマンドを実行します。

Update-AzManagementGroup -GroupId 'ContosoIt' -DisplayName 'Contoso Group'

Azure CLI での名前の変更

Azure CLI を使用する場合は、update コマンドを使用します。

az account management-group update --name 'Contoso' --display-name 'Contoso Group'

管理グループを削除する

管理グループを削除するには、次の要件を満たす必要があります。

  • 管理グループの下に子管理グループやサブスクリプションがないこと。 サブスクリプションまたは管理グループを別の管理グループに移動するには、この記事の後半にある「管理グループとサブスクリプションを移動する」を参照してください。

  • 管理グループに対する書き込みアクセス許可 (所有者、共同作成者、または管理グループ共同作成者) が必要です。 どのアクセス許可があるかを確認するには、管理グループを選択し、 [IAM] を選択します。 Azure ロールの詳細については、「Azure ロールベースのアクセス制御 (Azure RBAC) とは」を参照してください。

portal で管理グループを削除する

  1. Azure portal にサインインします。

  2. [すべてのサービス]>[管理グループ] を選択します。

  3. 削除する管理グループを選択します。

  4. 詳細を選択します。

  5. [削除] を選択します。

    [削除] ボタンが表示されている [管理グループ] ページのスクリーンショット。

    ヒント

    [削除] ボタンが使用できない場合は、ボタンの上にマウス ポインターを置くと理由が表示されます。

  6. ダイアログが開き、管理グループを削除するかどうかを確認するメッセージが表示されます。

    管理グループを削除するための確認ダイアログのスクリーンショット。

  7. [はい] を選択します。

Azure PowerShell で管理グループを削除する

管理グループを削除するには、Azure PowerShell で Remove-AzManagementGroup コマンドを使用します。

Remove-AzManagementGroup -GroupId 'Contoso'

Azure CLI で管理グループを削除する

Azure CLI では、az account management-group delete コマンドを使用します。

az account management-group delete --name 'Contoso'

管理グループを表示する

管理グループに対して直接または継承された Azure ロールを持っていれば、どのような管理グループも表示できます。

ポータルで管理グループを表示する

  1. Azure portal にサインインします。

  2. [すべてのサービス]>[管理グループ] を選択します。

  3. 管理グループ階層のページが表示されます。 このページで、アクセスできるすべての管理グループとサブスクリプションを調べることができます。 グループ名を選択すると、階層の下位レベルに移動します。 ナビゲーションは、ファイル エクスプローラーと同じように機能します。

  4. 管理グループの詳細を表示するには、管理グループのタイトルの横にある [(詳細]) リンクを選択します。 このリンクを使用できない場合は、その管理グループを表示するアクセス許可がありません。

    子管理グループとサブスクリプションが表示されている [管理グループ] ページのスクリーンショット。

Azure PowerShell で管理グループを表示する

すべてのグループを取得するには、Get-AzManagementGroup コマンドを使用します。 管理グループの GET PowerShell コマンドの完全な一覧については、Az.Resources モジュールを参照してください。

Get-AzManagementGroup

1 つの管理グループの情報の場合は、-GroupId パラメーターを使用します。

Get-AzManagementGroup -GroupId 'Contoso'

特定の管理グループとその下の階層のすべてのレベルを返すには、-Expand-Recurse のパラメーターを使用します。

PS C:\> $response = Get-AzManagementGroup -GroupId TestGroupParent -Expand -Recurse
PS C:\> $response

Id                : /providers/Microsoft.Management/managementGroups/TestGroupParent
Type              : /providers/Microsoft.Management/managementGroups
Name              : TestGroupParent
TenantId          : 00000000-0000-0000-0000-000000000000
DisplayName       : TestGroupParent
UpdatedTime       : 2/1/2018 11:15:46 AM
UpdatedBy         : 00000000-0000-0000-0000-000000000000
ParentId          : /providers/Microsoft.Management/managementGroups/00000000-0000-0000-0000-000000000000
ParentName        : 00000000-0000-0000-0000-000000000000
ParentDisplayName : 00000000-0000-0000-0000-000000000000
Children          : {TestGroup1DisplayName, TestGroup2DisplayName}

PS C:\> $response.Children[0]

Type        : /managementGroup
Id          : /providers/Microsoft.Management/managementGroups/TestGroup1
Name        : TestGroup1
DisplayName : TestGroup1DisplayName
Children    : {TestRecurseChild}

PS C:\> $response.Children[0].Children[0]

Type        : /managementGroup
Id          : /providers/Microsoft.Management/managementGroups/TestRecurseChild
Name        : TestRecurseChild
DisplayName : TestRecurseChild
Children    :

Azure CLI で管理グループを表示する

すべてのグループを取得するには、list コマンドを使用します。

az account management-group list

1 つの管理グループの情報の場合は、show コマンドを使用します。

az account management-group show --name 'Contoso'

特定の管理グループとその下の階層のすべてのレベルを返すには、-Expand-Recurse のパラメーターを使用します。

az account management-group show --name 'Contoso' -e -r

管理グループとサブスクリプションを移動する

管理グループを作成する理由の 1 つは、サブスクリプションをバンドルするためです。 管理グループとサブスクリプションのみが別の管理グループの子になることができます。 管理グループに移動するサブスクリプションは、親管理グループからすべてのユーザー アクセスとポリシーを継承します。

管理グループ間でサブスクリプションを移動できます。 サブスクリプションには親管理グループを 1 つだけ含めることができます。

管理グループまたはサブスクリプションを別の管理グループの子に移動する際、3 つのルールが true として評価されなければなりません。

移動アクションを実行する場合は、次の各レイヤーでアクセス許可が必要です。

  • 子サブスクリプションまたは管理グループ
    • Microsoft.management/managementgroups/write
    • Microsoft.management/managementgroups/subscriptions/write (サブスクリプションの場合のみ)
    • Microsoft.Authorization/roleAssignments/write
    • Microsoft.Authorization/roleAssignments/delete
    • Microsoft.Management/register/action
  • 対象の親管理グループ
    • Microsoft.management/managementgroups/write
  • 現在の親管理グループ
    • Microsoft.management/managementgroups/write

次の例外があります: ターゲットまたは既存の親管理グループがルート管理グループである場合、このアクセス許可の要件は適用されません。 すべての新しい管理グループとサブスクリプションは既定でルート管理グループに追加されるため、項目を移動するためにこのグループに対するアクセス許可は不要です。

サブスクリプションの所有者ロールが現在の管理グループから継承される場合、移動先は制限されます。 サブスクリプションは、所有者ロールを持つ別の管理グループにのみ移動できます。 サブスクリプションの所有者ではなくなってしまうため、ご自分が共同作成者でしかない管理グループにサブスクリプションを移動できません。 サブスクリプションの所有者ロールに直接割り当てられている場合は、共同作成者のロールを持っている任意の管理グループに移動できます。

現在割り当てられているアクセス許可を Azure portal で確認するには、管理グループを選択し、 [IAM] を選択します。 Azure ロールの詳細については、「Azure ロールベースのアクセス制御 (Azure RBAC) とは」を参照してください。

ポータルで既存のサブスクリプションを管理グループに追加する

  1. Azure portal にサインインします。

  2. [すべてのサービス]>[管理グループ] を選択します。

  3. 親にする管理グループを選択します。

  4. ページの上部で、 [サブスクリプションの追加] を選択します。

  5. 一覧で、正しい ID を持つサブスクリプションを選択します。

    管理グループに追加する既存のサブスクリプションを選択するためのボックスのスクリーンショット。

  6. [保存] を選択します。

ポータルで管理グループからサブスクリプションを削除する

  1. Azure portal にサインインします。

  2. [すべてのサービス]>[管理グループ] を選択します。

  3. 現在親となっている管理グループを選択します。

  4. 一覧内の移動したいサブスクリプションの行の末尾にある省略記号 (...) を選択します。

    サブスクリプションの移動オプションを含むメニューのスクリーンショット。

  5. [移動] を選択します。

  6. [移動] ウィンドウで、[New parent management group ID] (新しい親管理グループの ID) の値を選択します。.

    サブスクリプションを別の管理グループに移動するためのウィンドウのスクリーンショット。

  7. [保存] を選択します。

Azure PowerShell でサブスクリプションを移動する

PowerShell でサブスクリプションを移動するには、New-AzManagementGroupSubscription コマンドを使用します。

New-AzManagementGroupSubscription -GroupId 'Contoso' -SubscriptionId '12345678-1234-1234-1234-123456789012'

サブスクリプションと管理グループ間のリンクを削除するには、Remove-AzManagementGroupSubscription コマンドを使用します。

Remove-AzManagementGroupSubscription -GroupId 'Contoso' -SubscriptionId '12345678-1234-1234-1234-123456789012'

Azure CLI でサブスクリプションを移動する

Azure CLI でサブスクリプションを移動するには、add コマンドを使用します。

az account management-group subscription add --name 'Contoso' --subscription '12345678-1234-1234-1234-123456789012'

管理グループからサブスクリプションを削除するには、subscription remove コマンドを使用します。

az account management-group subscription remove --name 'Contoso' --subscription '12345678-1234-1234-1234-123456789012'

ARM テンプレートでサブスクリプションを移動する

Azure Resource Manager テンプレート (ARM テンプレート) でサブスクリプションを移動するには、次のテンプレートを使用して、それをテナント レベルで展開します。

{
    "$schema": "https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "targetMgId": {
            "type": "string",
            "metadata": {
                "description": "Provide the ID of the management group that you want to move the subscription to."
            }
        },
        "subscriptionId": {
            "type": "string",
            "metadata": {
                "description": "Provide the ID of the existing subscription to move."
            }
        }
    },
    "resources": [
        {
            "scope": "/",
            "type": "Microsoft.Management/managementGroups/subscriptions",
            "apiVersion": "2020-05-01",
            "name": "[concat(parameters('targetMgId'), '/', parameters('subscriptionId'))]",
            "properties": {
            }
        }
    ],
    "outputs": {}
}

または、次の Bicep ファイルを使用します。

targetScope = 'managementGroup'

@description('Provide the ID of the management group that you want to move the subscription to.')
param targetMgId string

@description('Provide the ID of the existing subscription to move.')
param subscriptionId string

resource subToMG 'Microsoft.Management/managementGroups/subscriptions@2020-05-01' = {
  scope: tenant()
  name: '${targetMgId}/${subscriptionId}'
}

ポータルで管理グループを移動する

  1. Azure portal にサインインします。

  2. [すべてのサービス]>[管理グループ] を選択します。

  3. 親にする管理グループを選択します。

  4. ページの上部で、 [管理グループの追加] を選択します。

  5. [管理グループの追加] ウィンドウで、新しい管理グループと既存の管理グループのどちらを使用するかを選択します。

    • [新規作成] を選択すると、新しい管理グループ構造が作成されます。
    • [既存のものを使用] を選択すると、この管理グループに移動できるすべての管理グループのドロップダウン リストが表示されます。

    管理グループを追加するウィンドウのスクリーンショット。

  6. [保存] を選択します。

Azure PowerShell で管理グループを移動する

管理グループを別のグループの下に移動するには、Azure PowerShell で Update-AzManagementGroup コマンドを使用します。

$parentGroup = Get-AzManagementGroup -GroupId ContosoIT
Update-AzManagementGroup -GroupId 'Contoso' -ParentId $parentGroup.id

Azure CLI で管理グループを移動する

Azure CLI で管理グループを移動するには、update コマンドを使用します。

az account management-group update --name 'Contoso' --parent ContosoIT

アクティビティ ログを使用して管理グループを監査する

管理グループは、Azure Monitor アクティビティ ログ内でサポートされます。 他の Azure リソースと同じ一元的な場所で、管理グループに発生するすべてのイベントのクエリを実行できます。 たとえば、特定の管理グループに対して行われた、ロールの割り当てまたはポリシーの割り当ての変更を、すべて確認できます。

選択した管理グループに関連するアクティビティ ログと操作のスクリーンショット。

Azure portal の外部にある管理グループに対してクエリを実行する場合、管理グループのターゲット スコープは "/providers/Microsoft.Management/managementGroups/{yourMgID}" のようになります。

他のリソース プロバイダーから管理グループを参照する

他のリソース プロバイダーの操作から管理グループを参照するときは、スコープとして次のパスを使用します。 このパスは、Azure PowerShell、Azure CLI、REST API を使用している場合に適用されます。

/providers/Microsoft.Management/managementGroups/{yourMgID}

たとえば、Azure PowerShell で管理グループに新しいロールの割り当てを行うときにこのパスを使用します。

New-AzRoleAssignment -Scope "/providers/Microsoft.Management/managementGroups/Contoso"

管理グループでポリシー定義を取得するときにも、同じスコープ パスを使用します。

GET https://management.azure.com/providers/Microsoft.Management/managementgroups/MyManagementGroup/providers/Microsoft.Authorization/policyDefinitions/ResourceNaming?api-version=2019-09-01

管理グループについて詳しくは、以下をご覧ください。