Azure カスタム ロールAzure custom roles

重要

AssignableScopes への管理グループの追加は、現在プレビューの段階です。Adding a management group to AssignableScopes is currently in preview. このプレビュー バージョンはサービス レベル アグリーメントなしで提供されています。運用環境のワークロードに使用することはお勧めできません。This preview version is provided without a service level agreement, and it's not recommended for production workloads. 特定の機能はサポート対象ではなく、機能が制限されることがあります。Certain features might not be supported or might have constrained capabilities. 詳しくは、Microsoft Azure プレビューの追加使用条件に関するページをご覧ください。For more information, see Supplemental Terms of Use for Microsoft Azure Previews.

Azure の組み込みロールが組織の特定のニーズを満たさない場合は、独自のカスタム ロールを作成することができます。If the Azure built-in roles don't meet the specific needs of your organization, you can create your own custom roles. 組み込みロールと同様に、カスタム ロールは、ユーザー、グループ、サービス プリンシパルに対して、管理グループ、サブスクリプション、およびリソース グループのスコープで割り当てることができます。Just like built-in roles, you can assign custom roles to users, groups, and service principals at management group, subscription, and resource group scopes.

カスタム ロールは、同じ Azure AD ディレクトリを信頼するサブスクリプション間で共有できます。Custom roles can be shared between subscriptions that trust the same Azure AD directory. カスタム ロールの数は、ディレクトリあたり 5,000 個という制限がありますThere is a limit of 5,000 custom roles per directory. (Azure Germany と Azure China 21Vianet の場合、制限は 2,000 カスタム ロールです)。カスタム ロールは、Azure portal、Azure PowerShell、Azure CLI、または REST API を使用して作成できます。(For Azure Germany and Azure China 21Vianet, the limit is 2,000 custom roles.) Custom roles can be created using the Azure portal, Azure PowerShell, Azure CLI, or the REST API.

カスタム ロールの例Custom role example

Azure PowerShell を使用して JSON 形式で表示されるカスタム ロールの例を次に示します。The following shows what a custom role looks like as displayed using Azure PowerShell in JSON format. このカスタム ロールは、仮想マシンの監視と再起動に使用できます。This custom role can be used for monitoring and restarting virtual machines.

{
  "Name": "Virtual Machine Operator",
  "Id": "88888888-8888-8888-8888-888888888888",
  "IsCustom": true,
  "Description": "Can monitor and restart virtual machines.",
  "Actions": [
    "Microsoft.Storage/*/read",
    "Microsoft.Network/*/read",
    "Microsoft.Compute/*/read",
    "Microsoft.Compute/virtualMachines/start/action",
    "Microsoft.Compute/virtualMachines/restart/action",
    "Microsoft.Authorization/*/read",
    "Microsoft.ResourceHealth/availabilityStatuses/read",
    "Microsoft.Resources/subscriptions/resourceGroups/read",
    "Microsoft.Insights/alertRules/*",
    "Microsoft.Insights/diagnosticSettings/*",
    "Microsoft.Support/*"
  ],
  "NotActions": [],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": [
    "/subscriptions/{subscriptionId1}",
    "/subscriptions/{subscriptionId2}",
    "/providers/Microsoft.Management/managementGroups/{groupId1}"
  ]
}

Azure CLI を使用して表示される同じカスタム ロールを次に示します。The following shows the same custom role as displayed using Azure CLI.

