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
Spara Bicep-filen som main.bicep på den lokala datorn.
Skapa en variabel med namnet myActions med åtgärderna för roleDefinition.
$myActions='["Microsoft.Resources/subscriptions/resourceGroups/read"]'
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 Portal, 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.
Ange de uppdaterade åtgärderna.
$myActions='["Microsoft.Resources/resources/read","Microsoft.Resources/subscriptions/resourceGroups/read"]'
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 Portal, Azure CLI eller Azure PowerShell för att ta bort den anpassade rollen.
az role definition delete --name "Custom Role - RG Reader"