Pochopení definic rolí Azure

Pokud se pokoušíte pochopit, jak role Azure funguje nebo pokud vytváříte vlastní roli Azure, je užitečné pochopit, jak jsou role definované. Tento článek popisuje podrobnosti o definicích rolí a uvádí několik příkladů.

Definice role

Definice role je kolekce oprávnění. Někdy se tomu říká role. Definice role obsahuje seznam akcí, které je možné provést, jako je čtení, zápis a odstranění. Může také zobrazit seznam akcí, které jsou vyloučené z povolených akcí nebo akcí souvisejících s podkladovými daty.

Následující příklad ukazuje příklad vlastností v definici role při zobrazení pomocí Azure PowerShellu:

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

Následující příklad ukazuje vlastnosti v definici role při zobrazení pomocí Azure CLI nebo rozhraní REST API:

roleName
name
id
roleType
type
description
actions []
notActions []
dataActions []
notDataActions []
assignableScopes []
condition
conditionVersion
createdOn
updatedOn
createdBy
updatedBy

Následující tabulka popisuje, co vlastnosti role znamenají.

Property Popis
Name
roleName
Zobrazovaný název role.
Id
name
Jedinečné ID role Předdefinované role mají stejné ID role napříč cloudy.
id Plně kvalifikované a jedinečné ID role. I když je role přejmenována, ID role se nezmění. Osvědčeným postupem je použít ID role ve skriptech.
IsCustom
roleType
Určuje, zda je tato role uživatelsky definovaná. Nastavte na true nebo CustomRole pro vlastní role. Nastavte na false nebo BuiltInRole pro předdefinované role.
type Typ objektu. Nastavte na Microsoft.Authorization/roleDefinitions.
Description
description
Popis role
Actions
actions
Řetězcové pole, které specifikuje akce řídicí roviny, jež role umožňuje provádět.
NotActions
notActions
Pole řetězců, které určují akce řídicí roviny vyloučené ze souboru povolených akcí Actions.
DataActions
dataActions
Pole řetězců, které určují akce roviny dat, které role umožňuje provádět s vašimi daty v rámci tohoto objektu.
NotDataActions
notDataActions
Pole řetězců, které určují akce datové roviny, jež jsou vyloučeny z povolených DataActions.
AssignableScopes
assignableScopes
Pole řetězců, které určují rozsahy, pro které je role k dispozici k přiřazení.
Condition
condition
U těchto předdefinovaných rolí je podmínkový příkaz založen na jedné nebo více akcích v definici role.
ConditionVersion
conditionVersion
Číslo verze podmínky. Výchozí hodnota je 2.0 a je jedinou podporovanou verzí.
createdOn Datum a čas, kdy byla role vytvořena.
updatedOn Datum a čas role byly naposledy aktualizovány.
createdBy Pro vlastní role je to uživatel, který vytvořil roli.
updatedBy Pro custom role, objekt zabezpečení, který aktualizoval roli.

Formát akcí

Akce jsou specifikovány pomocí řetězců, které mají následující formát:

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

Část {action} řetězce akce určuje typ akcí, které můžete provést u typu prostředku. Zobrazí se například následující podřetěžce v {action}:

Podřetěžce akcí Popis
* Zástupný znak uděluje přístup ke všem akcím, které odpovídají řetězci.
read Povolí akce čtení (GET).
write Povolí akce zápisu (PUT nebo PATCH).
action Umožňuje vlastní akce, jako je restartování virtuálních počítačů (POST).
delete Povolí akce odstranění (DELETE).

Příklad definice role

Tady je definice role Přispěvatel , jak je znázorněno v Azure PowerShellu a Azure CLI. Akce se zástupnými znamény*Actions označují, že objekt zabezpečení přiřazený k této roli může provádět všechny akce, jinak řečeno, může spravovat všechno. Zahrnuje to i akce definované v budoucnosti v souvislosti s tím, jak Azure přidává nové typy prostředků. Akce pod NotActions se odečítají od Actions. V případě role PřispěvatelNotActions odebere této roli schopnost spravovat přístup k prostředkům a také spravovat přiřazení Azure Blueprints.

Role přispěvatele zobrazená v Azure PowerShellu:

