Azure RBAC-erőforrások létrehozása a Bicep használatával
Az Azure hatékony szerepköralapú hozzáférés-vezérlési (RBAC) rendszerrel rendelkezik. További információ az Azure RBAC-ről: Mi az Az Azure szerepköralapú hozzáférés-vezérlése (Azure RBAC)? A Bicep használatával programozott módon definiálhatja RBAC-szerepkör-hozzárendeléseit és szerepkördefinícióit.
Szerepkör-hozzárendelések
A szerepkör-hozzárendelések lehetővé teszik, hogy egy egyszerű (például felhasználó, csoport vagy szolgáltatásnév) hozzáférést adjon egy adott Azure-erőforráshoz.
Szerepkör-hozzárendelés definiálásához hozzon létre egy erőforrást típussal Microsoft.Authorization/roleAssignments
. A szerepkördefiníciók több tulajdonsággal rendelkeznek, beleértve a hatókört, a nevet, a szerepkördefiníció azonosítóját, az egyszerű azonosítót és az egyszerű típust.
Scope
A szerepkör-hozzárendelések egy adott hatókörre vonatkoznak, amely meghatározza azt az erőforrást vagy erőforráskészletet, amelyhez hozzáférést ad. További információ: Az Azure RBAC hatókörének ismertetése.
A szerepkör-hozzárendelések bővítményerőforrások, ami azt jelenti, hogy egy másik erőforrásra vonatkoznak. Az alábbi példa bemutatja, hogyan hozhat létre tárfiókot és szerepkör-hozzárendelést az adott tárfiókra:
param location string = resourceGroup().location
param storageAccountName string = 'stor${uniqueString(resourceGroup().id)}'
param storageSkuName string = 'Standard_LRS'
param roleDefinitionResourceId string
param principalId string
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' = {
name: storageAccountName
location: location
kind: 'StorageV2'
sku: {
name: storageSkuName
}
}
resource roleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
scope: storageAccount
name: guid(storageAccount.id, principalId, roleDefinitionResourceId)
properties: {
roleDefinitionId: roleDefinitionResourceId
principalId: principalId
principalType: 'ServicePrincipal'
}
}
Ha nem adja meg explicit módon a hatókört, a Bicep a fájl targetScope
. Az alábbi példában nincs scope
megadva tulajdonság, így a szerepkör-hozzárendelés hatóköre az előfizetésre terjed ki:
param roleDefinitionResourceId string
param principalId string
targetScope = 'subscription'
resource roleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
name: guid(subscription().id, principalId, roleDefinitionResourceId)
properties: {
roleDefinitionId: roleDefinitionResourceId
principalId: principalId
principalType: 'ServicePrincipal'
}
}
Tipp.
A követelményeknek való megfeleléshez használja a legkisebb hatókört.
Ha például egy felügyelt identitáshoz hozzáférést kell adnia egyetlen tárfiókhoz, érdemes biztonsági eljárásként létrehozni a szerepkör-hozzárendelést a tárfiók hatókörében, nem az erőforráscsoportban vagy az előfizetés hatókörében.
Name
A szerepkör-hozzárendelés erőforrásnevének globálisan egyedi azonosítónak (GUID) kell lennie.
A szerepkör-hozzárendelési erőforrásneveknek egyedinek kell lenniük a Microsoft Entra-bérlőn belül, még akkor is, ha a hatókör szűkebb.
Ahhoz, hogy a Bicep-üzemelő példány megismételhető legyen, fontos, hogy a név determinisztikus legyen , vagyis minden üzembe helyezéskor ugyanazt a nevet használja. Célszerű olyan GUID-t létrehozni, amely együtt használja a hatókört, az egyszerű azonosítót és a szerepkör-azonosítót. Érdemes a guid()
függvény használatával determinisztikus GUID-t létrehozni a szerepkör-hozzárendelések neveihez, például ebben a példában:
name: guid(subscription().id, principalId, roleDefinitionResourceId)
Szerepkördefiníció azonosítója
A hozzárendelt szerepkör lehet beépített szerepkördefiníció vagy egyéni szerepkördefiníció. Beépített szerepkördefiníció használatához keresse meg a megfelelő szerepkördefiníció-azonosítót. A Közreműködő szerepkör például rendelkezik a szerepkördefiníció azonosítójávalb24988ac-6180-42a0-ab88-20f7382dd24c
.
A szerepkör-hozzárendelési erőforrás létrehozásakor meg kell adnia egy teljes erőforrás-azonosítót. A beépített szerepkördefiníciós azonosítók előfizetés-hatókörű erőforrások. Célszerű egy erőforrást használni existing
a beépített szerepkörre való hivatkozáshoz, és a tulajdonság használatával elérni a .id
teljes erőforrás-azonosítót:
param principalId string
@description('This is the built-in Contributor role. See https://docs.microsoft.com/azure/role-based-access-control/built-in-roles#contributor')
resource contributorRoleDefinition 'Microsoft.Authorization/roleDefinitions@2022-04-01' existing = {
scope: subscription()
name: 'b24988ac-6180-42a0-ab88-20f7382dd24c'
}
resource roleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
name: guid(resourceGroup().id, principalId, contributorRoleDefinition.id)
properties: {
roleDefinitionId: contributorRoleDefinition.id
principalId: principalId
principalType: 'ServicePrincipal'
}
}
Rendszerbiztonsági tag
A principalId
tulajdonságot guid értékre kell állítani, amely az egyszerű Microsoft Entra-azonosítót jelöli. A Microsoft Entra ID-ban ezt néha objektumazonosítónak is nevezik.
A principalType
tulajdonság azt határozza meg, hogy az egyszerű felhasználó, csoport vagy szolgáltatásnév. A felügyelt identitások a szolgáltatásnév egyik formája.
Tipp.
Fontos beállítani a tulajdonságot, principalType
amikor szerepkör-hozzárendelést hoz létre a Bicepben. Ellenkező esetben időnként üzembehelyezési hibák merülhetnek fel, különösen akkor, ha szolgáltatásnevek és felügyelt identitások használatával dolgozik.
Az alábbi példa bemutatja, hogyan hozhat létre felhasználó által hozzárendelt felügyelt identitást és szerepkör-hozzárendelést:
param location string = resourceGroup().location
param roleDefinitionResourceId string
var managedIdentityName = 'MyManagedIdentity'
resource managedIdentity 'Microsoft.ManagedIdentity/userAssignedIdentities@2023-01-31' = {
name: managedIdentityName
location: location
}
resource roleAssignment 'Microsoft.Authorization/roleAssignments@2022-04-01' = {
name: guid(resourceGroup().id, managedIdentity.id, roleDefinitionResourceId)
properties: {
roleDefinitionId: roleDefinitionResourceId
principalId: managedIdentity.properties.principalId
principalType: 'ServicePrincipal'
}
}
Erőforrás-törlési viselkedés
Amikor töröl egy felhasználót, csoportot, szolgáltatásnevet vagy felügyelt identitást a Microsoft Entra-azonosítóból, érdemes törölnie a szerepkör-hozzárendeléseket. A rendszer nem törli őket automatikusan.
A törölt egyszerű azonosítóra hivatkozó szerepkör-hozzárendelések érvénytelenek lesznek. Ha megpróbálja újból felhasználni egy szerepkör-hozzárendelés nevét egy másik szerepkör-hozzárendeléshez, az üzembe helyezés sikertelen lesz. Ennek a viselkedésnek a megkerüléséhez távolítsa el a régi szerepkör-hozzárendelést, mielőtt újra létrehozza, vagy győződjön meg arról, hogy egyedi nevet használ egy új szerepkör-hozzárendelés üzembe helyezésekor. Ez a rövid útmutatósablon bemutatja, hogyan definiálhat szerepkör-hozzárendelést egy Bicep-modulban, és hogyan használhat egyszerű azonosítót a szerepkör-hozzárendelés nevének kezdőértékeként.
Egyéni szerepkör-definíciók
Az egyéni szerepkör-definíciók lehetővé teszik, hogy meghatározzon egy engedélykészletet, amelyet aztán hozzárendelhet egy taghoz egy szerepkör-hozzárendelés használatával. A szerepkördefiníciókról további információt az Azure-szerepkördefiníciók ismertetése című témakörben talál.
Egyéni szerepkördefiníció létrehozásához definiáljon egy típusú Microsoft.Authorization/roleDefinitions
erőforrást. Példaként tekintse meg az előfizetési szintű üzembe helyezési gyorsútmutatón keresztüli új szerepkör-def létrehozását.
A szerepkördefiníciós erőforrásneveknek egyedinek kell lenniük a Microsoft Entra-bérlőn belül, még akkor is, ha a hozzárendelhető hatókörök szűkebbek.
Megjegyzés:
Egyes szolgáltatások saját szerepkördefiníciókat és hozzárendeléseket kezelnek. Az Azure Cosmos DB például fenntartja a saját Microsoft.DocumentDB/databaseAccounts/sqlRoleAssignments
és Microsoft.DocumentDB/databaseAccounts/sqlRoleDefinitions
az erőforrásait. További információkért tekintse meg az adott szolgáltatás dokumentációját.
Kapcsolódó erőforrások
- Erőforrás dokumentációja
- Bővítményerőforrások
- Hatókörök
- Rövid útmutatósablonok
- Közösségi blogbejegyzések