Azure リソースのロール定義の概要Understand role definitions for Azure resources

ロールのしくみを理解しようとしている場合、または独自の Azure リソースのカスタム ロールを作成している場合は、ロールの定義方法を理解すると便利です。If you are trying to understand how a role works or if you are creating your own custom role for Azure resources, it's helpful to understand how roles are defined. この記事では、ロール定義の詳細について説明し、いくつかの例を示します。This article describes the details of role definitions and provides some examples.

ロール定義の構造Role definition structure

ロール定義はアクセス許可のコレクションです。A role definition is a collection of permissions. 単にロールと呼ばれることもあります。It's sometimes just called a role. ロール定義には、実行できる操作 (読み取り、書き込み、削除など) が登録されています。A role definition lists the operations that can be performed, such as read, write, and delete. 実行できない操作または基となるデータに関連する操作も一覧表示できます。It can also list the operations that can't be performed or operations related to underlying data. ロール定義の構造を次に示します。A role definition has the following structure:

Name
Id
IsCustom
Description
Actions []
NotActions []
DataActions []
NotDataActions []
AssignableScopes []

操作は、次の形式の文字列で指定します。Operations are specified with strings that have the following format:

  • {Company}.{ProviderName}/{resourceType}/{action}

操作文字列の {action} 部分には、リソースの種類に対して実行できる操作の種類を指定します。The {action} portion of an operation string specifies the type of operations you can perform on a resource type. たとえば、{action} には次の部分文字列が表示されます。For example, you will see the following substrings in {action}:

アクションの部分文字列Action substring 説明Description
* ワイルドカード文字は、文字列と一致するすべての操作に対するアクセスを許可します。The wildcard character grants access to all operations that match the string.
read 読み取り操作 (GET) を有効にします。Enables read operations (GET).
write 書き込み操作 (PUT、POST、および PATCH) を有効にします。Enables write operations (PUT, POST, and PATCH).
delete 削除操作 (DELETE) を有効にします。Enables delete operations (DELETE).

JSON 形式の共同作成者ロール定義を次に示します。Here's the Contributor role definition in JSON format. Actions 以下のワイルドカード (*) 操作は、このロールに割り当てられたプリンシパルがすべてのアクションを実行できること、つまりすべてを管理できることを示します。The wildcard (*) operation under Actions indicates that the principal assigned to this role can perform all actions, or in other words, it can manage everything. これには、今後、Azure が新しいリソースの種類を追加するときに定義されるアクションも含まれます。This includes actions defined in the future, as Azure adds new resource types. NotActions 以下の操作は Actions から引かれます。The operations under NotActions are subtracted from Actions. 共同作成者ロールの場合、NotActions は、リソースに対するアクセスを管理するこのロールの機能を削除し、リソースへのアクセスも割り当てます。In the case of the Contributor role, NotActions removes this role's ability to manage access to resources and also assign access to resources.

{
  "Name": "Contributor",
  "Id": "b24988ac-6180-42a0-ab88-20f7382dd24c",
  "IsCustom": false,
  "Description": "Lets you manage everything except access to resources.",
  "Actions": [
    "*"
  ],
  "NotActions": [
    "Microsoft.Authorization/*/Delete",
    "Microsoft.Authorization/*/Write",
    "Microsoft.Authorization/elevateAccess/Action"
  ],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": [
    "/"
  ]
}

管理操作とデータ操作 (プレビュー)Management and data operations (Preview)

管理操作のロールベースのアクセス制御は、ロール定義の Actions プロパティと NotActions プロパティで指定されています。Role-based access control for management operations is specified in the Actions and NotActions properties of a role definition. Azure での管理操作の例をいくつか示します。Here are some examples of management operations in Azure:

  • ストレージ アカウントに対するアクセスを管理するManage access to a storage account
  • BLOB コンテナーの作成、更新、または削除Create, update, or delete a blob container
  • リソース グループとそのすべてのリソースを削除するDelete a resource group and all of its resources

