Pochopení definic rolí pro prostředky AzureUnderstand role definitions for Azure resources

Pokud se snažíte pochopit, jak role funguje, nebo pokud vytváříte vlastní roli pro prostředky Azure, je vhodné pochopit, jak jsou role definované.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. Tento článek popisuje podrobné informace o definicích rolí a obsahuje několik příkladů.This article describes the details of role definitions and provides some examples.

Struktura definice roleRole definition structure

Definice role je kolekce oprávnění.A role definition is a collection of permissions. Někdy jí jednoduše říká role.It's sometimes just called a role. Definice role poskytuje seznam operací, které je možné provádět, například čtení, zápis a odstranění.A role definition lists the operations that can be performed, such as read, write, and delete. Může také obsahovat seznam operací, které není možné provádět, nebo operací souvisejících s podkladovými daty.It can also list the operations that can't be performed or operations related to underlying data. Definice role má následující strukturu:A role definition has the following structure:

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

Operace jsou zadány s řetězci, které mají následující formát:Operations are specified with strings that have the following format:

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

{action} část řetězce operace určuje typ operací, které můžete provádět u typu prostředku.The {action} portion of an operation string specifies the type of operations you can perform on a resource type. Například se zobrazí následující podřetězce v {action}:For example, you will see the following substrings in {action}:

Podřetězec akceAction substring PopisDescription
* Zástupný znak uděluje přístup ke všem operacím, které odpovídají řetězci.The wildcard character grants access to all operations that match the string.
read Povoluje operace čtení (GET).Enables read operations (GET).
write Povoluje operace zápisu (PUT nebo PATCH).Enables write operations (PUT or PATCH).
action Povolí vlastní operace, jako je restartování virtuálních počítačů (POST).Enables custom operations like restart virtual machines (POST).
delete Povolí operace delete (odstranit).Enables delete operations (DELETE).

Tady je definice role Přispěvatel ve formátu JSON.Here's the Contributor role definition in JSON format. Zástupný znak operace (*) ve sloupci Actions označuje, že objekt zabezpečení přiřazený k této roli může provádět všechny akce – neboli (jinými slovy) může spravovat vše.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. Zahrnuje to i akce definované v budoucnosti v souvislosti s tím, jak Azure přidává nové typy prostředků.This includes actions defined in the future, as Azure adds new resource types. Operace ve sloupci NotActions se odčítají od operací ve sloupci Actions.The operations under NotActions are subtracted from Actions. V případě role Contributor (Přispěvatel) se prostřednictvím NotActions odebere schopnost role spravovat přístup k prostředkům a také přiřazovat přístup k prostředkům.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": [
    "/"
  ]
}

Operace správy a datManagement and data operations

Řízení přístupu na základě role pro operace správy je určené ve vlastnostech Actions a NotActions definice role.Role-based access control for management operations is specified in the Actions and NotActions properties of a role definition. Tady jsou některé příklady operací správy v Azure:Here are some examples of management operations in Azure:

  • Správa přístupu k účtu úložištěManage access to a storage account
  • Vytvoření, aktualizace nebo odstranění kontejneru objektů BLOBCreate, update, or delete a blob container
  • Odstraní skupinu prostředků a všechny její prostředky.Delete a resource group and all of its resources

Přístup pro správu se nedědí do vašich dat, pokud je metoda ověřování kontejneru nastavená na "uživatelský účet Azure AD", nikoli na přístupový klíč.Management access is not inherited to your data provided that the container authentication method is set to "Azure AD User Account" and not "Access Key". Toto oddělení brání rolím se zástupnými znaky (*), aby měli neomezený přístup k vašim datům.This separation prevents roles with wildcards (*) from having unrestricted access to your data. Pokud má uživatel například roli Čtenář v předplatném, může zobrazit účet úložiště, ale ve výchozím nastavení nemůže zobrazit podkladová 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.

Dřív se pro operace s daty nepoužilo řízení přístupu na základě role.Previously, role-based access control was not used for data operations. Autorizace u datových operací mezi poskytovateli prostředků je různá.Authorization for data operations varied across resource providers. Stejný autorizační model řízení přístupu založený na rolích, který se používá pro operace správy, se rozšířil na operace s daty.The same role-based access control authorization model used for management operations has been extended to data operations.

