Förstå rolldefinitioner i Azure
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. Ibland kallas det helt enkelt 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 |
---|---|
Name roleName |
Visningsnamn för rollen. |
Id name |
Unikt ID för rollen. Inbyggda roller har samma roll-ID i moln. |
id |
Fullständigt kvalificerat 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. |
IsCustom roleType |
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. Ange till Microsoft.Authorization/roleDefinitions . |
Description description |
Beskrivning av rollen. |
Actions actions |
Matris med strängar som anger de kontrollplansåtgärder som rollen tillåter att utföras. |
NotActions notActions |
Matris med strängar som anger de kontrollplansåtgärder som undantas från den tillåtna Actions . |
DataActions dataActions |
Matris med strängar som anger de dataplansåtgärder som rollen tillåter att utföras för dina data i objektet. |
NotDataActions notDataActions |
Matris med strängar som anger de dataplansåtgärder som undantas från den tillåtna DataActions . |
AssignableScopes assignableScopes |
Matris med strängar som anger de omfång som rollen är tillgänglig för tilldelning. |
Condition condition |
För inbyggda roller, villkorsuttryck baserat på en eller flera åtgärder i rolldefinitionen. |
ConditionVersion conditionVersion |
Villkorsversionsnummer. Standardvärdet är 2.0 och är den enda version som stöds. |
createdOn |
Datum- och tidsrollen skapades. |
updatedOn |
Datum- och tidsrollen uppdaterades senast. |
createdBy |
För anpassade roller, huvudnamn 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 det huvudnamn som tilldelats den här rollen 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 Deltagare NotActions
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 kontrollplansåtgärder anges i egenskaperna och NotActions
för Actions
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å Azure AD-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
egenskaperna och NotDataActions
. Genom att lägga till dessa dataegenskaper bibehålls separationen mellan kontrollplanet och dataplanet. 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 dataplansåtgärder som kan anges 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ö
Här är rolldefinitionen Storage Blob Data Reader , som innehåller åtgärder i både Actions
egenskaperna och DataActions
. 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 som 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 DataActions
egenskaperna och NotDataActions
. Resursprovidrar identifierar vilka åtgärder som är dataåtgärder genom att ange isDataAction
egenskapen till true
. En lista över åtgärderna där isDataAction
är finns true
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 i 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 blobb data-deltagare
Å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 åtgärder för virtuella datorer och dess underordnade resurstyper. |
microsoft.web/sites/restart/Action |
Ger åtkomst till att starta om en webbapp. |
NotActions
Behörigheten NotActions
anger de kontrollplansåtgärder som subtraheras eller exkluderas från de tillåtna Actions
som har ett jokertecken (*
). 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 åtgärderna subtraheras NotActions
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/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 |
Kommentar
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 subtrahera specifika åtgärder från en jokerteckenåtgärd (*
).
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-neka tilldelningar.
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 läst blobdataåtkomst till ett lagringskonto kan de läsa 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 dataplansåtgärder som subtraheras 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 åtgärderna subtraheras NotDataActions
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å de gällande datumplansbehörigheterna för en jokerteckenå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/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 |
Kommentar
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
angetts till rotomfånget ("/"
). Rotomfånget anger att rollen är tillgänglig för tilldelning i alla omfång.
Exempel på giltiga tilldelningsbara omfång är:
Roll ä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}" |
Hanteringsgrupp 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. Så skapa dina anpassade roller med AssignableScopes
hanteringsgrupp, prenumeration eller resursgrupp, men tilldela anpassade roller med begränsat omfång, till exempel 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 neka-tilldelning 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. |