Sdílet prostřednictvím


Principy 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 jí jednoduše ří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 příklad vlastností v definici role při zobrazení pomocí Rozhraní příkazového řádku Azure 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í.

Vlastnost 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é 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, jestli je tato role vlastní rolí. Nastavte nebo true CustomRole pro vlastní role. Nastavte na false předdefinované role nebo BuiltInRole pro předdefinované role.
type Typ objektu. Nastavte na Microsoft.Authorization/roleDefinitions.
Description
description
Popis role
Actions
actions
Pole řetězců, které určují akce řídicí roviny, které role umožňuje provést.
NotActions
notActions
Pole řetězců, které určují akce řídicí roviny, které jsou vyloučeny z povolené 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 roviny dat, které jsou vyloučeny z povolené DataActions.
AssignableScopes
assignableScopes
Pole řetězců, které určují obory, které má role k dispozici pro přiřazení.
Condition
condition
U předdefinovaných rolí příkaz podmínky 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 Byla vytvořena role data a času.
updatedOn Role data a času byla naposledy aktualizována.
createdBy Pro vlastní role objekt zabezpečení, který vytvořil roli.
updatedBy U vlastních rolí instanční objekt, který aktualizoval roli.

Formát akcí

Akce se zadají s řetězci, 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, NotActions pod které se odečítají, se odečtou od Actions. V případě role Přispěvatel odebere schopnost této role NotActions 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 akce dat

Řízení přístupu na základě role pro akce řídicí roviny je určeno ve Actions NotActions vlastnostech 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í kontejneru objektů blob
  • Odstranění skupiny prostředků a všech jejích prostředků

Přístup k rovině řízení není zděděný do roviny dat za předpokladu, že metoda ověřování kontejneru je nastavená na uživatelský účet Microsoft Entra a nikoli přístupový klíč. Toto oddělení brání rolím se zástupnými znamény 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 dat nepoužívaly řízení přístupu na základě role. 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 zadané v objektech DataActions a NotDataActions vlastnostech. 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. Tady jsou některé akce roviny dat, ve DataActions NotDataActionskteré je možné zadat:

  • Čtení seznamu objektů blob v kontejneru
  • Zápis objektu blob úložiště v kontejneru
  • Odstranění zprávy ve frontě

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

Role Čtenář dat v objektech blob služby Storage, jak je znázorněno v Azure PowerShellu:

{
  "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 objektech blob služby Storage, 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 a NotDataActions vlastností je možné přidat DataActions pouze akce roviny dat. 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í dat

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 oboru předplatného. Bob má přiřazenou roli Přispěvatel dat v objektu blob služby Storage v oboru účtu úložiště. Následující diagram ukazuje tento příklad.

Řízení přístupu na základě role bylo rozšířeno tak, aby podporovalo akce řídicí roviny i roviny dat.

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

Vlastník

    Akce
    *

Přispěvatel dat objektů blob úložiště

    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
    Akce dat
    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 (*), zdědí se jejich oprávnění, aby mohla provádět všechny akce řídicí roviny. Alice může číst, zapisovat a odstraňovat kontejnery. Alice však nemůže provádět akce 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 pro přístup k objektům blob.

Oprávnění Boba jsou omezena pouze Actions na roli DataActions Přispěvatel dat v objektech blob služby Storage. Na základě role může Bob provádět řídicí rovinu i akce roviny 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 objekty blob.

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 akce dat?

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

Nástroj Verze
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 Javu 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 řídicí roviny, které role umožňuje provést. 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 akce 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ů poskytovatele prostředků Microsoft.Network.
Microsoft.Compute/virtualMachines/* Uděluje přístup ke všem akcím virtuálních počítačů a jeho 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í roviny, které jsou odečteny nebo vyloučeny z povoleného Actions znaku se zástupným znakem (*). NotActions Oprávnění použijte, pokud je sada akcí, které chcete povolit, snadněji definována odečtením od Actions toho, které mají 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

V následující tabulce jsou uvedeny dva příklady efektivních oprávnění roviny řízení pro akci se zástupným znakem Microsoft.CostManagement :

Akce NotActions Platná 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 od akce se zástupným znakem* () odečíst konkrétní akce.

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.

Akce dat

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. Pokud má uživatel například přístup ke čtení dat objektů blob k účtu úložiště, může číst objekty blob v rámci daného úč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 Vrátí objekt blob nebo seznam objektů blob.
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write Vrátí výsledek zápisu objektu blob.
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 znaku se zástupným znakem (*). NotDataActions Oprávnění použijte, pokud je sada akcí, které chcete povolit, snadněji definována odečtením od DataActions toho, které mají 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 :

Akce dat 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 AssignableScopes je například nastavená na předplatné, znamená to, že vlastní role je k dispozici pro přiřazení v oboru předplatného pro zadané předplatné, obor skupiny prostředků pro libovolnou skupinu prostředků v předplatném nebo obor 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 pro 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) "/"

Ve vlastnosti AssignableScopes vlastní role je možné definovat pouze jednu skupinu pro správu.

I když je možné vytvořit vlastní roli s instancí prostředku pomocí AssignableScopes příkazového řádku, nedoporučuje se. 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 akce Popis
* Vytvoření a správa všech typů prostředků.
*/delete Odstraňte prostředky všech typů.
*/write Zapisujte prostředky všech typů.
Microsoft.Authorization/denyAssignments/delete Odstraňte přiřazení zamítnutí v zadaném oboru.
Microsoft.Authorization/denyAssignments/write Vytvořte přiřazení zamítnutí 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