Anpassade roller i Azure

Om de inbyggda Azure-rollerna inte uppfyller organisationens specifika behov kan du skapa egna anpassade roller. Precis som med inbyggda roller kan du tilldela anpassade roller till användare, grupper och tjänstens huvudnamn i hanteringsgrupps-, prenumerations- och resursgruppsomfång.

Anpassade roller kan delas mellan prenumerationer som litar på samma Microsoft Entra-klientorganisation. Det finns en gräns på 5 000 anpassade roller per klientorganisation. (För Microsoft Azure som drivs av 21Vianet är gränsen 2 000 anpassade roller.) Anpassade roller kan skapas med hjälp av Azure-portalen, Azure PowerShell, Azure CLI eller REST-API:et.

Steg för att skapa en anpassad roll

Här följer de grundläggande stegen för att skapa en anpassad roll.

  1. Fastställ vilka behörigheter du behöver.

    När du skapar en anpassad roll måste du känna till de åtgärder som är tillgängliga för att definiera dina behörigheter. Vanligtvis börjar du med en befintlig inbyggd roll och ändrar den sedan efter dina behov. Du lägger till åtgärderna i rolldefinitionens Actionsegenskaper eller NotActions egenskaper. Om du har dataåtgärder lägger du till dem i DataActions egenskaperna eller NotDataActions .

    Mer information finns i nästa avsnitt Så här bestämmer du vilka behörigheter du behöver.

  2. Bestäm hur du vill skapa den anpassade rollen.

    Du kan skapa anpassade roller med hjälp av Azure-portalen, Azure PowerShell, Azure CLI eller REST-API:et.

  3. Skapa den anpassade rollen.

    Det enklaste sättet är att använda Azure-portalen. Anvisningar om hur du skapar en anpassad roll med hjälp av Azure-portalen finns i Skapa eller uppdatera anpassade Azure-roller med hjälp av Azure-portalen.

  4. Testa den anpassade rollen.

    När du har din anpassade roll måste du testa den för att kontrollera att den fungerar som förväntat. Om du behöver göra justeringar senare kan du uppdatera den anpassade rollen.

Så här fastställer du de behörigheter du behöver

Azure har tusentals behörigheter som du kan inkludera i din anpassade roll. Här följer några metoder som kan hjälpa dig att avgöra vilka behörigheter du vill lägga till i din anpassade roll:

  • Titta på befintliga inbyggda roller.

    Du kanske vill ändra en befintlig roll eller kombinera behörigheter som används i flera roller.

  • Visa en lista över de Azure-tjänster som du vill bevilja åtkomst till.

  • Fastställa vilka resursprovidrar som mappar till Azure-tjänsterna.

    Azure-tjänster exponerar sina funktioner och behörigheter via resursprovidrar. Resursprovidern Microsoft.Compute tillhandahåller till exempel resurser för virtuella datorer och Microsoft.Billing-resursprovidern tillhandahåller prenumerations- och faktureringsresurser. Att känna till resursprovidrar kan hjälpa dig att begränsa och fastställa vilka behörigheter du behöver för din anpassade roll.

    När du skapar en anpassad roll med hjälp av Azure-portalen kan du även fastställa resursprovidrar genom att söka efter nyckelord. Den här sökfunktionen beskrivs i Skapa eller uppdatera anpassade Azure-roller med hjälp av Azure-portalen.

    Fönstret Lägg till behörigheter med resursprovidern

  • Sök igenom de tillgängliga behörigheterna för att hitta de behörigheter som du vill inkludera.

    När du skapar en anpassad roll med hjälp av Azure-portalen kan du söka efter behörigheter med nyckelord. Du kan till exempel söka efter behörigheter för virtuell dator eller fakturering . Du kan också ladda ned alla behörigheter som en CSV-fil och sedan söka i den här filen. Den här sökfunktionen beskrivs i Skapa eller uppdatera anpassade Azure-roller med hjälp av Azure-portalen.

    Lägg till behörighetslista

Exempel på anpassad roll

Följande visar hur en anpassad roll ser ut som den visas med hjälp av Azure PowerShell i JSON-format. Den här anpassade rollen kan användas för övervakning och omstart av virtuella datorer.

