Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Om du försöker förstå hur en Azure-roll fungerar eller om du skapar en egen anpassad Azure-roll är det bra att förstå hur roller definieras. Den här artikeln beskriver information om rolldefinitioner och innehåller några exempel.
Rolldefinition
En rolldefinition är en samling behörigheter. Det kallas ibland bara för en roll. En rolldefinition visar de åtgärder som kan utföras, till exempel läsning, skrivning och borttagning. Den kan också visa en lista över de åtgärder som undantas från tillåtna åtgärder eller åtgärder som rör underliggande data.
Följande visar ett exempel på egenskaperna i en rolldefinition när de visas med Azure PowerShell:
Name
Id
IsCustom
Description
Actions []
NotActions []
DataActions []
NotDataActions []
AssignableScopes []
Condition
ConditionVersion
Följande visar ett exempel på egenskaperna i en rolldefinition när de visas med hjälp av Azure CLI eller REST API:
roleName
name
id
roleType
type
description
actions []
notActions []
dataActions []
notDataActions []
assignableScopes []
condition
conditionVersion
createdOn
updatedOn
createdBy
updatedBy
I följande tabell beskrivs vad rollegenskaperna betyder.
| Property | beskrivning |
|---|---|
NameroleName |
Visningsnamn för rollen. |
Idname |
Unikt ID för rollen. Inbyggda roller har samma roll-ID i olika moln. |
id |
Fullständigt specificerat unikt ID för rollen. Även om rollen har bytt namn ändras inte roll-ID:t. Det är en bra idé att använda roll-ID:t i dina skript. |
IsCustomroleType |
Anger om den här rollen är en anpassad roll. Ange till true eller CustomRole för anpassade roller. Ange till false eller BuiltInRole för inbyggda roller. |
type |
Typ av objekt. Ställ in på Microsoft.Authorization/roleDefinitions. |
Descriptiondescription |
Beskrivning av rollen. |
Actionsactions |
Matris med strängar som anger de kontrollplansåtgärder som rollen tillåter att utföras. |
NotActionsnotActions |
Matris med strängar som anger de kontrollplansåtgärder som undantas från den tillåtna Actions. |
DataActionsdataActions |
Matris med strängar som anger de dataplansåtgärder som rollen tillåter att utföras för dina data i objektet. |
NotDataActionsnotDataActions |
Matris med strängar som anger de dataplansåtgärder som undantas från den tillåtna DataActions. |
AssignableScopesassignableScopes |
Lista med strängar som anger de områden där rollen kan tilldelas. |
Conditioncondition |
För inbyggda roller, villkorsuttryck baserat på en eller flera åtgärder i rolldefinitionen. |
ConditionVersionconditionVersion |
Villkorsversionsnummer. Standardvärdet är 2.0 och är den enda version som stöds. |
createdOn |
Datum och tid då rollen skapades. |
updatedOn |
Datum- och tidsrollen uppdaterades senast. |
createdBy |
För anpassade roller på huvudman som skapade rollen. |
updatedBy |
För anpassade roller, huvudnamn som uppdaterade rollen. |
Åtgärdsformat
Åtgärder anges med strängar som har följande format:
{Company}.{ProviderName}/{resourceType}/{action}
Delen {action} av en åtgärdssträng anger vilken typ av åtgärder du kan utföra på en resurstyp. Du ser till exempel följande delsträngar i {action}:
| Åtgärdsundersträng | beskrivning |
|---|---|
* |
Jokertecknet ger åtkomst till alla åtgärder som matchar strängen. |
read |
Aktiverar läsåtgärder (GET). |
write |
Aktiverar skrivåtgärder (PUT eller PATCH). |
action |
Aktiverar anpassade åtgärder som att starta om virtuella datorer (POST). |
delete |
Aktiverar borttagningsåtgärder (DELETE). |
Exempel på rolldefinition
Här är rolldefinitionen Deltagare som visas i Azure PowerShell och Azure CLI. Jokerteckenåtgärderna (*) under Actions anger att den huvudman som tilldelats denna roll kan utföra alla åtgärder, eller med andra ord hantera allt. Det här inbegriper även åtgärder som definieras i framtiden när Azure lägger till nya resurstyper. Åtgärderna under NotActions subtraheras från Actions. När det gäller rollen DeltagareNotActions tar den här rollen bort möjligheten att hantera åtkomst till resurser och även hantera Azure Blueprints-tilldelningar.
Deltagarroll som visas i Azure PowerShell:
{
"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
}
Deltagarroll som visas i 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"
}
]
Kontroll- och dataåtgärder
Rollbaserad åtkomstkontroll för åtgärder i kontrollplanet anges i Actions- och NotActions-egenskaperna i en rolldefinition. Här följer några exempel på kontrollplansåtgärder i Azure:
- Hantera åtkomst till ett lagringskonto
- Skapa, uppdatera eller ta bort en blobcontainer
- Ta bort en resursgrupp och alla dess resurser
Åtkomsten till kontrollplanet ärvs inte till dataplanet förutsatt att containerautentiseringsmetoden är inställd på Microsoft Entra-användarkonto och inte åtkomstnyckel. Den här separationen förhindrar att roller med jokertecken (*) har obegränsad åtkomst till dina data. Om en användare till exempel har en läsarroll i en prenumeration kan de visa lagringskontot, men som standard kan de inte visa underliggande data.
Tidigare användes inte rollbaserad åtkomstkontroll för dataåtgärder. Auktorisering för dataåtgärder varierade mellan resursprovidrar. Samma rollbaserade auktoriseringsmodell för åtkomstkontroll som används för kontrollplansåtgärder har utökats till dataplansåtgärder.
För att stödja dataplansåtgärder har nya dataegenskaper lagts till i rolldefinitionen. Dataplansåtgärder anges i DataActions och NotDataActions egenskaperna. Genom att lägga till dessa dataegenskaper bibehålls separationen mellan kontrollplanet och dataplanet. På så sätt kan du förhindra att nuvarande rolltilldelningar med jokertecken (*) plötsligt får åtkomst till data. Här följer några dataplansåtgärder som kan anges i DataActions och NotDataActions:
- Läsa en lista över blobar i en container
- Skriva en lagringsblob i en container
- Ta bort ett meddelande i en kö
Här är definitionen av Storage Blob Data Reader-rollen, som inkluderar åtgärder i både Actions och DataActions egenskaperna. Med den här rollen kan du läsa blobcontainern och även underliggande blobdata.
Rollen Storage Blob Data Reader som visas i Azure PowerShell:
{
"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
}
Rollen Storage Blob Data Reader såsom den visas i 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"
}
]
Endast dataplansåtgärder kan läggas till i egenskaperna DataActions och NotDataActions. Resursprovidrar identifierar vilka åtgärder som är dataåtgärder genom att ange isDataAction egenskapen till true. För att se en lista över åtgärder där isDataAction är true, se i Resursprovideråtgärder. Roller som inte har dataåtgärder krävs inte för att ha DataActions och NotDataActions egenskaper i rolldefinitionen.
Auktorisering för alla API-anrop för kontrollplan hanteras av Azure Resource Manager. Auktorisering för API-anrop för dataplan hanteras av antingen en resursprovider eller Azure Resource Manager.
Exempel på dataåtgärder
För att bättre förstå hur kontrollplans- och dataplansåtgärder fungerar ska vi överväga ett specifikt exempel. Alice har tilldelats rollen Ägare inom prenumerationsomfånget. Bob har tilldelats rollen Storage Blob Data Contributor i ett lagringskontoomfång. Följande diagram visar det här exemplet.
Rollen Ägare för Alice och rollen Storage Blob Data Contributor för Bob har följande åtgärder:
Ägare
Åtgärder
*
Storage Blob Data-bidragsgivare
Åtgärder
Microsoft.Storage/storageAccounts/blobServices/containers/delete
Microsoft.Storage/storageAccounts/blobServices/containers/read
Microsoft.Storage/storageAccounts/blobServices/containers/write
Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey/action
DataActions
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
Eftersom Alice har en jokerteckenåtgärd (*) i ett prenumerationsomfång ärver deras behörigheter ned så att de kan utföra alla kontrollplansåtgärder. Alice kan läsa, skriva och ta bort containrar. Alice kan dock inte utföra dataplansåtgärder utan att vidta ytterligare åtgärder. Som standard kan Alice till exempel inte läsa blobarna i en container. För att kunna läsa blobarna måste Alice hämta lagringsåtkomstnycklarna och använda dem för att komma åt blobarna.
Bobs behörigheter är begränsade till bara den Actions och DataActions som anges i rollen Storage Blob Data Contributor . Baserat på rollen kan Bob utföra både kontrollplans- och dataplansåtgärder. Bob kan till exempel läsa, skriva och ta bort containrar i det angivna lagringskontot och kan även läsa, skriva och ta bort blobarna.
Mer information om kontroll- och dataplanssäkerhet för lagring finns i säkerhetsguiden för Azure Storage.
Vilka verktyg stöder användning av Azure-roller för dataåtgärder?
Om du vill visa och arbeta med dataåtgärder måste du ha rätt versioner av verktygen eller SDK:erna:
| Verktyg | Version |
|---|---|
| Azure PowerShell | 1.1.0 eller senare |
| Azure CLI | 2.0.30 eller senare |
| Azure för .NET | 2.8.0-förhandsversion eller senare |
| Azure SDK för Go | 15.0.0 eller senare |
| Azure för Java | 1.9.0 eller senare |
| Azure för Python | 0.40.0 eller senare |
| Azure SDK för Ruby | 0.17.1 eller senare |
Om du vill visa och använda dataåtgärderna i REST-API:et måste du ange parametern api-version till följande version eller senare:
- 2018-07-01
Åtgärder
Behörigheten Actions anger de kontrollplansåtgärder som rollen tillåter att utföras. Det är en samling strängar som identifierar skyddsbara åtgärder för Azure-resursprovidrar. Här är några exempel på kontrollplansåtgärder som kan användas i Actions.
| Åtgärdssträng | beskrivning |
|---|---|
*/read |
Ger åtkomst till läsåtgärder för alla resurstyper för alla Azure-resursprovidrar. |
Microsoft.Compute/* |
Ger åtkomst till alla åtgärder för alla resurstyper i Microsoft.Compute-resursprovidern. |
Microsoft.Network/*/read |
Ger åtkomst till läsåtgärder för alla resurstyper i Microsoft.Network-resursprovidern. |
Microsoft.Compute/virtualMachines/* |
Ger åtkomst till alla operationer för virtuella maskiner och dess tillhörande resurstyper. |
microsoft.web/sites/restart/Action |
Ger åtkomst till att starta om en webbapp. |
NotActions
Behörigheten NotActions anger åtgärder i kontrollplanet som subtraheras eller exkluderas från de tillåtna åtgärder Actions som har ett wildcard-tecken (*). Använd behörigheten NotActions om den uppsättning åtgärder som du vill tillåta är enklare att definiera genom att subtrahera från Actions som har ett jokertecken (*). Åtkomsten som beviljas av en roll (gällande behörigheter) beräknas genom att subtrahera NotActions åtgärderna från Actions åtgärderna.
Actions - NotActions = Effective control plane permissions
I följande tabell visas två exempel på de effektiva kontrollplansbehörigheterna för en jokerteckenåtgärd för Microsoft.CostManagement :
| Åtgärder | NotActions | Gällande behörigheter för kontrollplan |
|---|---|---|
Microsoft.CostManagement/exports/* |
ingen | Microsoft.CostManagement/exports/actionMicrosoft.CostManagement/exports/readMicrosoft.CostManagement/exports/writeMicrosoft.CostManagement/exports/deleteMicrosoft.CostManagement/exports/run/action |
Microsoft.CostManagement/exports/* |
Microsoft.CostManagement/exports/delete |
Microsoft.CostManagement/exports/actionMicrosoft.CostManagement/exports/readMicrosoft.CostManagement/exports/writeMicrosoft.CostManagement/exports/run/action |
Anmärkning
Om en användare tilldelas en roll som exkluderar en åtgärd i NotActions, och tilldelas en andra roll som ger åtkomst till samma åtgärd, får användaren utföra den åtgärden.
NotActions är inte en neka-regel – det är helt enkelt ett bekvämt sätt att skapa en uppsättning tillåtna åtgärder när specifika åtgärder måste undantas.
Skillnader mellan NotActions och neka tilldelningar
NotActions och neka tilldelningar är inte samma och tjänar olika syften.
NotActions är ett praktiskt sätt att utesluta specifika åtgärder från en åtgärd med jokertecken (*).
Neka tilldelningar blockerar användare från att utföra specifika åtgärder även om en rolltilldelning ger dem åtkomst. Mer information finns i Förstå Azure-nekandetilldelningar.
DataActions
Behörigheten DataActions anger de dataplansåtgärder som rollen tillåter att utföras för dina data i objektet. Om en användare till exempel har åtkomst för läsning av blobdata för ett lagringskonto, kan han eller hon läsa av blobarna i lagringskontot. Här är några exempel på dataåtgärder som kan användas i DataActions.
| Dataåtgärdssträng | beskrivning |
|---|---|
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read |
Returnerar en blob eller en lista över blobar. |
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write |
Returnerar resultatet av att skriva en blob. |
Microsoft.Storage/storageAccounts/queueServices/queues/messages/read |
Returnerar ett meddelande. |
Microsoft.Storage/storageAccounts/queueServices/queues/messages/* |
Returnerar ett meddelande eller resultatet av att skriva eller ta bort ett meddelande. |
NotDataActions
Behörigheten NotDataActions anger de åtgärder i dataplanet som tas bort eller exkluderas från de tillåtna DataActions som har ett jokertecken (*). Använd behörigheten NotDataActions om den uppsättning åtgärder som du vill tillåta är enklare att definiera genom att subtrahera från DataActions som har ett jokertecken (*). Åtkomsten som beviljas av en roll (gällande behörigheter) beräknas genom att subtrahera NotDataActions åtgärderna från DataActions åtgärderna. Varje resursprovider tillhandahåller sin respektive uppsättning API:er för att utföra dataåtgärder.
DataActions - NotDataActions = Effective data plane permissions
I följande tabell visas två exempel på gällande behörigheter för datumplaner för en wildcardåtgärd i Microsoft.Storage :
| DataActions | NotDataActions | Gällande behörigheter för dataplan |
|---|---|---|
Microsoft.Storage/storageAccounts/queueServices/queues/messages/* |
ingen | Microsoft.Storage/storageAccounts/queueServices/queues/messages/readMicrosoft.Storage/storageAccounts/queueServices/queues/messages/writeMicrosoft.Storage/storageAccounts/queueServices/queues/messages/deleteMicrosoft.Storage/storageAccounts/queueServices/queues/messages/add/actionMicrosoft.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/readMicrosoft.Storage/storageAccounts/queueServices/queues/messages/writeMicrosoft.Storage/storageAccounts/queueServices/queues/messages/add/actionMicrosoft.Storage/storageAccounts/queueServices/queues/messages/process/action |
Anmärkning
Om en användare tilldelas en roll som exkluderar en dataåtgärd i NotDataActions, och tilldelas en andra roll som ger åtkomst till samma dataåtgärd, får användaren utföra den dataåtgärden.
NotDataActions är inte en neka-regel – det är helt enkelt ett bekvämt sätt att skapa en uppsättning tillåtna dataåtgärder när specifika dataåtgärder måste undantas.
AssignableScopes
Egenskapen AssignableScopes anger omfången (rot, hanteringsgrupp, prenumerationer eller resursgrupper) där en rolldefinition kan tilldelas. Du kan göra en anpassad roll tillgänglig för tilldelning i endast den hanteringsgrupp, prenumerationer eller resursgrupper som kräver den. Du måste använda minst en hanteringsgrupp, prenumeration eller resursgrupp.
Om AssignableScopes det till exempel är inställt på en prenumeration innebär det att den anpassade rollen är tillgänglig för tilldelning i prenumerationsomfånget för den angivna prenumerationen, resursgruppsomfånget för alla resursgrupper i prenumerationen eller resursomfånget för alla resurser i prenumerationen.
Inbyggda roller har AssignableScopes inställt till rotnivån ("/"). Rotomfånget anger att rollen är tillgänglig för tilldelning i alla omfång.
Exempel på giltiga tilldelningsbara omfång är:
| Rollen är tillgänglig för tilldelning | Exempel |
|---|---|
| En prenumeration | "/subscriptions/{subscriptionId1}" |
| Två prenumerationer | "/subscriptions/{subscriptionId1}", "/subscriptions/{subscriptionId2}" |
| Nätverksresursgrupp | "/subscriptions/{subscriptionId1}/resourceGroups/Network" |
| En hanteringsgrupp | "/providers/Microsoft.Management/managementGroups/{groupId1}" |
| Ledningsgrupp och en prenumeration | "/providers/Microsoft.Management/managementGroups/{groupId1}", "/subscriptions/{subscriptionId1}", |
| Alla omfång (gäller endast för inbyggda roller) | "/" |
Du kan bara definiera en hanteringsgrupp i AssignableScopes för en anpassad roll.
Även om det är möjligt att skapa en anpassad roll med en resursinstans i AssignableScopes med hjälp av kommandoraden rekommenderas det inte. Varje klient har stöd för högst 5 000 anpassade roller. Att använda den här strategin kan potentiellt uttömma dina tillgängliga anpassade roller. I slutändan bestäms åtkomstnivån av den anpassade rolltilldelningen (omfång + rollbehörigheter + säkerhetsobjekt) och inte i listan AssignableScopes i den anpassade rollen. Du kan skapa dina egna anpassade roller med hjälp av AssignableScopes för hanteringsgrupp, prenumeration eller resursgrupp, men ge dessa roller ett tydligt avgränsat omfång, som resurs eller resursgrupp.
Mer information om AssignableScopes anpassade roller finns i Anpassade Azure-roller.
Rolldefinition för privilegierad administratör
Privilegierade administratörsroller är roller som ger privilegierad administratör åtkomst, till exempel möjligheten att hantera Azure-resurser eller tilldela roller till andra användare. Om en inbyggd eller anpassad roll innehåller någon av följande åtgärder anses den vara privilegierad. Mer information finns i Lista eller hantera privilegierade administratörsrolltilldelningar.
| Åtgärdssträng | beskrivning |
|---|---|
* |
Skapa och hantera alla typer av resurser. |
*/delete |
Ta bort resurser av alla typer. |
*/write |
Skriv resurser av alla typer. |
Microsoft.Authorization/denyAssignments/delete |
Ta bort en neka-tilldelning i det angivna omfånget. |
Microsoft.Authorization/denyAssignments/write |
Skapa en nekatilldelning i det angivna omfånget. |
Microsoft.Authorization/roleAssignments/delete |
Ta bort en rolltilldelning i det angivna omfånget. |
Microsoft.Authorization/roleAssignments/write |
Skapa en rolltilldelning i det angivna omfånget. |
Microsoft.Authorization/roleDefinitions/delete |
Ta bort den angivna anpassade rolldefinitionen. |
Microsoft.Authorization/roleDefinitions/write |
Skapa eller uppdatera en anpassad rolldefinition med angivna behörigheter och tilldelningsbara omfång. |