Egyéni Azure-szerepkörök létrehozása vagy frissítése ARM-sablon használatával
Ha az Azure beépített szerepkörei nem felelnek meg a szervezet adott igényeinek, létrehozhat saját egyéni szerepköröket. Ez a cikk bemutatja, hogyan hozhat létre vagy frissíthet egyéni szerepköröket egy Azure Resource Manager-sablon (ARM-sablon) használatával.
Az Azure Resource Manager-sablon egy JavaScript Object Notation (JSON) fájl, amely meghatározza a projekt infrastruktúráját és konfigurációját. A sablon deklaratív szintaxist használ. Az üzembe helyezés létrehozásához szükséges programozási parancsok sorozatának megírása nélkül írhatja le a tervezett üzembe helyezést.
Egyéni szerepkör létrehozásához meg kell adnia egy szerepkörnevet, engedélyeket és a szerepkör használható helyét. Ebben a cikkben létrehoz egy Egyéni szerepkör – RG-olvasó nevű szerepkört, amely erőforrás-engedélyekkel rendelkezik, amelyek előfizetési hatókörben vagy annál alacsonyabban rendelhetők hozzá.
Ha a környezet megfelel az előfeltételeknek, és már ismeri az ARM-sablonokat, kattintson az Üzembe helyezés az Azure-ban gombra. A sablon az Azure Portalon fog megnyílni.
Előfeltételek
Egyéni szerepkör létrehozásához a következővel kell rendelkeznie:
- Egyéni szerepkörök, például Felhasználói hozzáférés Rendszergazda istrator létrehozásához szükséges engedélyek.
A következő verziót kell használnia:
2018-07-01
vagy újabb
További információkért tekintse meg az Azure RBAC REST API-k API-verzióit.
A sablon áttekintése
A cikkben használt sablon az Azure rövid útmutatósablonjaiból származik. A sablon négy paraméterrel és egy erőforrásszakaszsal rendelkezik. A négy paraméter a következő:
- Műveletek tömbje az alapértelmezett értékkel
["Microsoft.Resources/subscriptions/resourceGroups/read"]
. notActions
Üres alapértelmezett értékkel rendelkező tömb.- Szerepkör neve alapértelmezett értékével
Custom Role - RG Reader
: . - Szerepkör leírása alapértelmezett értékével
Subscription Level Deployment of a Role Definition
.
Az egyéni szerepkör hozzárendelhető hatóköre az aktuális előfizetésre van állítva.
{
"$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.25.53.49325",
"templateHash": "16704138909949665309"
}
},
"parameters": {
"actions": {
"type": "array",
"defaultValue": [
"Microsoft.Resources/subscriptions/resourceGroups/read"
],
"metadata": {
"description": "Array of actions for the roleDefinition"
}
},
"notActions": {
"type": "array",
"defaultValue": [],
"metadata": {
"description": "Array of notActions for the roleDefinition"
}
},
"roleName": {
"type": "string",
"defaultValue": "Custom Role - RG Reader",
"metadata": {
"description": "Friendly name of the role definition"
}
},
"roleDescription": {
"type": "string",
"defaultValue": "Subscription Level Deployment of a Role Definition",
"metadata": {
"description": "Detailed description of the role definition"
}
}
},
"variables": {
"roleDefName": "[guid(parameters('roleName'))]"
},
"resources": [
{
"type": "Microsoft.Authorization/roleDefinitions",
"apiVersion": "2022-04-01",
"name": "[variables('roleDefName')]",
"properties": {
"roleName": "[parameters('roleName')]",
"description": "[parameters('roleDescription')]",
"type": "customRole",
"permissions": [
{
"actions": "[parameters('actions')]",
"notActions": "[parameters('notActions')]"
}
],
"assignableScopes": [
"[subscription().id]"
]
}
}
]
}
A sablonban definiált erőforrás a következő:
A sablon üzembe helyezése
Az előző sablon üzembe helyezéséhez kövesse az alábbi lépéseket.
Jelentkezzen be az Azure Portalra.
Nyissa meg a PowerShellhez készült Azure Cloud Shellt.
Másolja és illessze be a következő szkriptet a Cloud Shellbe.
$location = Read-Host -Prompt "Enter a location (i.e. centralus)" [string[]]$actions = Read-Host -Prompt "Enter actions as a comma-separated list (i.e. action1,action2)" $actions = $actions.Split(',') $templateUri = "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/subscription-deployments/create-role-def/azuredeploy.json" New-AzDeployment -Location $location -TemplateUri $templateUri -actions $actions
Adja meg az üzembe helyezés helyét, például
centralus
.Adja meg az egyéni szerepkör műveleteinek listáját vesszővel tagolt listaként, például
Microsoft.Resources/resources/read,Microsoft.Resources/subscriptions/resourceGroups/read
.Ha szükséges, nyomja le az Enter billentyűt a
New-AzDeployment
parancs futtatásához.A New-AzDeployment parancs üzembe helyezi a sablont az egyéni szerepkör létrehozásához.
A következőhöz hasonló kimenetnek kell megjelennie:
PS> New-AzDeployment -Location $location -TemplateUri $templateUri -actions $actions Id : /subscriptions/{subscriptionId}/providers/Microsoft.Resources/deployments/azuredeploy DeploymentName : azuredeploy Location : centralus ProvisioningState : Succeeded Timestamp : 6/25/2020 8:08:32 PM Mode : Incremental TemplateLink : Uri : https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/subscription-deployments/create-role-def/azuredeploy.json ContentVersion : 1.0.0.0 Parameters : Name Type Value ================= ========================= ========== actions Array [ "Microsoft.Resources/resources/read", "Microsoft.Resources/subscriptions/resourceGroups/read" ] notActions Array [] roleName String Custom Role - RG Reader roleDescription String Subscription Level Deployment of a Role Definition Outputs : DeploymentDebugLogLevel :
Üzembe helyezett erőforrások áttekintése
Kövesse az alábbi lépéseket az egyéni szerepkör létrehozásának ellenőrzéséhez.
Futtassa a Get-AzRoleDefinition parancsot az egyéni szerepkör listázásához.
Get-AzRoleDefinition "Custom Role - RG Reader" | ConvertTo-Json
A következőhöz hasonló kimenetnek kell megjelennie:
{ "Name": "Custom Role - RG Reader", "Id": "11111111-1111-1111-1111-111111111111", "IsCustom": true, "Description": "Subscription Level Deployment of a Role Definition", "Actions": [ "Microsoft.Resources/resources/read", "Microsoft.Resources/subscriptions/resourceGroups/read" ], "NotActions": [], "DataActions": [], "NotDataActions": [], "AssignableScopes": [ "/subscriptions/{subscriptionId}" ] }
Nyissa meg az előfizetést az Azure Portalon.
A bal oldali menüben válassza a Hozzáférés-vezérlés (IAM) lehetőséget.
Válassza a Szerepkörök lapot.
A Típuslista beállítása CustomRole értékre.
Ellenőrizze, hogy az Egyéni szerepkör – RG-olvasó szerepkör szerepel-e a listában.
Egyéni szerepkörök frissítése
Az egyéni szerepkörök létrehozásához hasonlóan egy meglévő egyéni szerepkört is frissíthet sablon használatával. Egyéni szerepkör frissítéséhez meg kell adnia a frissíteni kívánt szerepkört.
Az alábbi módosításokat kell elvégeznie az előző rövid útmutatósablonon az egyéni szerepkör frissítéséhez.
Adja meg paraméterként a szerepkör-azonosítót.
... "roleDefName": { "type": "string", "metadata": { "description": "ID of the role definition" } ...
Adja meg a szerepkör-azonosító paramétert a szerepkör-definícióban.
... "resources": [ { "type": "Microsoft.Authorization/roleDefinitions", "apiVersion": "2022-04-01", "name": "[parameters('roleDefName')]", "properties": { ...
Íme egy példa a sablon üzembe helyezésére.
$location = Read-Host -Prompt "Enter a location (i.e. centralus)"
[string[]]$actions = Read-Host -Prompt "Enter actions as a comma-separated list (i.e. action1,action2)"
$actions = $actions.Split(',')
$roleDefName = Read-Host -Prompt "Enter the role ID to update"
$templateFile = "rg-reader-update.json"
New-AzDeployment -Location $location -TemplateFile $templateFile -actions $actions -roleDefName $roleDefName
Az erőforrások eltávolítása
Az egyéni szerepkör eltávolításához kövesse az alábbi lépéseket.
Futtassa a következő parancsot az egyéni szerepkör eltávolításához.
Get-AzRoleDefinition -Name "Custom Role - RG Reader" | Remove-AzRoleDefinition
Írja be az Y értéket az egyéni szerepkör eltávolításának megerősítéséhez.