次の方法で共有


チュートリアル: Azure CLI を使用して Azure カスタム ロールを作成する

Azure の組み込みロールが組織の特定のニーズを満たさない場合は、独自のカスタム ロールを作成することができます。 このチュートリアルでは、Azure CLI を使用して Reader Support Tickets という名前のカスタム ロールを作成します。 カスタム ロールを使用すると、ユーザーはサブスクリプションのコントロール プレーン内のすべてを表示したり、サポート チケットを開いたりすることができます。

このチュートリアルでは、以下の内容を学習します。

  • カスタム ロールの作成
  • カスタム ロールを一覧表示する
  • カスタム ロールを更新する
  • カスタム ロールを削除する

Azure サブスクリプションをお持ちでない場合は、開始する前に 無料アカウント を作成してください。

[前提条件]

このチュートリアルを完了するには、次のものが必要です。

Azure CLI へのサインイン

Azure CLI にサインインします。

カスタム ロールの作成

カスタム ロールを作成する最も簡単な方法は、JSON テンプレートから開始し、変更を追加してから、新しいロールを作成することです。

  1. Microsoft.Support リソース プロバイダーのアクションの一覧を確認します。 アクセス許可の作成に使用できるアクションを把握しておくと便利です。

    アクション Description
    Microsoft.Support/register/action リソース プロバイダーをサポートするためのレジスタ
    Microsoft.Support/supportTickets/read サポート チケットの詳細 (状態、重大度、連絡先の詳細、通信を含む) を取得するか、サブスクリプション全体のサポート チケットの一覧を取得します。
    Microsoft.Support/supportTickets/write サポート チケットを作成または更新します。 テクニカル、課金、クォータ、またはサブスクリプション管理に関連する問題のサポート チケットを作成できます。 既存のサポート チケットの重大度、連絡先の詳細、通信を更新できます。
  2. ReaderSupportRole.jsonという名前の新しいファイル を作成します

  3. エディターで ReaderSupportRole.json を開き、次の JSON を追加します。

    さまざまなプロパティの詳細については、 Azure カスタム ロールに関するページを参照してください。

    {
      "Name": "",
      "IsCustom": true,
      "Description": "",
      "Actions": [],
      "NotActions": [],
      "DataActions": [],
      "NotDataActions": [],
      "AssignableScopes": [
        "/subscriptions/{subscriptionId1}"
      ]
    }
    
  4. Actions プロパティに次のアクションを追加します。 これらのアクションを使用すると、ユーザーはサブスクリプション内のすべてを表示し、サポート チケットを作成できます。

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

    az account list --output table
    
  6. AssignableScopesで、{subscriptionId1}をサブスクリプション ID に置き換えます。

    明示的なサブスクリプション ID を追加する必要があります。そうしないと、ロールをサブスクリプションにインポートすることはできません。

  7. NameDescriptionのプロパティを "閲覧者サポート チケット" と "サブスクリプション内のすべてを表示し、サポート チケットを開く" に変更します。

    JSON ファイルは次のようになります。

    {
      "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 ロール定義ファイルを指定します。

    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"
    }
    

    新しいカスタム ロールが使用可能になり、組み込みロールと同様に、ユーザー、グループ、またはサービス プリンシパルに割り当てることができます。

カスタム ロールを一覧表示する

  • すべてのカスタム ロールを一覧表示するには、 az role definition list コマンドと --custom-role-only パラメーターを使用します。

    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 でカスタム ロールを確認することもできます。

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

カスタム ロールを更新する

カスタム ロールを更新するには、JSON ファイルを更新してから、カスタム ロールを更新します。

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

  2. Actionsで、"Microsoft.Resources/deployments/*"リソース グループのデプロイを作成および管理するアクションを追加します。 前のアクションの後にコンマを必ず含めます。

    更新された JSON ファイルは次のようになります。

    {
      "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 ファイルを指定します。

    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"
    }
    

カスタム ロールを削除する

  • az role definition delete コマンドを使用し、カスタム ロールを削除するロール名またはロール ID を指定します。

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

次のステップ