[
  {
    "assignableScopes": [
      "/subscriptions/{subscriptionId1}",
      "/subscriptions/{subscriptionId2}",
      "/providers/Microsoft.Management/managementGroups/{groupId1}"
    ],
    "description": "Can monitor and restart virtual machines.",
    "id": "/subscriptions/{subscriptionId1}/providers/Microsoft.Authorization/roleDefinitions/88888888-8888-8888-8888-888888888888",
    "name": "88888888-8888-8888-8888-888888888888",
    "permissions": [
      {
        "actions": [
          "Microsoft.Storage/*/read",
          "Microsoft.Network/*/read",
          "Microsoft.Compute/*/read",
          "Microsoft.Compute/virtualMachines/start/action",
          "Microsoft.Compute/virtualMachines/restart/action",
          "Microsoft.Authorization/*/read",
          "Microsoft.ResourceHealth/availabilityStatuses/read",
          "Microsoft.Resources/subscriptions/resourceGroups/read",
          "Microsoft.Insights/alertRules/*",
          "Microsoft.Insights/diagnosticSettings/*",
          "Microsoft.Support/*"
        ],
        "dataActions": [],
        "notActions": [],
        "notDataActions": []
      }
    ],
    "roleName": "Virtual Machine Operator",
    "roleType": "CustomRole",
    "type": "Microsoft.Authorization/roleDefinitions"
  }
]

カスタム ロールを作成すると、Azure portal にオレンジ色のリソース アイコンと共に表示されます。When you create a custom role, it appears in the Azure portal with an orange resource icon.

カスタム ロールのアイコン

カスタム ロールのプロパティCustom role properties

次の表で、カスタム ロールのプロパティについて説明します。The following table describes what the custom role properties mean.

プロパティProperty 必須Required TypeType 説明Description
Name
roleName
はいYes StringString カスタム ロールの表示名。The display name of the custom role. ロールの定義は、管理グループまたはサブスクリプション レベルのリソースですが、同じ Azure AD ディレクトリを共有する複数のサブスクリプションで使用できます。While a role definition is a management group or subscription-level resource, a role definition can be used in multiple subscriptions that share the same Azure AD directory. この表示名は、Azure AD ディレクトリ範囲で一意である必要があります。This display name must be unique at the scope of the Azure AD directory. 英字、数字、スペース、特殊文字を含めることができます。Can include letters, numbers, spaces, and special characters. 最大文字数は 128 文字です。Maximum number of characters is 128.
Id
name
はいYes StringString カスタム ロールの一意の ID。The unique ID of the custom role. Azure PowerShell と Azure CLI では、新しいロールを作成するときに自動的にこの ID が生成されます。For Azure PowerShell and Azure CLI, this ID is automatically generated when you create a new role.
IsCustom
roleType
はいYes StringString これがカスタム ロールであるかどうかを示します。Indicates whether this is a custom role. カスタム ロールの場合は true または CustomRole に設定します。Set to true or CustomRole for custom roles. 組み込みロールの場合は false または BuiltInRole に設定します。Set to false or BuiltInRole for built-in roles.
Description
description
はいYes StringString カスタム ロールの説明。The description of the custom role. 英字、数字、スペース、特殊文字を含めることができます。Can include letters, numbers, spaces, and special characters. 最大文字数は 1024 文字です。Maximum number of characters is 1024.
Actions
actions
はいYes String[]String[] ロールで実行できる管理操作を指定する文字列の配列。An array of strings that specifies the management operations that the role allows to be performed. 詳細については、「Actions」を参照してください。For more information, see Actions.
NotActions
notActions
いいえNo String[]String[] 許可された Actions から除外される管理操作を指定する文字列の配列。An array of strings that specifies the management operations that are excluded from the allowed Actions. 詳細については、「notActions」を参照してください。For more information, see NotActions.
DataActions
dataActions
いいえNo String[]String[] 対象のオブジェクト内のデータに対して、ロールで実行できるデータ操作を指定する文字列の配列。An array of strings that specifies the data operations that the role allows to be performed to your data within that object. DataActions が含まれるカスタム ロールを作成する場合、そのロールは管理グループのスコープで割り当てることができません。If you create a custom role with DataActions, that role cannot be assigned at the management group scope. 詳細については、「DataActions」を参照してください。For more information, see DataActions.
NotDataActions
notDataActions
いいえNo String[]String[] 許可された DataActions から除外されるデータ操作を指定する文字列の配列。An array of strings that specifies the data operations that are excluded from the allowed DataActions. 詳細については、「NotDataActions」を参照してください。For more information, see NotDataActions.
AssignableScopes
assignableScopes
はいYes String[]String[] 割り当てにカスタム ロールを使用できるスコープを指定する文字列の配列。An array of strings that specifies the scopes that the custom role is available for assignment. カスタム ロールの AssignableScopes に定義できる管理グループは 1 つだけです。You can only define one management group in AssignableScopes of a custom role. AssignableScopes への管理グループの追加は、現在プレビューの段階です。Adding a management group to AssignableScopes is currently in preview. 詳細については、「AssignableScopes」を参照してください。For more information, see AssignableScopes.

