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
NotDataActions
které 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.
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 NotActions
a 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 NotDataActions
s 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. |