管理アクセスはデータに継承されません。Management access is not inherited to your data. この分離により、ワイルドカード (*) を使用したロールはデータに無制限にアクセスできなくなります。This separation prevents roles with wildcards (*) from having unrestricted access to your data. たとえば、ユーザーがサブスクリプションで閲覧者ロールを持っている場合、ストレージ アカウントは表示できますが、既定では基になるデータを表示することはできません。For example, if a user has a Reader role on a subscription, then they can view the storage account, but by default they can't view the underlying data.

以前は、ロールベースのアクセス制御はデータ操作には使用されませんでした。Previously, role-based access control was not used for data operations. データ操作のアクセス許可はリソース プロバイダーによって異なります。Authorization for data operations varied across resource providers. 管理操作に使用する同じロールベースのアクセス制御許可モデルがデータ操作に拡張されました (現在プレビュー中)。The same role-based access control authorization model used for management operations has been extended to data operations (currently in preview).

データ操作をサポートするために、新しいデータ プロパティがロール定義構造体に追加されました。To support data operations, new data properties have been added to the role definition structure. データ操作は DataActions プロパティおよび NotDataActions プロパティで指定されます。Data operations are specified in the DataActions and NotDataActions properties. これらのデータ プロパティを追加することによって、管理とデータの分離が維持されます。By adding these data properties, the separation between management and data is maintained. このことによって、ワイルドカード (*) を含む現在のロール割り当てが突然データにアクセスする動作が防止されます。This prevents current role assignments with wildcards (*) from suddenly having accessing to data. DataActions および NotDataActions で指定できるデータ操作の一部を次に示します。Here are some data operations that can be specified in DataActions and NotDataActions:

  • コンテナーの BLOB の一覧の読み取りRead a list of blobs in a container
  • コンテナーのストレージ BLOB の書き込みWrite a storage blob in a container
  • キュー内のメッセージの削除Delete a message in a queue

以下は、ストレージ BLOB データ閲覧者ロール定義で、Actions プロパティと DataActions プロパティ両方の操作が含まれています。Here's the Storage Blob Data Reader role definition, which includes operations in both the Actions and DataActions properties. このロールでは、BLOB コンテナーおよび基になる BLOB データを読み取ることができます。This role allows you to read the blob container and also the underlying blob data.

{
  "Name": "Storage Blob Data Reader",
  "Id": "2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
  "IsCustom": false,
  "Description": "Allows for read access to Azure Storage blob containers and data",
  "Actions": [
    "Microsoft.Storage/storageAccounts/blobServices/containers/read"
  ],
  "NotActions": [],
  "DataActions": [
    "Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read"
  ],
  "NotDataActions": [],
  "AssignableScopes": [
    "/"
  ]
}

DataActions プロパティと NotDataActions プロパティに追加できるのはデータ操作のみです。Only data operations can be added to the DataActions and NotDataActions properties. リソース プロバイダーはどの操作がデータ操作かを指定します。そのためには isDataAction プロパティを true に設定します。Resource providers identify which operations are data operations, by setting the isDataAction property to true. isDataActiontrue である操作の一覧を確認するには、「リソース プロバイダー操作」を参照してください。To see a list of the operations where isDataAction is true, see Resource provider operations. データ操作のないロールは、ロール定義内に DataActions プロパティと NotDataActions プロパティを含める必要はありません。Roles that do not have data operations are not required to have DataActions and NotDataActions properties within the role definition.

すべての管理操作 API 呼び出しの許可は Azure Resource Manager によって処理されます。Authorization for all management operation API calls is handled by Azure Resource Manager. データ操作 API 呼び出しの許可はリソース プロバイダーまたは Azure Resource Manager のいずれかによって処理されます。Authorization for data operation API calls is handled by either a resource provider or Azure Resource Manager.

データ操作例Data operations example

管理操作とデータ操作の動作方法の理解を深めるために、具体例を考えてみましょう。To better understand how management and data operations work, let's consider a specific example. Alice はサブスクリプション スコープで所有者ロールに割り当てられています。Alice has been assigned the Owner role at the subscription scope. Bob はストレージ アカウント スコープでストレージ BLOB データ共同作成者ロールに割り当てられています。Bob has been assigned the Storage Blob Data Contributor role at a storage account scope. この例を次の図に示します。The following diagram shows this example.