{
  "Name": "Contributor",
  "Id": "b24988ac-6180-42a0-ab88-20f7382dd24c",
  "IsCustom": false,
  "Description": "Grants full access to manage all resources, but does not allow you to assign roles in Azure RBAC, manage assignments in Azure Blueprints, or share image galleries.",
  "Actions": [
    "*"
  ],
  "NotActions": [
    "Microsoft.Authorization/*/Delete",
    "Microsoft.Authorization/*/Write",
    "Microsoft.Authorization/elevateAccess/Action",
    "Microsoft.Blueprint/blueprintAssignments/write",
    "Microsoft.Blueprint/blueprintAssignments/delete",
    "Microsoft.Compute/galleries/share/action",
    "Microsoft.Purview/consents/write",
    "Microsoft.Purview/consents/delete"
  ],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": [
    "/"
  ],
  "Condition": null,
  "ConditionVersion": null
}

Role přispěvatele zobrazená v Azure CLI:

[
  {
    "assignableScopes": [
      "/"
    ],
    "createdBy": null,
    "createdOn": "2015-02-02T21:55:09.880642+00:00",
    "description": "Grants full access to manage all resources, but does not allow you to assign roles in Azure RBAC, manage assignments in Azure Blueprints, or share image galleries.",
    "id": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c",
    "name": "b24988ac-6180-42a0-ab88-20f7382dd24c",
    "permissions": [
      {
        "actions": [
          "*"
        ],
        "condition": null,
        "conditionVersion": null,
        "dataActions": [],
        "notActions": [
          "Microsoft.Authorization/*/Delete",
          "Microsoft.Authorization/*/Write",
          "Microsoft.Authorization/elevateAccess/Action",
          "Microsoft.Blueprint/blueprintAssignments/write",
          "Microsoft.Blueprint/blueprintAssignments/delete",
          "Microsoft.Compute/galleries/share/action",
          "Microsoft.Purview/consents/write",
          "Microsoft.Purview/consents/delete"
        ],
        "notDataActions": []
      }
    ],
    "roleName": "Contributor",
    "roleType": "BuiltInRole",
    "type": "Microsoft.Authorization/roleDefinitions",
    "updatedBy": null,
    "updatedOn": "2023-07-10T15:10:53.947865+00:00"
  }
]

Řízení a práce s daty

Řízení přístupu na základě role pro akce řídicí roviny je specifikováno ve vlastnostech Actions a NotActions definice role. Tady je několik příkladů akcí řídicí roviny v Azure:

  • Správa přístupu k účtu úložiště
  • Vytvoření, aktualizace nebo odstranění blob kontejneru
  • Odstraňte skupinu prostředků a všechny její prostředky

Přístup k řídicímu panelu není zděděn do datového panelu za předpokladu, že metoda ověřování kontejneru je nastavena na uživatelský účet Microsoft Entra a nikoli na přístupový klíč. Toto oddělení brání rolím se zástupnými znaky (*) v neomezeném přístupu k vašim datům. Pokud má například uživatel roli Čtenář v předplatném, může zobrazit účet úložiště, ale ve výchozím nastavení nemůže zobrazit podkladová data.

Dříve se pro akce s daty nepoužívalo řízení přístupu založené na rolích. Autorizace pro akce dat se u různých poskytovatelů prostředků liší. Stejný model autorizace řízení přístupu na základě role používaný pro akce řídicí roviny byl rozšířen na akce roviny dat.

Pro podporu akcí roviny dat byly do definice role přidány nové vlastnosti dat. Akce roviny dat jsou specifikovány ve vlastnostech DataActions a NotDataActions. Přidáním těchto vlastností dat se zachová oddělení mezi řídicí rovinou a rovinou dat. 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. Zde jsou některé akce roviny dat, které lze specifikovat ve DataActions a NotDataActions:

  • Přečíst seznam blobů v kontejneru
  • Zapsat blob úložiště do kontejneru
  • Odstraňte zprávu ve frontě

Tady je definice role Čtenář dat objektu blob služby Storage, která zahrnuje akce v obou objektech a Actions vlastnostechDataActions. Tato role umožňuje číst kontejner blobů a také podkladová data blobů.

Role "Storage Blob Data Reader" v Azure PowerShell, jak je znázorněno:

{
  "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",
    "Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey/action"
  ],
  "NotActions": [],
  "DataActions": [
    "Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read"
  ],
  "NotDataActions": [],
  "AssignableScopes": [
    "/"
  ],
  "Condition": null,
  "ConditionVersion": null
}

Role Čtenář dat v blobech služby Úložiště, jak je znázorněno v Azure CLI:

