Řízení přístupu k prostředkům pomocí rolí

Dokončeno

Předdefinované role pro prostředky Azure (používá se PowerShell)

Azure poskytuje několik předdefinovaných rolí pro pokrytí nejběžnějších scénářů zabezpečení. Abyste pochopili, jak tyto role fungují, podíváme se na tři role, které se vztahují na všechny typy prostředků:

  • Vlastník: Má úplný přístup ke všem prostředkům, včetně práva delegovat přístup k ostatním.
  • Přispěvatel: Může vytvářet a spravovat všechny typy prostředků Azure, ale nemůže udělit přístup ostatním.
  • Čtenář: Může zobrazit existující prostředky Azure.

Definice rolí

Každá role je sada vlastností definovaných v souboru JSON (JavaScript Object Notation). Tato definice role zahrnuje vlastnosti Name (Název), ID a Description (Popis). Zahrnuje také přípustná oprávnění (Actions), odepřená oprávnění (NotActions) a rozsah role (například oprávnění ke čtení).

U role Vlastník (Owner) to znamená všechny akce – vyznačeno hvězdičkou (*), žádné odepřené akce a všechny rozsahy – vyznačeno lomítkem (/).

Tyto informace můžete získat pomocí rutiny PowerShellu Get-AzRoleDefinition Owner.

Get-AzRoleDefinition Owner

Daný kód by měl vytvořit následující výstup:

Name             : Owner
Id               : 8e3af657-a8ff-443c-a75c-2fe8c4bcb635
IsCustom         : False
Description      : Lets you manage everything, including access to resources.
Actions          : {*}
NotActions       : {}
DataActions      : {}
NotDataActions   : {}
AssignableScopes : {/}

Zkuste stejný příkaz pro role Contributor a Reader a podívejte se na povolené a odepřené akce.

Předdefinované role

Podrobné zkoumání rolí RBAC a rolí uživatelů v Microsoft Entra ID najdete v tématu Prozkoumání role RBAC a uživatelů v Microsoft Entra ID.

Co je definice role?

Definice role je kolekce oprávnění. Definice role obsahuje seznam operací, které může role provádět, například čtení, zápis a odstranění. Může také obsahovat seznam operací, které není možné provádět, nebo operací souvisejících s podkladovými daty.

Jak jsme už popsali, definice role má následující strukturu:

Název Popis
Id Jedinečný identifikátor role přiřazené Azure
IsCustom True if a custom role, False if a built-in role
Description Čitelný popis role
Actions [] Povolená oprávnění; * označuje vše
NotActions [] Odepřená oprávnění
DataActions [] Konkrétní povolená oprávnění, která se aplikují na data, například Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
NotDataActions [] Konkrétní odepřená oprávnění, která se aplikují na data
AssignableScopes [] Obory, ve kterých se tato role vztahuje; / označuje globální, ale může se spojit s hierarchickým stromem.

Tato struktura je při použití v řízení přístupu na základě role (RBAC) nebo ze základního rozhraní API reprezentována jako JSON. Tady je příklad definice role Contributor ve formátu JSON.

{
  "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": [
    "/"
  ]
}

Vlastnosti Actions a NotActions

Vlastnosti Actions a NotActions můžete přizpůsobit tak, abyste oprávnění udělili nebo odepřeli přesně, jak potřebujete. Uvedené vlastnosti mají vždy formát: {Company}.{ProviderName}/{resourceType}/{action}.

Tady jsou například akce pro tři role, na které jsme se podívali dříve:

Předdefinovaná role Akce NotActions
Vlastník (Owner) – povolení všech akcí * -
Přispěvatel (Contributor) – povolení všech akcí kromě zápisu a odstranění přiřazení rolí * Microsoft.Authorization/*/Delete, Microsoft.Authorization/*/Write, Microsoft.Authorization/elevateAccess/Action
Čtenář (Reader) – povolení všech akcí čtení */read -

Operace Actions se zástupnými znaménkami* označuje, že objekt zabezpečení přiřazený k této roli může provádět všechny akce. Jinými slovy, tato role může spravovat vše, včetně akcí definovaných v budoucnu, protože se do Azure přidají nové typy prostředků. V případě role Reader (Čtenář) je povolena jen akce read (čtení).