V rámci podpory datových operací byly do struktury definice role přidány nové vlastnosti dat.To support data operations, new data properties have been added to the role definition structure. Operace s daty se definují pomocí vlastností DataActions a NotDataActions.Data operations are specified in the DataActions and NotDataActions properties. Přidáním těchto vlastností dat se zachová oddělení správy a dat.By adding these data properties, the separation between management and data is maintained. Zabrání se tak tomu, aby aktuální přiřazení role pomocí zástupných znaků (*) nepředvídaně umožnilo přístup k datům.This prevents current role assignments with wildcards (*) from suddenly having accessing to data. Tady jsou některé datové operace, které je možné zadat pomocí vlastností DataActions a NotDataActions:Here are some data operations that can be specified in DataActions and NotDataActions:

  • Čtení seznamu objektů blob v kontejneruRead a list of blobs in a container
  • Zápis objektu blob úložiště v kontejneruWrite a storage blob in a container
  • Odstranění zprávy ve frontěDelete a message in a queue

Tady je definice role čtečky dat objektů BLOB úložiště , která zahrnuje operace ve vlastnostech Actions i DataActions.Here's the Storage Blob Data Reader role definition, which includes operations in both the Actions and DataActions properties. Tato role umožňuje číst kontejner objektů BLOB a také podkladová data objektů 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": [
    "/"
  ]
}

Do vlastností DataActions a NotDataActions je možné přidat jenom datové operace.Only data operations can be added to the DataActions and NotDataActions properties. Poskytovatelé prostředků identifikují operace operací s daty nastavením vlastnosti isDataAction na hodnotu true.Resource providers identify which operations are data operations, by setting the isDataAction property to true. Pokud chcete zobrazit seznam operací, které isDataAction true, přečtěte si téma operace poskytovatele prostředků.To see a list of the operations where isDataAction is true, see Resource provider operations. Role, které nemají operace s daty, nemusí mít DataActions a NotDataActions vlastnosti v rámci definice role.Roles that do not have data operations are not required to have DataActions and NotDataActions properties within the role definition.

Ověřování pro všechna volání rozhraní API operací správy se zpracovává pomocí Azure Resource Manager.Authorization for all management operation API calls is handled by Azure Resource Manager. Autorizace volání rozhraní API operací s daty se zpracovává buď poskytovatelem prostředků, nebo Azure Resource Manager.Authorization for data operation API calls is handled by either a resource provider or Azure Resource Manager.

Příklad operací s datyData operations example

Abychom lépe pochopili, jak fungují operace správy a dat, uvažujme konkrétní příklad.To better understand how management and data operations work, let's consider a specific example. Alici byla přiřazena role vlastníka v oboru předplatného.Alice has been assigned the Owner role at the subscription scope. Uživateli byl přiřazená role Přispěvatel dat objektů BLOB úložiště v oboru účtu úložiště.Bob has been assigned the Storage Blob Data Contributor role at a storage account scope. Tento příklad znázorňuje následující obrázek.The following diagram shows this example.

Řízení přístupu na základě role bylo rozšířeno na podporu operací správy a dat.

Role vlastníka pro roli Přispěvatel dat objektu BLOB služby Storage pro Boba má následující akce:The Owner role for Alice and the Storage Blob Data Contributor role for Bob have the following actions:

VlastníkOwner

    akce    Actions
    *    *

Přispěvatel dat objektu BLOB služby StorageStorage Blob Data Contributor

    akce    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
    ch akcí    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

Vzhledem k tomu, že Alice obsahuje akci zástupných znaků (*) v oboru předplatného, jejich oprávnění zdědí nižší verze, aby mohly provádět všechny akce správy.Since Alice has a wildcard (*) action at a subscription scope, their permissions inherit down to enable them to perform all management actions. Alice může číst, zapisovat a odstraňovat kontejnery.Alice can read, write, and delete containers. Alice ale nemůže provádět operace s daty, aniž by bylo nutné provést další kroky.However, Alice cannot perform data operations without taking additional steps. Ve výchozím nastavení například Alice nemůže číst objekty blob uvnitř kontejneru.For example, by default, Alice cannot read the blobs inside a container. Pro čtení objektů BLOB by Alice musela načíst přístupové klíče úložiště a používat je pro přístup k objektům blob.To read the blobs, Alice would have to retrieve the storage access keys and use them to access the blobs.

