Använd roller för att styra åtkomsten till resurser
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.
Öppna Azure Portal.
På Startsidan för Azure väljer du Resursgrupper på den vänstra menyn.
Välj en resursgrupp. Fönstret Resursgrupp visas.
Välj Åtkomstkontroll (IAM) i det vänstra menyfönstret. Fönstret Åtkomstkontroll (IAM) visas för resursgruppen.
På den inre menyraden väljer du fliken Roller enligt följande för att se listan över tillgängliga roller.
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.