チュートリアル:Azure PowerShell を使用して Azure リソースのカスタム ロールを作成するTutorial: Create a custom role for Azure resources using Azure PowerShell

Azure リソースの組み込みロールが組織の特定のニーズを満たさない場合は、独自のカスタム ロールを作成することができます。If the built-in roles for Azure resources don't meet the specific needs of your organization, you can create your own custom roles. このチュートリアルでは、Azure PowerShell を使用して、Reader Support Tickets というカスタム ロールを作成します。For this tutorial, you create a custom role named Reader Support Tickets using Azure PowerShell. このカスタム ロールが割り当てられたユーザーは、サブスクリプションの管理プレーンにすべてを表示することができ、サポート チケットを開くこともできます。The custom role allows the user to view everything in the management plane of a subscription and also open support tickets.

このチュートリアルでは、以下の内容を学習します。In this tutorial, you learn how to:

  • カスタム ロールの作成Create a custom role
  • カスタム ロールの一覧表示List custom roles
  • カスタム ロールの更新Update a custom role
  • カスタム ロールの削除Delete a custom role

Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。If you don't have an Azure subscription, create a free account before you begin.

注意

この記事は、新しい Azure PowerShell Az モジュールを使用するために更新されました。This article has been updated to use the new Azure PowerShell Az module. AzureRM モジュールはまだ使用でき、少なくとも 2020 年 12 月までは引き続きバグ修正が行われます。You can still use the AzureRM module, which will continue to receive bug fixes until at least December 2020. Az モジュールと AzureRM の互換性の詳細については、「Introducing the new Azure PowerShell Az module (新しい Azure PowerShell Az モジュールの概要)」を参照してください。To learn more about the new Az module and AzureRM compatibility, see Introducing the new Azure PowerShell Az module. Az モジュールのインストール手順については、Azure PowerShell のインストールを参照してください。For Az module installation instructions, see Install Azure PowerShell.

前提条件Prerequisites

このチュートリアルを完了するには、以下が必要です。To complete this tutorial, you will need:

Azure PowerShell へのサインインSign in to Azure PowerShell

Azure PowerShell にサインインします。Sign in to Azure PowerShell.

カスタム ロールの作成Create a custom role