ロールベースのアクセス制御が管理操作とデータ操作の両方をサポートするように拡張されます

Alice の所有者ロールおよび Bob のストレージ BLOB データ共同作成者ロールは次のアクションを実行できます。The Owner role for Alice and the Storage Blob Data Contributor role for Bob have the following actions:

OwnerOwner

    Actions    Actions
    *    *

ストレージ BLOB データ共同作成者Storage Blob Data Contributor

    Actions    Actions
    Microsoft.Storage/storageAccounts/blobServices/containers/delete    Microsoft.Storage/storageAccounts/blobServices/containers/delete
    Microsoft.Storage/storageAccounts/blobServices/containers/read    Microsoft.Storage/storageAccounts/blobServices/containers/read
    Microsoft.Storage/storageAccounts/blobServices/containers/write    Microsoft.Storage/storageAccounts/blobServices/containers/write
    DataActions    DataActions
    Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete    Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete
    Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read    Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
    Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write    Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write

Alice にはサブスクリプション スコープにワイルドカード (*) アクションがあるため、Alice のアクセス許可は継承され、すべての管理アクションを実行できます。Since Alice has a wildcard (*) action at a subscription scope, their permissions inherit down to enable them to perform all management actions. Alice は、コンテナーの読み取り、書き込み、および削除を行うことができます。Alice can read, write, and delete containers. ただし、Alice は追加の手順を経ずにデータ操作を実行することはできません。However, Alice cannot perform data operations without taking additional steps. たとえば、既定では、Alice はコンテナー内の BLOB を読み取ることができません。For example, by default, Alice cannot read the blobs inside a container. BLOB を読み取るには、Alice はストレージ アクセス キーを取得し、それを使用して BLOB にアクセスする必要があります。To read the blobs, Alice would have to retrieve the storage access keys and use them to access the blobs.

Bob のアクセス許可はストレージ BLOB データ共同作成者ロールで指定された Actions および DataActions のみに制限されます。Bob's permissions are restricted to just the Actions and DataActions specified in the Storage Blob Data Contributor role. Bob はロールに基づいて、管理操作とデータ操作の両方を実行できます。Based on the role, Bob can perform both management and data operations. たとえば、Bob は指定されたストレージ アカウントのコンテナーを読み取り、書き込み、および削除でき、また BLOB も読み取り、書き込み、および削除できます。For example, Bob can read, write, and delete containers in the specified storage account and can also read, write, and delete the blobs.

ストレージの管理とデータ プレーンのセキュリティの詳細については、「Azure Storage セキュリティ ガイド」を参照してください。For more information about management and data plane security for storage, see the Azure Storage security guide.

RBAC を使用してデータ操作をサポートするツールWhat tools support using RBAC for data operations?

データ操作を表示し、操作するには、正しいバージョンのツールまたは SDK が必要です。To view and work with data operations, you must have the correct versions of the tools or SDKs:

ツールTool バージョンVersion
Azure PowerShellAzure PowerShell 1.1.0 以降1.1.0 or later
Azure CLIAzure CLI 2.0.30 以降2.0.30 or later
Azure for .NETAzure for .NET 2.8.0 プレビュー以降2.8.0-preview or later
Azure SDK for GoAzure SDK for Go 15.0.0 以降15.0.0 or later
Azure for JavaAzure for Java 1.9.0 以降1.9.0 or later
Azure for PythonAzure for Python 0.40.0 以降0.40.0 or later
Azure SDK for RubyAzure SDK for Ruby 0.17.1 以降0.17.1 or later

REST API でデータ操作を確認して使用するには、次のバージョン以降に api-version パラメーターを設定する必要があります。To view and use the data operations in the REST API, you must set the api-version parameter to the following version or later:

  • 2018-01-01-preview2018-01-01-preview