Oprávnění Bob jsou omezená jenom na Actions a DataActions zadaná v roli Přispěvatel dat objektů BLOB úložiště .Bob's permissions are restricted to just the Actions and DataActions specified in the Storage Blob Data Contributor role. Na základě role může Bob provádět operace správy i dat.Based on the role, Bob can perform both management and data operations. Bob může například číst, zapisovat a odstraňovat kontejnery v zadaném účtu úložiště a může také číst, zapisovat a odstraňovat objekty blob.For example, Bob can read, write, and delete containers in the specified storage account and can also read, write, and delete the blobs.

Další informace o zabezpečení správy a roviny dat pro úložiště najdete v Průvodci zabezpečením Azure Storage.For more information about management and data plane security for storage, see the Azure Storage security guide.

Jaké nástroje podporují používání RBAC pro operace s daty?What tools support using RBAC for data operations?

Chcete-li zobrazit a pracovat s datovými operacemi, je nutné mít správné verze nástrojů nebo sad SDK:To view and work with data operations, you must have the correct versions of the tools or SDKs:

NástrojTool VerzeVersion
Azure PowerShellAzure PowerShell 1.1.0 nebo novější1.1.0 or later
Azure CLIAzure CLI 2.0.30 nebo novější2.0.30 or later
Azure pro .NETAzure for .NET 2.8.0-Preview nebo novější2.8.0-preview or later
Azure SDK pro GoAzure SDK for Go 15.0.0 nebo novější15.0.0 or later
Azure pro jazyk JavaAzure for Java 1.9.0 nebo novější1.9.0 or later
Azure pro PythonAzure for Python 0.40.0 nebo novější0.40.0 or later
Azure SDK pro RubyAzure SDK for Ruby 0.17.1 nebo novější0.17.1 or later

Chcete-li zobrazit a používat operace s daty v REST API, je nutné nastavit parametr verze rozhraní API na následující verzi nebo novější: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-07-012018-07-01

AkceActions

Oprávnění Actions Určuje operace správy, které může role provést.The Actions permission specifies the management operations that the role allows to be performed. Je to kolekce řetězců operací, které identifikují zabezpečitelné operace poskytovatelů prostředků Azure.It is a collection of operation strings that identify securable operations of Azure resource providers. Tady je několik příkladů operací správy, které je možné použít v Actions.Here are some examples of management operations that can be used in Actions.