[
  {
    "assignableScopes": [
      "/"
    ],
    "createdBy": null,
    "createdOn": "2017-12-21T00:01:24.797231+00:00",
    "description": "Allows for read access to Azure Storage blob containers and data",
    "id": "/subscriptions/{subscriptionId}/providers/Microsoft.Authorization/roleDefinitions/2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
    "name": "2a2b9908-6ea1-4ae2-8e65-a410df84e7d1",
    "permissions": [
      {
        "actions": [
          "Microsoft.Storage/storageAccounts/blobServices/containers/read",
          "Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey/action"
        ],
        "condition": null,
        "conditionVersion": null,
        "dataActions": [
          "Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read"
        ],
        "notActions": [],
        "notDataActions": []
      }
    ],
    "roleName": "Storage Blob Data Reader",
    "roleType": "BuiltInRole",
    "type": "Microsoft.Authorization/roleDefinitions",
    "updatedBy": null,
    "updatedOn": "2021-11-11T20:13:55.297507+00:00"
  }
]

Do vlastností DataActions a NotDataActions je možné přidat pouze akce datové roviny. Poskytovatelé prostředků identifikují akce, které jsou akcemi dat, nastavením isDataAction vlastnosti na true. Pokud chcete zobrazit seznam akcí, ve kterých isDataAction je true, podívejte se na operace poskytovatele prostředků. Role, které nemají akce s daty, nemusí mít DataActions a NotDataActions vlastnosti v rámci definice role.

Autorizaci pro všechna volání rozhraní API řídicí roviny zpracovává Azure Resource Manager. Autorizaci pro volání rozhraní API roviny dat zpracovává poskytovatel prostředků nebo Azure Resource Manager.

Příklad akcí s daty

Abychom lépe pochopili, jak fungují akce řídicí roviny a roviny dat, podívejme se na konkrétní příklad. Alice má přiřazenou roli Vlastník v rámci předplatného. Bob má přiřazenou roli Přispěvatel dat v objektu blob služby Storage v rámci účtu úložiště. Následující diagram ukazuje tento příklad.

Diagram řízení přístupu na základě role, který byl rozšířen tak, aby podporoval akce řídicí roviny i roviny dat

Role Vlastník pro Alici a role Přispěvatel dat objektů blob úložiště pro Boba mají následující akce:

Vlastník

    Akce
    *

Přispěvatel dat služby Storage Blob

    Akce
    Microsoft.Storage/storageAccounts/blobServices/containers/delete
    Microsoft.Storage/storageAccounts/blobServices/containers/read
    Microsoft.Storage/storageAccounts/blobServices/containers/write
    Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey/action
    DataActions
    Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete
    Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
    Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write
    Microsoft.Storage/storageAccounts/blobServices/containers/blobs/move/action
    Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action

Vzhledem k tomu, že Alice má v oboru předplatného akci se zástupným znakem (*), jejich oprávnění se dědí dolů, což jim umožňuje provádět všechny akce na řídicí rovině. Alice může číst, zapisovat a odstraňovat kontejnery. Alice však nemůže provádět akce v rámci roviny dat bez provedení dalších kroků. Alice například ve výchozím nastavení nemůže číst objekty blob uvnitř kontejneru. Ke čtení objektů blob by Alice musela načíst přístupové klíče k úložišti a použít je ke zpřístupnění objektů blob.

Oprávnění Boba jsou omezena pouze na Actions a DataActions, které jsou specifikovány v roli Přispěvatel dat v objektech blob služby Storage. Na základě role může Bob provádět akce jak v řídicí rovině, tak v rovině dat. 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 blobové objekty.

Další informace o zabezpečení řídicí roviny a roviny dat pro úložiště najdete v průvodci zabezpečením služby Azure Storage.

Jaké nástroje podporují použití rolí Azure pro datové akce?

Pokud chcete zobrazit a pracovat s akcemi dat, musíte mít správné verze nástrojů nebo sad SDK:

Nástroj Version
Azure PowerShell 1.1.0 nebo novější
Azure CLI 2.0.30 nebo novější
Azure pro .NET 2.8.0-preview nebo novější
Azure SDK pro Go 15.0.0 nebo novější
Azure pro Java 1.9.0 nebo novější
Azure pro Python 0.40.0 nebo novější
Azure SDK pro Ruby 0.17.1 nebo novější

Pokud chcete zobrazit a používat akce dat v rozhraní REST API, musíte parametr api-version nastavit na následující verzi nebo novější:

  • 2018-07-01

Akce

Oprávnění Actions určuje akce, které je role oprávněna provést v rámci řídicí roviny. Jedná se o kolekci řetězců, které identifikují zabezpečitelné akce poskytovatelů prostředků Azure. Tady je několik příkladů akcí řídicí roviny, které lze použít v Actions.

