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å 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 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 truei 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.

Rollbaserad åtkomstkontroll har utökats för att stödja både kontrollplans- och dataplansåtgärder

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.

Nästa steg