Share via


Skapa eller uppdatera anpassade Azure-roller med Bicep

Om de inbyggda Azure-rollerna inte uppfyller organisationens specifika behov kan du skapa egna anpassade roller. Den här artikeln beskriver hur du skapar eller uppdaterar en anpassad roll med Bicep.

Bicep är ett domänspecifikt språk (DSL) som använder deklarativ syntax för att distribuera Azure-resurser. Det ger koncis syntax, tillförlitlig typsäkerhet och stöd för återanvändning av kod. Bicep erbjuder den bästa redigeringsupplevelsen för dina infrastruktur-som-kod-lösningar i Azure.

Om du vill skapa en anpassad roll anger du ett rollnamn, rollbehörigheter och var rollen kan användas. I den här artikeln skapar du en roll med namnet Anpassad roll – RG-läsare med resursbehörigheter som kan tilldelas i ett prenumerationsomfång eller lägre.

Förutsättningar

Om du vill skapa en anpassad roll måste du ha behörighet att skapa anpassade roller, till exempel administratör för användaråtkomst.

Du måste också ha en aktiv Azure-prenumeration. Om du inte har ett konto kan du skapa ett kostnadsfritt konto innan du börjar.

Granska Bicep-filen

Bicep-filen som används i den här artikeln kommer från Azure-snabbstartsmallar. Bicep-filen har fyra parametrar och ett resursavsnitt. De fyra parametrarna är:

  • Matris med åtgärder med standardvärdet ["Microsoft.Resources/subscriptions/resourceGroups/read"].
  • Matris med notActions med ett tomt standardvärde.
  • Rollnamn med standardvärdet Custom Role - RG Reader.
  • Rollbeskrivning med standardvärdet Subscription Level Deployment of a Role Definition.

Omfånget där den här anpassade rollen kan tilldelas anges till den aktuella prenumerationen.

En anpassad roll kräver ett unikt ID. ID:t kan genereras med funktionen guid(). Eftersom en anpassad roll också kräver ett unikt visningsnamn för klientorganisationen kan du använda rollnamnet som en parameter för funktionen för guid() att skapa ett deterministiskt GUID. Ett deterministiskt GUID är användbart om du senare behöver uppdatera den anpassade rollen med samma Bicep-fil.

targetScope = 'subscription'

@description('Array of actions for the roleDefinition')
param actions array = [
  'Microsoft.Resources/subscriptions/resourceGroups/read'
]

@description('Array of notActions for the roleDefinition')
param notActions array = []

@description('Friendly name of the role definition')
param roleName string = 'Custom Role - RG Reader'

@description('Detailed description of the role definition')
param roleDescription string = 'Subscription Level Deployment of a Role Definition'

var roleDefName = guid(roleName)

resource roleDef 'Microsoft.Authorization/roleDefinitions@2022-04-01' = {
  name: roleDefName
  properties: {
    roleName: roleName
    description: roleDescription
    type: 'customRole'
    permissions: [
      {
        actions: actions
        notActions: notActions
      }
    ]
    assignableScopes: [
      subscription().id
    ]
  }
}

Resursen som definieras i Bicep-filen är:

Distribuera Bicep-filen

  1. Spara Bicep-filen som main.bicep på den lokala datorn.

  2. Skapa en variabel med namnet myActions med åtgärderna för roleDefinition.

    $myActions='["Microsoft.Resources/subscriptions/resourceGroups/read"]'
    
  3. Distribuera Bicep-filen med antingen Azure CLI eller Azure PowerShell.

    az deployment sub create --location eastus --name customRole --template-file ./main.bicep --parameters actions=$myActions
    

När distributionen är klar bör du se ett meddelande som anger att distributionen lyckades.

Granska distribuerade resurser

Använd Azure-portalen, Azure CLI eller Azure PowerShell för att verifiera att den anpassade rollen har skapats.

az role definition list --name "Custom Role - RG Reader"

Uppdatera en anpassad roll

På samma sätt som du skapar en anpassad roll kan du uppdatera en befintlig anpassad roll med hjälp av Bicep. Om du vill uppdatera en anpassad roll måste du ange den roll som du vill uppdatera. Om du tidigare har skapat den anpassade rollen i Bicep med ett unikt roll-ID som är deterministiskt kan du använda samma Bicep-fil och ange den anpassade rollen genom att bara använda visningsnamnet.

  1. Ange de uppdaterade åtgärderna.

    $myActions='["Microsoft.Resources/resources/read","Microsoft.Resources/subscriptions/resourceGroups/read"]'
    
  2. Använd Azure CLI eller Azure PowerShell för att uppdatera den anpassade rollen.

    az deployment sub create --location eastus --name customrole --template-file ./main.bicep --parameters actions=$myActions roleName="Custom Role - RG Reader"
    

    Kommentar

    Det kan ta flera minuter innan den uppdaterade anpassade rollen sprids.

Rensa resurser

När den inte längre behövs använder du Azure-portalen, Azure CLI eller Azure PowerShell för att ta bort den anpassade rollen.

az role definition delete --name "Custom Role - RG Reader"

Nästa steg