Řetězec akcí Popis
*/read Uděluje přístup k akcím čtení pro všechny typy prostředků všech poskytovatelů prostředků Azure.
Microsoft.Compute/* Uděluje přístup ke všem akcím pro všechny typy prostředků poskytovatele prostředků Microsoft.Compute.
Microsoft.Network/*/read Uděluje přístup k akcím čtení pro všechny typy prostředků v poskytovateli služby Microsoft.Network.
Microsoft.Compute/virtualMachines/* Uděluje přístup ke všem akcím virtuálních počítačů a jejich podřízeným typům prostředků.
microsoft.web/sites/restart/Action Udělí přístup k restartování webové aplikace.

NotActions

Oprávnění NotActions určuje akce řídicí plochy, které jsou odečteny nebo vyloučeny z povolení obsahujícího zástupný znak (Actions). Použijte oprávnění NotActions, pokud je sada akcí, které chcete povolit, snadněji definována odečtením od Actions obsahující zástupný znak (*). Přístup udělený rolí (efektivní oprávnění) se vypočítá odečtením NotActions akcí od Actions akcí.

Actions - NotActions = Effective control plane permissions

Následující tabulka uvádí dva příklady efektivních oprávnění řídicí roviny pro akci se zástupným znakem Microsoft.CostManagement:

Akce NotActions Účinná oprávnění řídicí roviny
Microsoft.CostManagement/exports/* žádné Microsoft.CostManagement/exports/action
Microsoft.CostManagement/exports/read
Microsoft.CostManagement/exports/write
Microsoft.CostManagement/exports/delete
Microsoft.CostManagement/exports/run/action
Microsoft.CostManagement/exports/* Microsoft.CostManagement/exports/delete Microsoft.CostManagement/exports/action
Microsoft.CostManagement/exports/read
Microsoft.CostManagement/exports/write
Microsoft.CostManagement/exports/run/action

Poznámka:

Pokud je uživateli přiřazena role, která vyloučí akci NotActionsa má přiřazenou druhou roli, která uděluje přístup ke stejné akci, může uživatel tuto akci provést. NotActions není pravidlo zamítnutí – jednoduše představuje pohodlný způsob, jak vytvořit sadu povolených akcí, když je potřeba vyloučit konkrétní akce.

Rozdíly mezi přiřazeními NotActions a zamítnutím

NotActions přiřazení a zamítnutí nejsou stejná a slouží různým účelům. NotActions představují pohodlný způsob, jak odečíst konkrétní akce od akce se zástupným znakem (*).

Odepření přiřazení uživatelům brání v provádění konkrétních akcí, i když jim přiřazení role udělí přístup. Další informace najdete v tématu Vysvětlení přiřazení zamítnutí Azure.

DataActions

Oprávnění DataActions určuje akce roviny dat, které role umožňuje provádět s vašimi daty v rámci daného objektu. Například pokud má uživatel oprávnění ke čtení dat objektů BLOB v účtu úložiště, může číst objekty BLOB v tomto účtu úložiště. Tady je několik příkladů akcí dat, které lze použít v DataActions.

Řetězec akce dat Popis
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read Funkce vrátí blob nebo seznam blobů.
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write Vrátí výsledek zápisu blobu.
Microsoft.Storage/storageAccounts/queueServices/queues/messages/read Vrátí zprávu.
Microsoft.Storage/storageAccounts/queueServices/queues/messages/* Vrátí zprávu nebo výsledek zápisu nebo odstranění zprávy.

NotDataActions

Oprávnění NotDataActions určuje akce roviny dat, které jsou odečteny nebo vyloučeny z povoleného DataActions, které mají zástupný znak (*). Použijte oprávnění NotDataActions, pokud je sada akcí, které chcete povolit, snadněji definována odečtením od DataActions obsahující zástupný znak (*). Přístup udělený rolí (efektivní oprávnění) se vypočítá odečtením NotDataActions akcí od DataActions akcí. Každý poskytovatel prostředků poskytuje odpovídající sadu rozhraní API pro plnění akcí dat.

DataActions - NotDataActions = Effective data plane permissions

Následující tabulka uvádí dva příklady platných oprávnění roviny kalendářních dat pro akci se zástupným znakem Microsoft.Storage :

DataActions NotDataActions Platná oprávnění roviny dat
Microsoft.Storage/storageAccounts/queueServices/queues/messages/* žádné Microsoft.Storage/storageAccounts/queueServices/queues/messages/read
Microsoft.Storage/storageAccounts/queueServices/queues/messages/write
Microsoft.Storage/storageAccounts/queueServices/queues/messages/delete
Microsoft.Storage/storageAccounts/queueServices/queues/messages/add/action
Microsoft.Storage/storageAccounts/queueServices/queues/messages/process/action
Microsoft.Storage/storageAccounts/queueServices/queues/messages/* Microsoft.Storage/storageAccounts/queueServices/queues/messages/delete
Microsoft.Storage/storageAccounts/queueServices/queues/messages/read
Microsoft.Storage/storageAccounts/queueServices/queues/messages/write
Microsoft.Storage/storageAccounts/queueServices/queues/messages/add/action
Microsoft.Storage/storageAccounts/queueServices/queues/messages/process/action

Poznámka:

Pokud je uživateli přiřazena role, která vyloučí akci NotDataActionss daty a má přiřazenou druhou roli, která uděluje přístup ke stejné akci dat, může uživatel tuto akci dat provést. NotDataActions není pravidlo zamítnutí – jednoduše je to pohodlný způsob, jak vytvořit sadu povolených akcí dat, když je potřeba vyloučit konkrétní akce dat.

AssignableScopes

Vlastnost AssignableScopes určuje obory (kořenová, skupina pro správu, předplatná nebo skupiny prostředků), ve kterých je možné přiřadit definici role. Vlastní roli můžete zpřístupnit pro přiřazení pouze ve skupině pro správu, předplatných nebo skupinách prostředků, které ji vyžadují. Musíte použít aspoň jednu skupinu pro správu, předplatné nebo skupinu prostředků.

Pokud je například AssignableScopes nastaveno na předplatné, znamená to, že vlastní role je k dispozici pro přiřazení v rámci oboru předplatného pro zadané předplatné, v rámci oboru skupiny prostředků pro libovolnou skupinu prostředků v předplatném nebo v rámci oboru prostředků pro libovolný prostředek v předplatném.

Předdefinované role jsou AssignableScopes nastavené na kořenový obor ("/"). Kořenový obor označuje, že role je k dispozici pro přiřazení ve všech oborech.

Mezi platné přiřaditelné obory patří:

Role je k dispozici k přiřazení. Příklad
Jedno předplatné "/subscriptions/{subscriptionId1}"
Dvě předplatná "/subscriptions/{subscriptionId1}", "/subscriptions/{subscriptionId2}"
Skupina síťových prostředků "/subscriptions/{subscriptionId1}/resourceGroups/Network"
Jedna skupina pro správu "/providers/Microsoft.Management/managementGroups/{groupId1}"
Skupina pro správu a předplatné "/providers/Microsoft.Management/managementGroups/{groupId1}", "/subscriptions/{subscriptionId1}",
Všechny obory (platí jenom pro předdefinované role) "/"

V rámci AssignableScopes vlastní role můžete definovat pouze jednu skupinu pro správu.

Ačkoliv je možné pomocí příkazového řádku vytvořit vlastní roli s instancí prostředku v AssignableScopes, nedoporučuje se to. Každý tenant podporuje maximálně 5 000 vlastních rolí. Použití této strategie by mohlo potenciálně vyčerpat dostupné vlastní role. Úroveň přístupu je nakonec určena vlastním přiřazením role (obor + oprávnění role + objekt zabezpečení) a nikoli AssignableScopes uvedenou ve vlastní roli. Vytvořte vlastní role se AssignableScopes skupinou pro správu, předplatným nebo skupinou prostředků, ale přiřaďte vlastní role s úzkým oborem, jako je prostředek nebo skupina prostředků.

Další informace o AssignableScopes vlastních rolích najdete v tématu Vlastní role Azure.

Definice role privilegovaného správce

Privilegované role správce jsou role, které udělují privilegovaný přístup správce, jako je například schopnost spravovat prostředky Azure nebo přiřazovat role jiným uživatelům. Pokud předdefinovaná nebo vlastní role zahrnuje některou z následujících akcí, považuje se za privilegovanou. Další informace najdete v tématu Seznam nebo správa přiřazení rolí privilegovaného správce.

Řetězec akcí Popis
* Vytvoření a správa všech typů prostředků.
*/delete Odstraňte prostředky všech typů.
*/write Pište zdroje všech typů.
Microsoft.Authorization/denyAssignments/delete Odstraňte pravidlo odepření v zadaném rozsahu.
Microsoft.Authorization/denyAssignments/write Vytvořte zamítnutí přiřazení v zadaném oboru.
Microsoft.Authorization/roleAssignments/delete Odstraňte přiřazení role v zadaném oboru.
Microsoft.Authorization/roleAssignments/write Vytvořte přiřazení role v zadaném oboru.
Microsoft.Authorization/roleDefinitions/delete Odstraňte zadanou definici vlastní role.
Microsoft.Authorization/roleDefinitions/write Vytvořte nebo aktualizujte definici vlastní role se zadanými oprávněními a přiřaditelnými obory.

Další kroky