ワイルドカードのアクセス許可Wildcard permissions

ActionsNotActionsDataActions、および NotDataActions では、アクセス許可の定義でワイルドカード (*) をサポートしています。Actions, NotActions, DataActions, and NotDataActions support wildcards (*) to define permissions. ワイルドカード (*) を使用すると、指定されたアクション文字列に一致するものすべてにアクセス許可が拡張されます。A wildcard (*) extends a permission to everything that matches the action string you provide. たとえば、Azure Cost Management とエクスポートに関連するすべてのアクセス許可を追加したいとします。For example, suppose that you wanted to add all the permissions related to Azure Cost Management and exports. 次のすべてのアクション文字列を追加できます。You could add all of these action strings:

Microsoft.CostManagement/exports/action
Microsoft.CostManagement/exports/read
Microsoft.CostManagement/exports/write
Microsoft.CostManagement/exports/delete
Microsoft.CostManagement/exports/run/action

これらの文字列をすべて追加する代わりに、ワイルドカードの文字列を追加するだけで済みます。Instead of adding all of these strings, you could just add a wildcard string. たとえば、次のワイルドカードの文字列は、前の 5 つの文字列に相当します。For example, the following wildcard string is equivalent to the previous five strings. これには、今後追加される可能性があるエクスポートのアクセス許可も含まれます。This would also include any future export permissions that might be added.

