Använd roller för att styra åtkomsten till resurser

Slutförd

Inbyggda roller för Azure-resurser (med PowerShell)

Azure har flera inbyggda roller som täcker de vanligaste säkerhetsscenarierna. Vi lär oss mer om hur rollerna fungerar genom att gå igenom tre roller som gäller för alla resurstyper:

  • Ägare: Har fullständig åtkomst till alla resurser, inklusive rätten att delegera åtkomst till andra.
  • Deltagare: Kan skapa och hantera alla typer av Azure-resurser, men kan inte bevilja åtkomst till andra.
  • Läsare: Kan visa befintliga Azure-resurser.

Rolldefinitioner

Varje roll är en uppsättning egenskaper som definierats i en JSON-fil (JavaScript Object Notation). Den här rolldefinitionen innehåller ett namn, ett ID och en beskrivning. Den innehåller också de behörigheter som ges (Actions), nekade behörigheter (NotActions) och rollens omfång (till exempel läsåtkomst).

För rollen Ägare innebär det samtliga åtgärder, vilket visas med en asterisk (*), inga nekade åtgärder och samtliga omfång, vilket visas med ett snedstreck (/).

Du kan hämta den här informationen med PowerShell-cmdleten Get-AzRoleDefinition Owner.

Get-AzRoleDefinition Owner

Denna kod bör ge följande utdata:

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

Prova samma för rollerna Deltagare och Läsare för att se vilka åtgärder som tillåts och nekas.

Granska de inbyggda rollerna

Nu ska vi utforska några andra inbyggda roller.

  1. Öppna Azure Portal.

  2. På Startsidan för Azure väljer du Resursgrupper på den vänstra menyn.

  3. Välj en resursgrupp. Fönstret Resursgrupp visas.

  4. Välj Åtkomstkontroll (IAM) i det vänstra menyfönstret. Fönstret Åtkomstkontroll (IAM) visas för resursgruppen.

  5. På den inre menyraden väljer du fliken Roller enligt följande för att se listan över tillgängliga roller.

    Screenshot showing the roles in the Azure portal.

Vad är en rolldefinition?

En rolldefinition är en samling behörigheter. En rolldefinition visar de åtgärder som rollen kan utföra, till exempel läsa, skriva och ta bort. Den kan också ange vilka åtgärder som inte kan utföras eller åtgärder relaterade till underliggande data.

Som tidigare beskrivits har en rolldefinition följande struktur:

Namn beskrivning
Id Unik identifierare för rollen, tilldelad av Azure
IsCustom Sant om en anpassad roll, False om en inbyggd roll
Description En läsbar beskrivning av rollen
Actions [] Tillåtna behörigheter; * anger alla
NotActions [] Nekad behörighet
DataActions [] Vissa tillåtna behörigheter som gäller data, som Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read
NotDataActions [] Vissa nekade behörigheter som gäller data.
AssignableScopes [] Omfattningar där den här rollen gäller. / anger global, men kan nå in i ett hierarkiskt träd

Den här strukturen representeras i JSON-format när den används i rollbaserad åtkomstkontroll (RBAC) eller i det underliggande API:et. Här är till exempel definitionen av rollen Deltagare i JSON-format.

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

Actions och NotActions

Du kan skräddarsy egenskaperna Actions och NotActions för att bevilja och neka precis de behörigheter du behöver ange. Egenskaperna har alltid följande format: {Company}.{ProviderName}/{resourceType}/{action}.

Här är till exempel åtgärderna för de tre roller som vi tittade på tidigare:

Inbyggd roll Åtgärder NotActions
Ägare (tillåt alla åtgärder) * -
Deltagare (tillåt alla åtgärder utom att skriva eller ta bort rolltilldelningar) * Microsoft.Authorization/*/Delete, Microsoft.Authorization/*/Write, Microsoft.Authorization/elevateAccess/Action
Läsare (tillåt alla läsåtgärder) */read -

Jokertecknet (*) under Actions anger att det huvudnamn som tilldelats den här rollen kan utföra alla åtgärder, eller med andra ord kan den här rollen hantera allt, inklusive åtgärder som definierats i framtiden, när Azure lägger till nya resurstyper. Med rollen Läsare tillåts endast åtgärden read.