{
  "Name": "Virtual Machine Operator",
  "Id": "88888888-8888-8888-8888-888888888888",
  "IsCustom": true,
  "Description": "Can monitor and restart virtual machines.",
  "Actions": [
    "Microsoft.Storage/*/read",
    "Microsoft.Network/*/read",
    "Microsoft.Compute/*/read",
    "Microsoft.Compute/virtualMachines/start/action",
    "Microsoft.Compute/virtualMachines/restart/action",
    "Microsoft.Authorization/*/read",
    "Microsoft.ResourceHealth/availabilityStatuses/read",
    "Microsoft.Resources/subscriptions/resourceGroups/read",
    "Microsoft.Insights/alertRules/*",
    "Microsoft.Insights/diagnosticSettings/*",
    "Microsoft.Support/*"
  ],
  "NotActions": [],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": [
    "/subscriptions/{subscriptionId1}",
    "/subscriptions/{subscriptionId2}",
    "/providers/Microsoft.Management/managementGroups/{groupId1}"
  ]
}

Följande visar samma anpassade roll som visas med hjälp av Azure CLI.

[
  {
    "assignableScopes": [
      "/subscriptions/{subscriptionId1}",
      "/subscriptions/{subscriptionId2}",
      "/providers/Microsoft.Management/managementGroups/{groupId1}"
    ],
    "description": "Can monitor and restart virtual machines.",
    "id": "/subscriptions/{subscriptionId1}/providers/Microsoft.Authorization/roleDefinitions/88888888-8888-8888-8888-888888888888",
    "name": "88888888-8888-8888-8888-888888888888",
    "permissions": [
      {
        "actions": [
          "Microsoft.Storage/*/read",
          "Microsoft.Network/*/read",
          "Microsoft.Compute/*/read",
          "Microsoft.Compute/virtualMachines/start/action",
          "Microsoft.Compute/virtualMachines/restart/action",
          "Microsoft.Authorization/*/read",
          "Microsoft.ResourceHealth/availabilityStatuses/read",
          "Microsoft.Resources/subscriptions/resourceGroups/read",
          "Microsoft.Insights/alertRules/*",
          "Microsoft.Insights/diagnosticSettings/*",
          "Microsoft.Support/*"
        ],
        "dataActions": [],
        "notActions": [],
        "notDataActions": []
      }
    ],
    "roleName": "Virtual Machine Operator",
    "roleType": "CustomRole",
    "type": "Microsoft.Authorization/roleDefinitions"
  }
]

Egenskaper för anpassad roll

I följande tabell beskrivs vad egenskaperna för anpassad roll betyder.

Property Obligatoriskt Type Beskrivning
Name
roleName
Ja String Visningsnamnet för den anpassade rollen. Även om en rolldefinition är en hanteringsgrupp eller en resurs på prenumerationsnivå kan en rolldefinition användas i flera prenumerationer som delar samma Microsoft Entra-klientorganisation. Det här visningsnamnet måste vara unikt i omfånget för Microsoft Entra-klientorganisationen. Kan innehålla bokstäver, siffror, blanksteg och specialtecken. Maximalt antal tecken är 512.
Id
name
Ja String Det unika ID:t för den anpassade rollen. För Azure PowerShell och Azure CLI genereras det här ID:t automatiskt när du skapar en ny roll.
IsCustom
roleType
Ja String Anger om det här är en anpassad roll. Ange till true eller CustomRole för anpassade roller. Ange till false eller BuiltInRole för inbyggda roller.
Description
description
Ja String Beskrivningen av den anpassade rollen. Kan innehålla bokstäver, siffror, blanksteg och specialtecken. Maximalt antal tecken är 2048.
Actions
actions
Ja Sträng[] En matris med strängar som anger de kontrollplansåtgärder som rollen tillåter att utföras. Mer information finns i Åtgärder.
NotActions
notActions
Nej Sträng[] En matris med strängar som anger de kontrollplansåtgärder som undantas från den tillåtna Actions. Mer information finns i NotActions.
DataActions
dataActions
Nej Sträng[] En matris med strängar som anger de dataplansåtgärder som rollen tillåter att utföras för dina data i objektet. Om du skapar en anpassad roll med DataActionskan den rollen inte tilldelas i hanteringsgruppens omfång. Mer information finns i DataActions.
NotDataActions
notDataActions
Nej Sträng[] En matris med strängar som anger de dataplansåtgärder som undantas från den tillåtna DataActions. Mer information finns i NotDataActions.
AssignableScopes
assignableScopes
Ja Sträng[] En matris med strängar som anger de omfång som den anpassade rollen är tillgänglig för tilldelning. Maximalt antal AssignableScopes är 2 000. Mer information finns i AssignableScopes.

