Mallow
Azure Tips · 8. helmikuuta 2024

Azure RBAC -roolien nimet luettavammiksi Bicep-malleissa

Jani Nevalainen

Kirjoittaja: Jani Nevalainen

Azure RBAC -roolien nimet luettavammiksi Bicep-malleissa

Azure RBAC -roolien nimien tekeminen luettavammiksi Bicep-malleissa.

Jos teet Azure-resursseja Bicepilla, olet varmaan törmännyt RBAC-rooleihin. Sisäänrakennetun roolin lisääminen vaatii usein roolin ID:n (GUID), mikä tekee Bicepistä nopeasti hankalalukuisen ja ylläpidosta tympeää.

Tämän saa siistimmäksi PowerShell-skriptillä, joka hakee roolit ja generoi niistä Bicep-tiedoston. Lopputuloksena saat roletypes.bicep-tiedoston, jossa on Roles-objekti. Jokaiselle roolille tulee avain, jonka nimi on “siivottu” muuttujakelpoiseksi:

# Run the Azure CLI command to list role definitions and store the output in a variable
$roleDefinitions = az role definition list | ConvertFrom-Json

# Initialize the output string with the opening of the Roles object
$output = "@export()`nvar Roles = {"

# Loop through each role definition to construct the body of the Roles object
foreach ($role in $roleDefinitions) {
    # Remove characters not allowed in variable names and construct the line
    $roleName = $role.roleName -replace '[()./-]', '' -replace ' ', ''
    $output += "`n    ${roleName}: '$($role.name)'"
}

# Close the Roles object
$output += "`n}"

# Output to a file
$output | Out-File -FilePath roletypes.bicep

Skripti hakee nykyiset roolit, poistaa nimistä erikoismerkit ja välilyönnit ja lisää ne Roles-muuttujaan.

Kun tiedosto on luotu, ota se käyttöön Bicep-mallissa näin:

@description('List of all Azure RBAC roles')
import {
  Roles
} from 'roletypes.bicep'

Ja sitten voit viitata rooleihin selkeästi nimellä GUIDin sijaan:

roleDefinitionIds: [
  Roles.Owner
]

Käytännön huomioita

  • Tallenna roletypes.bicep versionhallintaan. Silloin muutokset näkyvät review’ssa.
  • Jos käytät myös omia (custom) rooleja, varmista että erotat ne selkeästi sisäänrakennetuista rooleista.
  • Aja skripti uudelleen silloin tällöin, jotta uudet Azuren sisäänrakennetut roolit tulevat mukaan.