Řetězec operaceOperation string PopisDescription
*/read Uděluje přístup k operacím čtení pro všechny typy prostředků všech poskytovatelů prostředků Azure.Grants access to read operations for all resource types of all Azure resource providers.
Microsoft.Compute/* Uděluje přístup ke všem operacím pro všechny typy prostředků v poskytovateli prostředků Microsoft. Compute.Grants access to all operations for all resource types in the Microsoft.Compute resource provider.
Microsoft.Network/*/read Uděluje přístup k operacím čtení pro všechny typy prostředků v poskytovateli prostředků Microsoft. Network.Grants access to read operations for all resource types in the Microsoft.Network resource provider.
Microsoft.Compute/virtualMachines/* Uděluje přístup ke všem operacím virtuálních počítačů a jejích podřízených typů prostředků.Grants access to all operations of virtual machines and its child resource types.
microsoft.web/sites/restart/Action Udělí přístup k restartování webové aplikace.Grants access to restart a web app.

NotActionsNotActions

Oprávnění NotActions Určuje operace správy, které jsou vyloučeny z povolených Actions.The NotActions permission specifies the management operations that are excluded from the allowed Actions. Oprávnění NotActions použijte v případě, že sada operací, které chcete zakázat, je snazší definovat s vyloučením operací s omezeným přístupem.Use the NotActions permission if the set of operations that you want to allow is more easily defined by excluding restricted operations. Přístup udělený rolí (efektivní oprávnění) se vypočítává odečtením NotActions operací od Actions operací.The access granted by a role (effective permissions) is computed by subtracting the NotActions operations from the Actions operations.

Poznámka

Pokud je uživateli přiřazena role, která vylučuje operaci v NotActionsa má přiřazenou druhou roli, která udělí přístup ke stejné operaci, uživatel může tuto operaci provést.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 není pravidlo Odepřít – jedná se o pohodlný způsob, jak vytvořit sadu povolených operací, pokud je potřeba vyloučit konkrétní operace.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.

Akce dataactionsDataActions

Oprávnění DataActions Určuje operace s daty, které role umožňuje provádět na vašich datech v rámci daného objektu.The DataActions permission specifies the data operations that the role allows to be performed to your data within that object. Pokud má uživatel například oprávnění číst data objektů BLOB k účtu úložiště, může číst objekty BLOB v rámci tohoto účtu úložiště.For example, if a user has read blob data access to a storage account, then they can read the blobs within that storage account. Zde je několik příkladů operací s daty, které lze použít v DataActions.Here are some examples of data operations that can be used in DataActions.

Řetězec operaceOperation string PopisDescription
Microsoft.Storage/storageAccounts/ blobServices/containers/blobs/read Vrátí objekt BLOB nebo seznam objektů BLOB.Returns a blob or a list of blobs.
Microsoft.Storage/storageAccounts/ blobServices/containers/blobs/write Vrátí výsledek zápisu objektu BLOB.Returns the result of writing a blob.
Microsoft.Storage/storageAccounts/ queueServices/queues/messages/read Vrátí zprávu.Returns a message.
Microsoft.Storage/storageAccounts/ queueServices/queues/messages/* Vrátí zprávu nebo výsledek zápisu nebo odstranění zprávy.Returns a message or the result of writing or deleting a message.

NotDataActionsNotDataActions

Oprávnění NotDataActions Určuje operace s daty, které jsou vyloučeny z povolených DataActions.The NotDataActions permission specifies the data operations that are excluded from the allowed DataActions. Přístup udělený rolí (efektivní oprávnění) se vypočítává odečtením NotDataActions operací od DataActions operací.The access granted by a role (effective permissions) is computed by subtracting the NotDataActions operations from the DataActions operations. Každý poskytovatel prostředků poskytuje odpovídající sadu rozhraní API pro splnění operací s daty.Each resource provider provides its respective set of APIs to fulfill data operations.

Poznámka

Pokud je uživateli přiřazena role, která vylučuje datovou operaci v NotDataActionsa je jí přiřazena druhá role, která uděluje přístup ke stejné datové operaci, uživatel může tuto datovou operaci provést.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 není pravidlo Odepřít – jedná se o pohodlný způsob, jak vytvořit sadu povolených datových operací, když je potřeba vyloučit konkrétní datové operace.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

Vlastnost AssignableScopes určuje obory (skupiny pro správu, předplatná, skupiny prostředků nebo prostředky), které mají tuto definici role k dispozici.The AssignableScopes property specifies the scopes (management groups, subscriptions, resource groups, or resources) that have this role definition available. Role může být k dispozici pro přiřazení pouze v rámci skupin pro správu, předplatných nebo skupin prostředků, které to vyžadují.You can make the role available for assignment in only the management groups, subscriptions, or resource groups that require it. Je nutné použít alespoň jednu skupinu pro správu, předplatné, skupinu prostředků nebo ID prostředku.You must use at least one management group, subscription, resource group, or resource ID.

Předdefinované role mají AssignableScopes nastavené na kořenový obor ("/").Built-in roles have AssignableScopes set to the root scope ("/"). Kořenový obor určuje, že role je k dispozici pro přiřazení ve všech oborech.The root scope indicates that the role is available for assignment in all scopes. Mezi platné obory přiřazení patří:Examples of valid assignable scopes include:

Role je k dispozici pro přiřazení.Role is available for assignment Příklad:Example
Jedno předplatnéOne subscription "/subscriptions/{subscriptionId1}"
Dvě předplatnáTwo subscriptions "/subscriptions/{subscriptionId1}", "/subscriptions/{subscriptionId2}"
Skupina síťových prostředkůNetwork resource group "/subscriptions/{subscriptionId1}/resourceGroups/Network"
Jedna skupina pro správuOne management group "/providers/Microsoft.Management/managementGroups/{groupId1}"
Skupina pro správu a předplatnéManagement group and a subscription "/providers/Microsoft.Management/managementGroups/{groupId1}", /subscriptions/{subscriptionId1}",
Všechny obory (platí jenom pro předdefinované role)All scopes (applies only to built-in roles) "/"

Informace o AssignableScopes pro vlastní role najdete v tématu vlastní role pro prostředky Azure.For information about AssignableScopes for custom roles, see Custom roles for Azure resources.

Další krokyNext steps