Microsoft.CostManagement/exports/*

また、1 つの文字列に複数のワイルドカードを含めることもできます。You can also have multiple wildcards in a string. たとえば、次の文字列は、Cost Management のすべてのクエリ アクセス許可を表します。For example, the following string represents all query permissions for Cost Management.

Microsoft.CostManagement/*/query/*

カスタム ロールの作成手順Steps to create a custom role

カスタム ロールを作成するには、次の基本的な手順に従う必要があります。To create a custom role, here are basics steps you should follow.

  1. カスタム ロールを作成する方法を決定する。Decide how you want to create the custom role.

    カスタム ロールは、Azure portal、Azure PowerShell、Azure CLI、または REST API を使用して作成できます。You can create custom roles using Azure portal, Azure PowerShell, Azure CLI, or the REST API.

  2. 必要なアクセス許可を決定する。Determine the permissions you need.

    カスタム ロールを作成する場合、アクセス許可を定義するために使用可能な操作を把握しておく必要があります。When you create a custom role, you need to know the operations that are available to define your permissions. 操作の一覧を確認するには、「Azure Resource Manager のリソース プロバイダー操作」を参照してください。To view the list of operations, see the Azure Resource Manager resource provider operations. 操作をロール定義Actions または NotActions プロパティに追加します。You will add the operations to the Actions or NotActions properties of the role definition. データ操作をする場合は、それらを DataActions または NotDataActions プロパティに追加します。If you have data operations, you will add those to the DataActions or NotDataActions properties.

  3. カスタム ロールを作成する。Create the custom role.

    通常は、まず、既存の組み込みロールを使用し、必要に応じてそれを変更します。Typically, you start with an existing built-in role and then modify it for your needs. 最も簡単な方法は、Azure portal を使用することです。The easiest way is to use the Azure portal. Azure portal を使用してカスタム ロールを作成する手順については、「Azure portal を使用して Azure カスタム ロールを作成または更新する」を参照してください。For steps on how to create a custom role using the Azure portal, see Create or update Azure custom roles using the Azure portal.

  4. カスタム ロールをテストする。Test the custom role.

    カスタム ロールを作成したら、それをテストして期待どおりに動作することを確認する必要があります。Once you have your custom role, you have to test it to verify that it works as you expect. 後で調整する必要がある場合は、カスタム ロールを更新できます。If you need to make adjustments later, you can update the custom role.

カスタム ロールを作成、削除、更新、または表示できるユーザーWho can create, delete, update, or view a custom role

組み込みロールと同じように、AssignableScopes プロパティでは、割り当てにロールを使用できるスコープを指定します。Just like built-in roles, the AssignableScopes property specifies the scopes that the role is available for assignment. カスタム ロールの AssignableScopes プロパティでは、カスタム ロールを作成、削除、更新、または表示できるユーザーも制御されます。The AssignableScopes property for a custom role also controls who can create, delete, update, or view the custom role.

タスクTask OperationOperation 説明Description
カスタム ロールの作成/削除Create/delete a custom role Microsoft.Authorization/ roleDefinitions/write カスタム ロールのすべての AssignableScopes に対してこの操作が許可されているユーザーは、これらのスコープで使用するカスタム ロールを作成 (または削除) できます。Users that are granted this operation on all the AssignableScopes of the custom role can create (or delete) custom roles for use in those scopes. たとえば、管理グループ、サブスクリプション、リソース グループの所有者ユーザー アクセス管理者です。For example, Owners and User Access Administrators of management groups, subscriptions, and resource groups.
カスタム ロールの更新Update a custom role Microsoft.Authorization/ roleDefinitions/write カスタム ロールのすべての AssignableScopes に対してこの操作が許可されているユーザーは、これらのスコープ内のカスタム ロールを更新できます。Users that are granted this operation on all the AssignableScopes of the custom role can update custom roles in those scopes. たとえば、管理グループ、サブスクリプション、リソース グループの所有者ユーザー アクセス管理者です。For example, Owners and User Access Administrators of management groups, subscriptions, and resource groups.
カスタム ロールの表示View a custom role Microsoft.Authorization/ roleDefinitions/read あるスコープでこの操作を許可されたユーザーは、そのスコープで割り当て可能なカスタム ロールを表示できます。Users that are granted this operation at a scope can view the custom roles that are available for assignment at that scope. すべての組み込みロールでは、カスタム ロールを割り当てることができます。All built-in roles allow custom roles to be available for assignment.

カスタム ロールの制限事項Custom role limits

次の一覧では、カスタム ロールの制限事項について説明します。The following list describes the limits for custom roles.

  • 各ディレクトリは、最大 5,000 個のカスタム ロールを持つことができますEach directory can have up to 5000 custom roles.
  • Azure Germany と Azure China 21Vianet では、各ディレクトリに対して最大 2,000 のカスタム ロールを持つことができます。Azure Germany and Azure China 21Vianet can have up to 2000 custom roles for each directory.
  • ルート スコープ ("/") には AssignableScopes を設定できません。You cannot set AssignableScopes to the root scope ("/").
  • カスタム ロールの AssignableScopes に定義できる管理グループは 1 つだけです。You can only define one management group in AssignableScopes of a custom role. AssignableScopes への管理グループの追加は、現在プレビューの段階です。Adding a management group to AssignableScopes is currently in preview.
  • DataActions が含まれるカスタム ロールを管理グループのスコープで割り当てることはできません。Custom roles with DataActions cannot be assigned at the management group scope.
  • ロールの定義の割り当て可能なスコープに管理グループが存在するかどうかは、Azure Resource Manager では確認されません。Azure Resource Manager doesn't validate the management group's existence in the role definition's assignable scope.

カスタム ロールと管理グループについて詳しくは、「Azure 管理グループでリソースを整理する」をご覧ください。For more information about custom roles and management groups, see Organize your resources with Azure management groups.

入力形式と出力形式Input and output formats

コマンド ラインを使用してカスタム ロールを作成するには、通常、JSON を使用してカスタム ロールに対して必要なプロパティを指定します。To create a custom role using the command line, you typically use JSON to specify the properties you want for the custom role. 使用するツールによっては、入力と出力の形式が若干異なります。Depending on the tools you use, the input and output formats will look slightly different. このセクションでは、ツールに応じて入力と出力の形式を示します。This section lists the input and output formats depending on the tool.

Azure PowerShellAzure PowerShell

Azure PowerShell を使用してカスタム ロールを作成するには、次の入力を指定する必要があります。To create a custom role using Azure PowerShell, you must provide following input.

{
  "Name": "",
  "Description": "",
  "Actions": [],
  "NotActions": [],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": []
}

Azure PowerShell を使用してカスタム ロールを更新するには、次の入力を指定する必要があります。To update a custom role using Azure PowerShell, you must provide the following input. Id プロパティが追加されていることに注意してください。Note that the Id property has been added.

{
  "Name": "",
  "Id": "",
  "Description": "",
  "Actions": [],
  "NotActions": [],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": []
}

Azure PowerShell と ConvertTo-Json コマンドを使用してカスタム ロールを一覧表示する場合の出力の例を次に示します。The following shows an example of the output when you list a custom role using Azure PowerShell and the ConvertTo-Json command.

{
  "Name": "",
  "Id": "",
  "IsCustom": true,
  "Description": "",
  "Actions": [],
  "NotActions": [],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": []
}

Azure CLIAzure CLI

Azure CLI を使用してカスタム ロールを作成または更新するには、次の入力を指定する必要があります。To create or update a custom role using Azure CLI, you must provide following input. この形式は、Azure PowerShell を使用してカスタム ロールを作成する場合と同じ形式です。This format is the same format when you create a custom role using Azure PowerShell.

{
  "Name": "",
  "Description": "",
  "Actions": [],
  "NotActions": [],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": []
}

Azure CLI を使用してカスタム ロールを一覧表示する場合の出力の例を次に示します。The following shows an example of the output when you list a custom role using Azure CLI.

[
  {
    "assignableScopes": [],
    "description": "",
    "id": "",
    "name": "",
    "permissions": [
      {
        "actions": [],
        "dataActions": [],
        "notActions": [],
        "notDataActions": []
      }
    ],
    "roleName": "",
    "roleType": "CustomRole",
    "type": "Microsoft.Authorization/roleDefinitions"
  }
]

REST APIREST API

REST API を使用してカスタム ロールを作成または更新するには、次の入力を指定する必要があります。To create or update a custom role using the REST API, you must provide following input. この形式は、Azure portal を使用してカスタム ロールを作成したときに生成される形式と同じです。This format is the same format that gets generated when you create a custom role using the Azure portal.

{
  "properties": {
    "roleName": "",
    "description": "",
    "assignableScopes": [],
    "permissions": [
      {
        "actions": [],
        "notActions": [],
        "dataActions": [],
        "notDataActions": []
      }
    ]
  }
}

REST API を使用してカスタム ロールを一覧表示する場合の出力の例を次に示します。The following shows an example of the output when you list a custom role using the REST API.

{
    "properties": {
        "roleName": "",
        "type": "CustomRole",
        "description": "",
        "assignableScopes": [],
        "permissions": [
            {
                "actions": [],
                "notActions": [],
                "dataActions": [],
                "notDataActions": []
            }
        ],
        "createdOn": "",
        "updatedOn": "",
        "createdBy": "",
        "updatedBy": ""
    },
    "id": "",
    "type": "Microsoft.Authorization/roleDefinitions",
    "name": ""
}

次のステップNext steps