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

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 CLI を使用して、Reader Support Tickets というカスタム ロールを作成します。For this tutorial, you create a custom role named Reader Support Tickets using Azure CLI. このカスタム ロールが割り当てられたユーザーは、サブスクリプションの管理プレーンにすべてを表示することができ、サポート チケットを開くこともできます。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.

前提条件Prerequisites

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

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

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

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

カスタム ロールを作成するには、JSON テンプレートをベースに必要な変更を加えて、新しいロールを作成するのが最も簡単です。The easiest way to create a custom role is to start with a JSON template, add your changes, and then create a new role.

  1. Microsoft.Support リソース プロバイダーの操作一覧を確認します。Review the list of operations for the Microsoft.Support resource provider. アクセス許可の作成に使用できる操作を知るための参考にしてください。It's helpful to know the operations that are available to create your permissions.

    OperationOperation 説明Description
    Microsoft.Support/register/actionMicrosoft.Support/register/action サポート リソース プロバイダーに登録します。Registers to Support Resource Provider
    Microsoft.Support/supportTickets/readMicrosoft.Support/supportTickets/read サポート チケットの詳細 (ステータス、重大度、連絡先の詳細、やり取りなど) を取得するか、サブスクリプション全体のサポート チケットの一覧を取得します。Gets Support Ticket details (including status, severity, contact details and communications) or gets the list of Support Tickets across subscriptions.
    Microsoft.Support/supportTickets/writeMicrosoft.Support/supportTickets/write サポート チケットを作成または更新します。Creates or Updates a Support Ticket. 技術、課金、クォータ、またはサブスクリプション管理に関する問題のサポート チケットを作成できます。You can create a Support Ticket for Technical, Billing, Quotas or Subscription Management related issues. 既存のサポート チケットの重大度、連絡先の詳細、やり取りを更新できます。You can update severity, contact details and communications for existing support tickets.
  2. ReaderSupportRole.json という名前の新しいファイルを作成します。Create a new file named ReaderSupportRole.json.

  3. ReaderSupportRole.json をエディターで開き、次の JSON を追加します。Open ReaderSupportRole.json in an editor and add the following JSON.

    各種のプロパティについては、「Azure リソースのカスタム ロール」を参照してください。For information about the different properties, see Custom roles for Azure resources.

    {
      "Name": "",
      "IsCustom": true,
      "Description": "",
      "Actions": [],
      "NotActions": [],
      "DataActions": [],
      "NotDataActions": [],
      "AssignableScopes": [
        "/subscriptions/{subscriptionId1}"
      ]
    }
    
  4. Actions プロパティに次の操作を追加します。Add the following operations to the Actions property. これらのアクションによって、ユーザーはサブスクリプションに含まれるあらゆるものを閲覧したり、サポート チケットを作成したりすることができます。These actions allow the user to view everything in the subscription and create support tickets.

    "*/read",
    "Microsoft.Support/*"
    
  5. az account list コマンドを使用して、サブスクリプションの ID を取得します。Get the ID of your subscription using the az account list command.

    az account list --output table
    
  6. AssignableScopes{subscriptionId1} は、実際のサブスクリプション ID で置き換えてください。In AssignableScopes, replace {subscriptionId1} with your subscription ID.

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

  7. 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"
      ]
    }
    
  8. 新しいカスタム ロールを作成するには、az role definition create コマンドを使用して、JSON ロール定義ファイルを指定します。To create the new custom role, use the az role definition create command and specify the JSON role definition file.

    az role definition create --role-definition "~/CustomRoles/ReaderSupportRole.json"
    
    {
      "additionalProperties": {},
      "assignableScopes": [
        "/subscriptions/00000000-0000-0000-0000-000000000000"
      ],
      "description": "View everything in the subscription and also open support tickets.",
      "id": "/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/22222222-2222-2222-2222-222222222222",
      "name": "22222222-2222-2222-2222-222222222222",
      "permissions": [
        {
          "actions": [
            "*/read",
            "Microsoft.Support/*"
          ],
          "additionalProperties": {},
          "dataActions": [],
          "notActions": [],
          "notDataActions": []
        }
      ],
      "roleName": "Reader Support Tickets",
      "roleType": "CustomRole",
      "type": "Microsoft.Authorization/roleDefinitions"
    }
    

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

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

  • すべてのカスタム ロールを一覧表示するには、az role definition list コマンドに --custom-role-only パラメーターを組み合わせて使用します。To list all your custom roles, use the az role definition list command with the --custom-role-only parameter.

    az role definition list --custom-role-only true
    
    [
      {
        "additionalProperties": {},
        "assignableScopes": [
          "/subscriptions/00000000-0000-0000-0000-000000000000"
        ],
        "description": "View everything in the subscription and also open support tickets.",
        "id": "/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/22222222-2222-2222-2222-222222222222",
        "name": "22222222-2222-2222-2222-222222222222",
        "permissions": [
          {
            "actions": [
              "*/read",
              "Microsoft.Support/*",
              "Microsoft.Resources/deployments/*",
              "Microsoft.Insights/diagnosticSettings/*/read"
            ],
            "additionalProperties": {},
            "dataActions": [],
            "notActions": [],
            "notDataActions": []
          }
        ],
        "roleName": "Reader Support Tickets",
        "roleType": "CustomRole",
        "type": "Microsoft.Authorization/roleDefinitions"
      }
    ]
    

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

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

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

カスタム ロールを更新するには、JSON ファイルを更新してカスタム ロールを更新します。To update the custom role, update the JSON file and then update the custom role.

  1. ReaderSupportRole.json ファイルを開きます。Open the ReaderSupportRole.json file.

  2. Actions に、リソース グループのデプロイを作成および管理するための操作を追加します ("Microsoft.Resources/deployments/*")。In Actions, add the operation to create and manage resource group deployments "Microsoft.Resources/deployments/*". 前の操作の後に必ずコンマを追加してください。Be sure to include a comma after the previous operation.

    更新後の JSON ファイルは次のようになります。Your updated 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/*",
        "Microsoft.Resources/deployments/*"
      ],
      "NotActions": [],
      "DataActions": [],
      "NotDataActions": [],
      "AssignableScopes": [
        "/subscriptions/00000000-0000-0000-0000-000000000000"
      ]
    }
    
  3. カスタム ロールを更新するには、az role definition update コマンドを使用して、更新済みの JSON ファイルを指定します。To update the custom role, use the az role definition update command and specify the updated JSON file.

    az role definition update --role-definition "~/CustomRoles/ReaderSupportRole.json"
    
    {
      "additionalProperties": {},
      "assignableScopes": [
        "/subscriptions/00000000-0000-0000-0000-000000000000"
      ],
      "description": "View everything in the subscription and also open support tickets.",
      "id": "/subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Authorization/roleDefinitions/22222222-2222-2222-2222-222222222222",
      "name": "22222222-2222-2222-2222-222222222222",
      "permissions": [
        {
          "actions": [
            "*/read",
            "Microsoft.Support/*",
            "Microsoft.Resources/deployments/*"
          ],
          "additionalProperties": {},
          "dataActions": [],
          "notActions": [],
          "notDataActions": []
        }
      ],
      "roleName": "Reader Support Tickets",
      "roleType": "CustomRole",
      "type": "Microsoft.Authorization/roleDefinitions"
    }
    

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

  • az role definition delete コマンドを使用し、ロール名またはロール ID を指定してカスタム ロールを削除します。Use the az role definition delete command and specify the role name or role ID to delete the custom role.

    az role definition delete --name "Reader Support Tickets"
    

次の手順Next steps