Behörighetssträngar är skiftlägeskänsliga. När du skapar dina anpassade roller är konventionen att matcha det fall som du ser för behörigheter i Azure-resursprovideråtgärder.

Behörigheter med jokertecken

Actions, NotActions, DataActionsoch NotDataActions har stöd för jokertecken (*) för att definiera behörigheter. Ett jokertecken (*) utökar en behörighet till allt som matchar den åtgärdssträng som du anger. Anta till exempel att du vill lägga till alla behörigheter som är relaterade till Azure Cost Management och exporter. Du kan lägga till alla dessa åtgärdssträngar:

Microsoft.CostManagement/exports/action
Microsoft.CostManagement/exports/read
Microsoft.CostManagement/exports/write
Microsoft.CostManagement/exports/delete
Microsoft.CostManagement/exports/run/action

I stället för att lägga till alla dessa strängar kan du bara lägga till en jokerteckensträng. Följande jokerteckenssträng motsvarar till exempel de föregående fem strängarna. Detta omfattar även eventuella framtida exportbehörigheter som kan läggas till.

Microsoft.CostManagement/exports/*

Kommentar

Vi rekommenderar att du anger Actions och DataActions uttryckligen i stället för att använda jokertecknet (*). Ytterligare åtkomst och behörigheter som beviljas via framtiden Actions eller DataActions kan vara oönskat beteende med jokertecknet.

Vem kan skapa, ta bort, uppdatera eller visa en anpassad roll?

Precis som inbyggda roller AssignableScopes anger egenskapen de omfång som rollen är tillgänglig för tilldelning. Egenskapen AssignableScopes för en anpassad roll styr också vem som kan skapa, ta bort, uppdatera eller visa den anpassade rollen.

Uppgift Åtgärd beskrivning
Skapa/ta bort en anpassad roll Microsoft.Authorization/ roleDefinitions/write Användare som beviljas den här åtgärden för alla AssignableScopes anpassade roller kan skapa (eller ta bort) anpassade roller för användning i dessa omfång. Till exempel Ägare och Användaråtkomstadministratörer för hanteringsgrupper, prenumerationer och resursgrupper.
Uppdatera en anpassad roll Microsoft.Authorization/ roleDefinitions/write Användare som beviljas den här åtgärden för alla AssignableScopes anpassade roller kan uppdatera anpassade roller i dessa omfång. Till exempel Ägare och Användaråtkomstadministratörer för hanteringsgrupper, prenumerationer och resursgrupper.
Visa en anpassad roll Microsoft.Authorization/ roleDefinitions/read Användare som beviljas den här åtgärden i ett omfång kan visa de anpassade roller som är tillgängliga för tilldelning i det omfånget. Alla inbyggda roller tillåter att anpassade roller är tillgängliga för tilldelning.

Kommentar

Även om en roll har bytt namn ändras inte roll-ID:t. Om du använder skript eller automatisering för att skapa dina rolltilldelningar är det bästa praxis att använda det unika roll-ID:t i stället för rollnamnet. Om en roll byter namn är det därför mer troligt att skripten fungerar.

Hitta rolltilldelningar för att ta bort en anpassad roll

Innan du kan ta bort en anpassad roll måste du ta bort alla rolltilldelningar som använder den anpassade rollen. Om du försöker ta bort en anpassad roll med rolltilldelningar får du meddelandet: There are existing role assignments referencing role (code: RoleDefinitionHasAssignments).

Här följer steg som hjälper dig att hitta rolltilldelningarna innan du tar bort en anpassad roll:

Information om hur du hittar oanvända anpassade roller finns i Symptom – Inga fler rolldefinitioner kan skapas.

Begränsningar för anpassade roller

I följande lista beskrivs gränserna för anpassade roller.

  • Varje klientorganisation kan ha upp till 5 000 anpassade roller.
  • Microsoft Azure som drivs av 21Vianet kan ha upp till 2 000 anpassade roller för varje klientorganisation.
  • Du kan inte ange AssignableScopes rotomfattningen ("/").
  • Du kan inte använda jokertecken (*) i AssignableScopes. Jokerteckenbegränsningen säkerställer att en användare inte kan få åtkomst till ett omfång genom att uppdatera rolldefinitionen.
  • Du kan bara ha ett jokertecken i en åtgärdssträng.
  • Du kan bara definiera en hanteringsgrupp i AssignableScopes för en anpassad roll.
  • Azure Resource Manager verifierar inte att hanteringsgruppen finns i rolldefinitionens AssignableScopes.
  • Anpassade roller med DataActions kan inte tilldelas för omfång på hanteringsgruppsnivå.
  • Du kan skapa en anpassad roll med DataActions och en hanteringsgrupp i AssignableScopes. Du kan inte tilldela den anpassade rollen i själva hanteringsgruppens omfång. Du kan dock tilldela den anpassade rollen i omfånget för prenumerationerna i hanteringsgruppen. Detta kan vara användbart om du behöver skapa en enda anpassad roll med DataActions som måste tilldelas i flera prenumerationer, i stället för att skapa en separat anpassad roll för varje prenumeration.

Mer information om anpassade roller och hanteringsgrupper finns i Vad är Azure-hanteringsgrupper?

Indata- och utdataformat

Om du vill skapa en anpassad roll med hjälp av kommandoraden använder du vanligtvis JSON för att ange de egenskaper som du vill använda för den anpassade rollen. Beroende på vilka verktyg du använder ser formaten för in- och utdata något annorlunda ut. I det här avsnittet visas formaten för in- och utdata beroende på verktyget.

Azure PowerShell

Om du vill skapa en anpassad roll med Azure PowerShell måste du ange följande indata.

{
  "Name": "",
  "Description": "",
  "Actions": [],
  "NotActions": [],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": []
}

Om du vill uppdatera en anpassad roll med Hjälp av Azure PowerShell måste du ange följande indata. Observera att egenskapen Id har lagts till.

{
  "Name": "",
  "Id": "",
  "Description": "",
  "Actions": [],
  "NotActions": [],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": []
}

Följande visar ett exempel på utdata när du listar en anpassad roll med hjälp av Azure PowerShell och kommandot ConvertTo-Json .

{
  "Name": "",
  "Id": "",
  "IsCustom": true,
  "Description": "",
  "Actions": [],
  "NotActions": [],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": []
}

Azure CLI

Om du vill skapa eller uppdatera en anpassad roll med hjälp av Azure CLI måste du ange följande indata. Det här formatet är samma format när du skapar en anpassad roll med hjälp av Azure PowerShell.

{
  "Name": "",
  "Description": "",
  "Actions": [],
  "NotActions": [],
  "DataActions": [],
  "NotDataActions": [],
  "AssignableScopes": []
}

Följande visar ett exempel på utdata när du listar en anpassad roll med hjälp av Azure CLI.

[
  {
    "assignableScopes": [],
    "description": "",
    "id": "",
    "name": "",
    "permissions": [
      {
        "actions": [],
        "dataActions": [],
        "notActions": [],
        "notDataActions": []
      }
    ],
    "roleName": "",
    "roleType": "CustomRole",
    "type": "Microsoft.Authorization/roleDefinitions"
  }
]

REST-API

Om du vill skapa eller uppdatera en anpassad roll med hjälp av REST-API:et måste du ange följande indata. Det här formatet är samma format som genereras när du skapar en anpassad roll med hjälp av Azure-portalen.

{
  "properties": {
    "roleName": "",
    "description": "",
    "assignableScopes": [],
    "permissions": [
      {
        "actions": [],
        "notActions": [],
        "dataActions": [],
        "notDataActions": []
      }
    ]
  }
}

Följande visar ett exempel på utdata när du listar en anpassad roll med hjälp av REST-API:et.

{
    "properties": {
        "roleName": "",
        "type": "CustomRole",
        "description": "",
        "assignableScopes": [],
        "permissions": [
            {
                "actions": [],
                "notActions": [],
                "dataActions": [],
                "notDataActions": []
            }
        ],
        "createdOn": "",
        "updatedOn": "",
        "createdBy": "",
        "updatedBy": ""
    },
    "id": "",
    "type": "Microsoft.Authorization/roleDefinitions",
    "name": ""
}

Nästa steg