Operace ve sloupci NotActions se odčítají od operací ve sloupci Actions. S rolí Přispěvatel odebere schopnost této role NotActions spravovat přístup k prostředkům a také odebere přiřazování přístupu k prostředkům.

Vlastnosti DataActions a NotDataActions

Operace s daty se definují pomocí vlastností DataActions a NotDataActions. Operace s daty můžete zadat odděleně od operací správy. 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é operace s daty, ve DataActions které můžete zadat:NotDataActions

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

Operace s daty můžete přidávat pouze do DataActions vlastností a NotDataActions vlastností. Poskytovatelé prostředků označují operace s daty nastavením vlastnosti isDataAction na hodnotu true. Role, které nemají datové operace, mohou tyto vlastnosti vynechat z definice role.

Tyto akce fungují naprosto stejně jako jejich protějšky u operací správy. Můžete zadat akce, které chcete povolit (nebo * pro všechny), a pak zadat seznam konkrétních akcí, které se mají v kolekci NotDataActions odebrat. Tady je několik příkladů; Úplný seznam akcí a akcí dat najdete v dokumentaci poskytovatele prostředků:

Datová operace Popis
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete Odstranění dat objektů blob
Microsoft.Compute/virtualMachines/login/action Přihlášení k virtuálnímu počítači jako běžný uživatel
Microsoft.EventHub/namespaces/messages/send/action Poslání zpráv v centru událostí
Microsoft.Storage/storageAccounts/fileServices/fileshares/files/read Vrácení souboru/složky nebo seznamu souborů/složek
Microsoft.Storage/storageAccounts/queueServices/queues/messages/read Načtení zprávy z fronty

Přiřaditelné rozsahy

K plné implementaci role nestačí definovat vlastnosti Actions a NotActions. Musíte také správně určit rozsah role.

Vlastnost role AssignableScopes určuje rozsahy (předplatná, skupiny prostředků nebo prostředky), ve kterých je role k dispozici pro přiřazení. Vlastní roli můžete nastavit tak, aby byla k dispozici pro přiřazení jenom v předplatných nebo ve skupinách prostředků, které ji potřebují. Zbavíte tak uživatelské prostředí nepotřebných předplatných a skupin prostředků.

Několik příkladů:

Záměr Použitý rozsah
Omezení na předplatné "/subscriptions/{sub-id}"
Omezení na konkrétní skupinu prostředků v konkrétním předplatném "/subscriptions/{sub-id}/resourceGroups/{rg-name}"
Omezení na konkrétní prostředek "/subscriptions/{sub-id}/resourceGroups/{rg-name}/{resource-name}"
Zpřístupnění role pro přiřazení ve dvou předplatných "/subscriptions/{sub-id}", "/subscriptions/{sub-id}"

Vytvoření rolí

Microsoft Entra ID se dodává s předdefinovanými rolemi, které pravděpodobně pokrývají 99 % toho, co budete někdy chtít udělat. Pokud je to možné, je vhodnější použít předdefinované role. Můžete však v případě potřeby vytvořit vlastní role.

Poznámka:

Vytvoření vlastní role vyžaduje Microsoft Entra ID P1 nebo P2; Nemůžete vytvořit vlastní role na úrovni Free.

Novou roli můžete vytvořit několika mechanismy:

  • Centrum pro správu Microsoft Entra: Pomocí Centra pro správu Microsoft Entra můžete vytvořit vlastní roli výběrem rolí a správců v nabídce Vlevo a následným výběrem možnosti Nová vlastní role.

  • Azure Portal: Pomocí webu Azure Portal můžete vytvořit vlastní roli výběrem rolí ID Microsoft Entra>a správců>Nová vlastní role.

  • Azure PowerShell: Pomocí rutiny New-AzRoleDefinition můžete definovat novou roli.

  • Azure Graph API: Pomocí volání REST do rozhraní Graph API můžete programově vytvořit novou roli.

Část Souhrn tohoto modulu obsahuje odkaz na dokumentaci pro tyto přístupy.

Kontrola znalostí

1.

Jaké informace poskytuje vlastnost Action v definici role?

2.

Která z následujících možností nastaví rozsah role na skupinu prostředků myResourceGroup?

3.

Jak se NotActions použijí v definici role?