Vytvoření nebo aktualizace vlastních rolí Azure pomocí šablony ARM
Pokud předdefinované role Azure nevyhovují konkrétním potřebám vaší organizace, můžete vytvořit vlastní role. Tento článek popisuje, jak vytvořit nebo aktualizovat vlastní roli pomocí šablony Azure Resource Manageru (šablona ARM).
Šablona Azure Resource Manageru je soubor JSON (JavaScript Object Notation), který definuje infrastrukturu a konfiguraci projektu. Tato šablona používá deklarativní syntaxi. Popíšete zamýšlené nasazení, aniž byste museli psát posloupnost programovacích příkazů pro vytvoření nasazení.
Pokud chcete vytvořit vlastní roli, zadáte název role, oprávnění a místo, kde se dá role použít. V tomto článku vytvoříte roli s názvem Vlastní role – čtenář RG s oprávněními k prostředkům, která je možné přiřadit v oboru předplatného nebo nižším.
Pokud vaše prostředí splňuje požadavky a jste obeznámeni s používáním šablon ARM, vyberte tlačítko Nasazení do Azure. Šablona se otevře v prostředí Azure Portal.
Požadavky
Pokud chcete vytvořit vlastní roli, musíte mít:
- Oprávnění k vytváření vlastních rolí, jako je správce uživatelských přístupů.
Musíte použít následující verzi:
2018-07-01
nebo novější
Další informace najdete v tématu Verze rozhraní API Azure RBAC REST API.
Kontrola šablony
Šablona použitá v tomto článku pochází ze šablon Rychlého startu Azure. Šablona má čtyři parametry a oddíl prostředků. Čtyři parametry jsou:
- Pole akcí s výchozí hodnotou
["Microsoft.Resources/subscriptions/resourceGroups/read"]
. notActions
Pole s prázdnou výchozí hodnotou- Název role s výchozí hodnotou
Custom Role - RG Reader
. - Popis role s výchozí hodnotou
Subscription Level Deployment of a Role Definition
.
Obor, ve kterém je možné přiřadit tuto vlastní roli, je nastaven na aktuální předplatné.
{
"$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]"
]
}
}
]
}
Prostředek definovaný v šabloně je:
Nasazení šablony
Pokud chcete nasadit předchozí šablonu, postupujte podle těchto kroků.
Přihlaste se k portálu Azure.
Otevřete Azure Cloud Shell pro PowerShell.
Zkopírujte a vložte následující skript do Cloud Shellu.
$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
Zadejte umístění pro nasazení, například
centralus
.Zadejte seznam akcí pro vlastní roli jako seznam oddělený čárkami, například
Microsoft.Resources/resources/read,Microsoft.Resources/subscriptions/resourceGroups/read
.V případě potřeby spusťte příkaz stisknutím klávesy
New-AzDeployment
Enter.Příkaz New-AzDeployment nasadí šablonu pro vytvoření vlastní role.
Zobrazený výstup by měl vypadat přibližně takto:
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 :
Kontrola nasazených prostředků
Podle těchto kroků ověřte, že byla vytvořena vlastní role.
Spuštěním příkazu Get-AzRoleDefinition zobrazte seznam vlastní role.
Get-AzRoleDefinition "Custom Role - RG Reader" | ConvertTo-Json
Zobrazený výstup by měl vypadat přibližně takto:
{ "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}" ] }
Na webu Azure Portal otevřete své předplatné.
V nabídce vlevo vyberte Řízení přístupu (IAM).
Vyberte kartu Role.
Nastavte seznam Typů na CustomRole.
Ověřte, že je uvedená vlastní role – čtenář RG.
Aktualizace vlastní role
Podobně jako při vytváření vlastní role můžete aktualizovat existující vlastní roli pomocí šablony. Pokud chcete aktualizovat vlastní roli, musíte zadat roli, kterou chcete aktualizovat.
Tady jsou změny, které byste museli provést v předchozí šabloně Rychlého startu, aby se aktualizovala vlastní role.
Zahrňte ID role jako parametr.
... "roleDefName": { "type": "string", "metadata": { "description": "ID of the role definition" } ...
Do definice role zahrňte parametr ID role.
... "resources": [ { "type": "Microsoft.Authorization/roleDefinitions", "apiVersion": "2022-04-01", "name": "[parameters('roleDefName')]", "properties": { ...
Tady je příklad nasazení šablony.
$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
Vyčištění prostředků
Pokud chcete vlastní roli odebrat, postupujte takto.
Spuštěním následujícího příkazu odeberte vlastní roli.
Get-AzRoleDefinition -Name "Custom Role - RG Reader" | Remove-AzRoleDefinition
Zadáním Y potvrďte, že chcete odebrat vlastní roli.