カスタム ロールを作成するには、組み込みのロールから始めて、そのロールを編集して新しいロールを作成するのが最も簡単です。The easiest way to create a custom role is to start with a built-in role, edit it, and then create a new role.

  1. PowerShell で、Get-AzProviderOperation コマンドを使用して、Microsoft.Support リソース プロバイダーの操作の一覧を取得します。In PowerShell, use the Get-AzProviderOperation command to get the list of operations for the Microsoft.Support resource provider. アクセス許可の作成に使用できる操作を知るための参考にしてください。It's helpful to know the operations that are available to create your permissions. Azure Resource Manager のリソース プロバイダー操作」でも、すべての操作の一覧をご覧いただけます。You can also see a list of all the operations at Azure Resource Manager resource provider operations.

    Get-AzProviderOperation "Microsoft.Support/*" | FT Operation, Description -AutoSize
    
    Operation                              Description
    ---------                              -----------
    Microsoft.Support/register/action      Registers to Support Resource Provider
    Microsoft.Support/supportTickets/read  Gets Support Ticket details (including status, severity, contact ...
    Microsoft.Support/supportTickets/write Creates or Updates a Support Ticket. You can create a Support Tic...
    
  2. Get-AzRoleDefinition コマンドを使用して、閲覧者ロールを JSON 形式で出力します。Use the Get-AzRoleDefinition command to output the Reader role in JSON format.

    Get-AzRoleDefinition -Name "Reader" | ConvertTo-Json | Out-File C:\CustomRoles\ReaderSupportRole.json
    
  3. エディターで ReaderSupportRole.json ファイルを開きます。Open the ReaderSupportRole.json file in an editor.

    この JSON 出力を次に示します。The following shows the JSON output. 各種のプロパティについては、「カスタム ロール」を参照してください。For information about the different properties, see Custom roles.

    {
      "Name": "Reader",
      "Id": "acdd72a7-3385-48ef-bd42-f606fba81ae7",
      "IsCustom": false,
      "Description": "Lets you view everything, but not make any changes.",
      "Actions": [
        "*/read"
      ],
      "NotActions": [],
      "DataActions": [],
      "NotDataActions": [],
      "AssignableScopes": [
        "/"
      ]
    }
    
  4. JSON ファイルを編集して、Actions プロパティに "Microsoft.Support/*" 操作を追加します。Edit the JSON file to add the "Microsoft.Support/*" operation to the Actions property. read 操作の後に必ずコンマを追加してください。Be sure to include a comma after the read operation. このアクションによって、ユーザーがサポート チケットを作成できるようになります。This action will allow the user to create support tickets.

  5. Get-AzSubscription コマンドを使用して、サブスクリプションの ID を取得します。Get the ID of your subscription using the Get-AzSubscription command.

    Get-AzSubscription
    
  6. AssignableScopes に、"/subscriptions/00000000-0000-0000-0000-000000000000" 形式でサブスクリプション ID を追加します。In AssignableScopes, add your subscription ID with the following format: "/subscriptions/00000000-0000-0000-0000-000000000000"

    明示的にサブスクリプション ID を追加してください。それ以外の場合、サブスクリプションにロールをインポートできなくなります。You must add explicit subscription IDs, otherwise you won't be allowed to import the role into your subscription.

  7. Id プロパティ行を削除し、IsCustom プロパティを true に変更します。Delete the Id property line and change the IsCustom property to true.

  8. Name プロパティと Description プロパティを、それぞれ "Reader Support Tickets" と "View everything in the subscription and also open support tickets." に変更します。Change the Name and Description properties to "Reader Support Tickets" and "View everything in the subscription and also open support tickets."

    編集後の JSON ファイルは次のようになります。Your JSON file should look like the following:

    {
      "Name": "Reader Support Tickets",
      "IsCustom": true,
      "Description": "View everything in the subscription and also open support tickets.",
      "Actions": [
        "*/read",
        "Microsoft.Support/*"
      ],
      "NotActions": [],
      "DataActions": [],
      "NotDataActions": [],
      "AssignableScopes": [
        "/subscriptions/00000000-0000-0000-0000-000000000000"
      ]
    }
    
  9. 新しいカスタム ロールを作成するには、New-AzRoleDefinition コマンドを使用して、JSON ロール定義ファイルを指定します。To create the new custom role, use the New-AzRoleDefinition command and specify the JSON role definition file.

    New-AzRoleDefinition -InputFile "C:\CustomRoles\ReaderSupportRole.json"
    
    Name             : Reader Support Tickets
    Id               : 22222222-2222-2222-2222-222222222222
    IsCustom         : True
    Description      : View everything in the subscription and also open support tickets.
    Actions          : {*/read, Microsoft.Support/*}
    NotActions       : {}
    DataActions      : {}
    NotDataActions   : {}
    AssignableScopes : {/subscriptions/00000000-0000-0000-0000-000000000000}
    

    Azure portal で新しいカスタム ロールが利用できる状態となり、組み込みロールと同じように、ユーザー、グループ、またはサービス プリンシパルに割り当てることができます。The new custom role is now available in the Azure portal and can be assigned to users, groups, or service principals just like built-in roles.

カスタム ロールの一覧表示List custom roles

  • すべてのカスタム ロールを一覧表示するには、Get-AzRoleDefinition コマンドを使用します。To list all your custom roles, use the Get-AzRoleDefinition command.

    Get-AzRoleDefinition | ? {$_.IsCustom -eq $true} | FT Name, IsCustom
    
    Name                   IsCustom
    ----                   --------
    Reader Support Tickets     True
    

    カスタム ロールは、Azure portal で確認することもできます。You can also see the custom role in the Azure portal.

    Azure Portal にインポートされたカスタム ロールのスクリーンショット

カスタム ロールの更新Update a custom role

カスタム ロールを更新するには、JSON ファイルを更新するか、または PSRoleDefinition オブジェクトを使用します。To update the custom role, you can update the JSON file or use the PSRoleDefinition object.

  1. JSON ファイルを更新するには、Get-AzRoleDefinition コマンドを使用して、カスタム ロールを JSON 形式で出力します。To update the JSON file, use the Get-AzRoleDefinition command to output the custom role in JSON format.

    Get-AzRoleDefinition -Name "Reader Support Tickets" | ConvertTo-Json | Out-File C:\CustomRoles\ReaderSupportRole2.json
    
  2. このファイルをエディターで開きます。Open the file in an editor.

  3. Actions に、リソース グループのデプロイを作成および管理するための操作を追加します ("Microsoft.Resources/deployments/*")。In Actions, add the operation to create and manage resource group deployments "Microsoft.Resources/deployments/*".

    更新後の JSON ファイルは次のようになります。Your updated JSON file should look like the following:

    {
      "Name": "Reader Support Tickets",
      "Id": "22222222-2222-2222-2222-222222222222",
      "IsCustom": true,
      "Description": "View everything in the subscription and also open support tickets.",
      "Actions": [
        "*/read",
        "Microsoft.Support/*",
        "Microsoft.Resources/deployments/*"
      ],
      "NotActions": [],
      "DataActions": [],
      "NotDataActions": [],
      "AssignableScopes": [
        "/subscriptions/00000000-0000-0000-0000-000000000000"
      ]
    }
    
  4. カスタム ロールを更新するには、Set-AzRoleDefinition コマンドを使用して、更新済みの JSON ファイルを指定します。To update the custom role, use the Set-AzRoleDefinition command and specify the updated JSON file.

    Set-AzRoleDefinition -InputFile "C:\CustomRoles\ReaderSupportRole2.json"
    
    Name             : Reader Support Tickets
    Id               : 22222222-2222-2222-2222-222222222222
    IsCustom         : True
    Description      : View everything in the subscription and also open support tickets.
    Actions          : {*/read, Microsoft.Support/*, Microsoft.Resources/deployments/*}
    NotActions       : {}
    DataActions      : {}
    NotDataActions   : {}
    AssignableScopes : {/subscriptions/00000000-0000-0000-0000-000000000000}
    
  5. PSRoleDefintion オブジェクトを使用してカスタム ロールを更新するには、まず Get-AzRoleDefinition コマンドを使用してそのロールを取得します。To use the PSRoleDefintion object to update your custom role, first use the Get-AzRoleDefinition command to get the role.

    $role = Get-AzRoleDefinition "Reader Support Tickets"
    
  6. Add メソッドを呼び出して、診断設定を読み取るための操作を追加します。Call the Add method to add the operation to read diagnostic settings.

    $role.Actions.Add("Microsoft.Insights/diagnosticSettings/*/read")
    
  7. Set-AzRoleDefinition を使用してロールを更新します。Use the Set-AzRoleDefinition to update the role.

    Set-AzRoleDefinition -Role $role
    
    Name             : Reader Support Tickets
    Id               : 22222222-2222-2222-2222-222222222222
    IsCustom         : True
    Description      : View everything in the subscription and also open support tickets.
    Actions          : {*/read, Microsoft.Support/*, Microsoft.Resources/deployments/*,
                       Microsoft.Insights/diagnosticSettings/*/read}
    NotActions       : {}
    DataActions      : {}
    NotDataActions   : {}
    AssignableScopes : {/subscriptions/00000000-0000-0000-0000-000000000000}
    

カスタム ロールの削除Delete a custom role

  1. Get-AzRoleDefinition コマンドを使用して、カスタム ロールの ID を取得します。Use the Get-AzRoleDefinition command to get the ID of the custom role.

    Get-AzRoleDefinition "Reader Support Tickets"
    
  2. Remove-AzRoleDefinition コマンドを使用し、ロール ID を指定して、カスタム ロールを削除します。Use the Remove-AzRoleDefinition command and specify the role ID to delete the custom role.

    Remove-AzRoleDefinition -Id "22222222-2222-2222-2222-222222222222"
    
    Confirm
    Are you sure you want to remove role definition with id '22222222-2222-2222-2222-222222222222'.
    [Y] Yes  [N] No  [S] Suspend  [?] Help (default is "Y"):
    
  3. 確認を求められたら、「Y」と入力します。When asked to confirm, type Y.

次の手順Next steps