Azure portal では、ユーザーが Azure AD のプレビュー エクスペリエンスを介して、キューおよび BLOB コンテナーの内容を参照および管理することもできます。The Azure portal also allows users to browse and manage the contents of Queues and Blob containers via the Azure AD preview experience. キューまたは BLOB コンテナーの内容を表示および管理するには、ストレージ アカウントの [概要] にある [Azure AD プレビューを使用してデータを探索します] をクリックします。To see and manage the contents of a Queue or Blob container click the Explore data using Azure AD preview on the storage account Overview.

Azure AD プレビューを使用してキューおよび BLOB コンテナーを探索する

ActionsActions

Actions アクセス許可では、ロールで実行できる管理操作を指定します。The Actions permission specifies the management operations that the role allows to be performed. このプロパティに文字列で指定された一連の操作によって、Azure リソース プロバイダーのセキュリティ保護可能な操作が識別されます。It is a collection of operation strings that identify securable operations of Azure resource providers. Actions で使用できる管理操作の例をいくつか示します。Here are some examples of management operations that can be used in Actions.

操作文字列Operation string 説明Description
*/read すべての Azure リソース プロバイダーの全リソースの種類を対象に読み取り操作のアクセス権を付与します。Grants access to read operations for all resource types of all Azure resource providers.
Microsoft.Compute/* Microsoft.Compute リソース プロバイダーのすべてのリソースの種類を対象にすべての操作のアクセス権を付与します。Grants access to all operations for all resource types in the Microsoft.Compute resource provider.
Microsoft.Network/*/read Microsoft.Network リソース プロバイダーの全リソース タイプを対象に読み取り操作のアクセス権を付与します。Grants access to read operations for all resource types in the Microsoft.Network resource provider.
Microsoft.Compute/virtualMachines/* Virtual Machines とその子リソース タイプを対象にすべての操作のアクセス権を付与します。Grants access to all operations of virtual machines and its child resource types.
microsoft.web/sites/restart/Action Web アプリを再起動するためのアクセス権を付与します。Grants access to restart a web app.

NotActionsNotActions

NotActions アクセス許可には、許可された Actions から除外される管理操作を指定します。The NotActions permission specifies the management operations that are excluded from the allowed Actions. 制限対象の操作を除外する方が、許可する操作セットを容易に定義できる場合は、NotActions アクセス許可を使用します。Use the NotActions permission if the set of operations that you want to allow is more easily defined by excluding restricted operations. ロール (有効なアクセス許可) によって付与されたアクセスは、Actions 操作から NotActions 操作を引くことによって計算されます。The access granted by a role (effective permissions) is computed by subtracting the NotActions operations from the Actions operations.

注意

NotActions で特定の操作を除外したロールをユーザーに割り当てたうえで、同じユーザーにその操作へのアクセス権を付与する別のロールを割り当てた場合、ユーザーはその操作の実行が許可されます。If a user is assigned a role that excludes an operation in NotActions, and is assigned a second role that grants access to the same operation, the user is allowed to perform that operation. NotActions は拒否ルールとは異なり、特定の操作を除外する必要があるときに、許可の対象となる一連の操作を指定しやすくすることを目的としたものに過ぎません。NotActions is not a deny rule – it is simply a convenient way to create a set of allowed operations when specific operations need to be excluded.

DataActions (プレビュー)DataActions (Preview)

DataActions アクセス許可では、対象のオブジェクト内のデータに対して、ロールで実行できるデータ操作を指定します。The DataActions permission specifies the data operations that the role allows to be performed to your data within that object. たとえば、ユーザーがあるストレージ アカウントへの BLOB データの読み取りアクセス許可を持っている場合、そのユーザーはそのストレージ アカウント内の BLOB を読み取ることができます。For example, if a user has read blob data access to a storage account, then they can read the blobs within that storage account. 次に DataActions で使用できるデータ操作の例を示します。Here are some examples of data operations that can be used in DataActions.

操作文字列Operation string 説明Description
Microsoft.Storage/storageAccounts/ blobServices/containers/blobs/read BLOB または BLOB の一覧を返します。Returns a blob or a list of blobs.
Microsoft.Storage/storageAccounts/ blobServices/containers/blobs/write BLOB の書き込みの結果を返します。Returns the result of writing a blob.
Microsoft.Storage/storageAccounts/ queueServices/queues/messages/read メッセージを返します。Returns a message.
Microsoft.Storage/storageAccounts/ queueServices/queues/messages/* メッセージまたはメッセージの書き込みまたは削除の結果を返します。Returns a message or the result of writing or deleting a message.

NotDataActions (プレビュー)NotDataActions (Preview)

NotDataActions アクセス許可では、許可された DataActions から除外されるデータ操作を指定します。The NotDataActions permission specifies the data operations that are excluded from the allowed DataActions. ロール (有効なアクセス許可) によって付与されたアクセスは、DataActions 操作から NotDataActions 操作を引くことによって計算されます。The access granted by a role (effective permissions) is computed by subtracting the NotDataActions operations from the DataActions operations. 各リソース プロバイダーは、それぞれの API セットを提供し、データ操作をサポートします。Each resource provider provides its respective set of APIs to fulfill data operations.

注意

NotDataActions であるデータ操作を除外したロールをユーザーに割り当てたうえで、同じユーザーにそのデータ操作へのアクセス権を付与する別のロールを割り当てた場合、ユーザーはそのデータ操作の実行が許可されます。If a user is assigned a role that excludes a data operation in NotDataActions, and is assigned a second role that grants access to the same data operation, the user is allowed to perform that data operation. NotDataActions は拒否ルールとは異なり、特定のデータ操作を除外する必要があるときに、許可の対象となる一連のデータ操作を指定しやすくすることを目的としたものに過ぎません。NotDataActions is not a deny rule – it is simply a convenient way to create a set of allowed data operations when specific data operations need to be excluded.

AssignableScopesAssignableScopes

AssignableScopes プロパティでは、ロールを割り当て可能なスコープ (サブスクリプション、リソース グループ、またはリソース) を指定します。The AssignableScopes property specifies the scopes (subscriptions, resource groups, or resources) that the role is available for assignment. そのロールを必要とするサブスクリプションやリソース グループのみに割り当てを限定し、それ以外のサブスクリプションやリソース グループについては元のユーザー エクスペリエンスを保ち、不要な混乱を避けることができます。You can make the role available for assignment in only the subscriptions or resource groups that require it, and not the clutter user experience for the rest of the subscriptions or resource groups. 少なくとも 1 つのサブスクリプション、リソース グループ、またはリソース ID を使用する必要があります。You must use at least one subscription, resource group, or resource ID.

組み込みロールでは AssignableScopes がルート スコープ ("/") に設定されています。Built-in roles have AssignableScopes set to the root scope ("/"). ルート スコープは、すべてのスコープでそのロールを割り当て可能であることを示します。The root scope indicates that the role is available for assignment in all scopes. 有効な AssignableScopes の例を次に示します。Examples of valid assignable scopes include:

シナリオScenario Example
単一のサブスクリプションの割り当てにロールを使用できるRole is available for assignment in a single subscription "/subscriptions/c276fc76-9cd4-44c9-99a7-4fd71546436e"
2 つのサブスクリプションの割り当てにロールを使用できるRole is available for assignment in two subscriptions "/subscriptions/c276fc76-9cd4-44c9-99a7-4fd71546436e", "/subscriptions/e91d47c4-76f3-4271-a796-21b4ecfe3624"
ネットワーク リソース グループでのみ割り当てにロールを使用できるRole is available for assignment only in the Network resource group "/subscriptions/c276fc76-9cd4-44c9-99a7-4fd71546436e/resourceGroups/Network"
すべてのスコープの割り当てにロールを使用できるRole is available for assignment in all scopes "/"

カスタム ロールの AssignableScopes の詳細については、Azure リソースのカスタム ロールに関する記事を参照してください。For information about AssignableScopes for custom roles, see Custom roles for Azure resources.

次の手順Next steps