Åtgärderna under NotActions dras bort från Actions. Med rollen Deltagare NotActions tar du bort rollens möjlighet att hantera åtkomst till resurser och tar även bort tilldelning av åtkomst till resurser.

DataActions och NotDataActions

Dataåtgärder anges i egenskaperna DataActions och NotDataActions. Du kan ange dataåtgärder separat från hanteringsåtgärderna. På så sätt kan du förhindra att rolltilldelningar med jokertecken (*) plötsligt får åtkomst till data. Här följer några dataåtgärder som du kan ange i DataActions och NotDataActions:

  • Läsa en lista med blobar i en container
  • Skriva till en lagringsblob i en container
  • Ta bort ett meddelande i en kö

Du kan bara lägga till dataåtgärder i DataActions egenskaperna och NotDataActions . Resursproviders anger vilka åtgärder som är dataåtgärder genom att sätta egenskapen isDataAction till true. Roller som inte har dataåtgärder kan utelämna dessa egenskaper från rolldefinitionen.

De här åtgärderna fungerar precis som deras relaterade hanteringsåtgärder. Du kan ange de åtgärder som du vill tillåta (eller för alla) och * sedan ange en lista över specifika åtgärder som du vill ta bort i NotDataActions samlingen. Här är några exempel. Du hittar den fullständiga listan över åtgärder och dataåtgärder i dokumentationen för resursprovidern:

Dataåtgärd beskrivning
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/delete Ta bort blobdata
Microsoft.Compute/virtualMachines/login/action Logga in på en virtuell dator som en vanlig användare
Microsoft.EventHub/namespaces/messages/send/action Skicka meddelanden via en händelsehubb
Microsoft.Storage/storageAccounts/fileServices/fileshares/files/read Returnera en fil/mapp eller lista med filer/mappar
Microsoft.Storage/storageAccounts/queueServices/queues/messages/read Läsa ett meddelande från en kö

Omfång som kan tilldelas

Det räcker inte att definiera egenskaperna Actions och NotActions för att implementera en roll fullständigt. Du måste också ange ett omfång för rollen.

Egenskapen AssignableScopes för rollen anger de omfång (prenumerationer, resursgrupper och resurser) som rollen kan tilldelas för. Du kan göra den anpassade rollen tillgänglig för tilldelning i precis i de prenumerationer eller resursgrupper som behöver rollen. Det här gör det enklare att hantera övriga prenumerationer och resursgrupper.

Här följer några exempel:

Om du vill Använder du omfånget
Begränsa till en prenumeration "/subscriptions/{sub-id}"
Begränsa till en specifik resursgrupp för en specifik prenumeration "/subscriptions/{sub-id}/resourceGroups/{rg-name}"
Begränsa till en specifik resurs "/subscriptions/{sub-id}/resourceGroups/{rg-name}/{resource-name}"
Gör en roll tillgänglig för tilldelning i två prenumerationer "/subscriptions/{sub-id}", "/subscriptions/{sub-id}"

Skapa roller

Microsoft Entra ID levereras med inbyggda roller som sannolikt täcker 99 % av det du någonsin vill göra. Det är bättre att använda en inbyggd roll om möjligt. Du kan dock skapa anpassade roller om du tycker det behövs.

Kommentar

För att skapa anpassade roller krävs Microsoft Entra ID P1 eller P2. Du kan inte skapa anpassade roller på den kostnadsfria nivån.

Du kan skapa en ny roll genom flera mekanismer:

  • Azure-portalen: Du kan använda Azure-portalen för att skapa en anpassad roll genom att välja Microsoft Entra ID-roller>och administratörer>Ny anpassad roll.

  • Azure PowerShell: Du kan använda cmdleten New-AzRoleDefinition för att definiera en ny roll.

  • Azure Graph API: Du kan använda ett REST-anrop till Graph API för att programmatiskt skapa en ny roll.

I den här modulens sammanfattningsavsnitt finns en länk till dokumentationen för alla tre metoderna.

Testa dina kunskaper

1.

Vilken information anger Action i en rolldefinition?

2.

Vilket av följande anger omfånget för en roll till resursgruppen myResourceGroup?

3.

Hur används NotActions i en rolldefinition?