Tworzenie lub aktualizowanie ról niestandardowych platformy Azure przy użyciu szablonu usługi ARM
Jeśli wbudowane role platformy Azure nie spełniają konkretnych potrzeb organizacji, możesz utworzyć własne role niestandardowe. W tym artykule opisano sposób tworzenia lub aktualizowania roli niestandardowej przy użyciu szablonu usługi Azure Resource Manager (szablonu usługi ARM).
Szablon usługi Azure Resource Manager to plik JavaScript Object Notation (JSON), który definiuje infrastrukturę i konfigurację projektu. W szablonie używana jest składnia deklaratywna. Możesz opisać zamierzone wdrożenie bez konieczności pisania sekwencji poleceń programowania w celu utworzenia wdrożenia.
Aby utworzyć rolę niestandardową, należy określić nazwę roli, uprawnienia i miejsce użycia roli. W tym artykule utworzysz rolę o nazwie Rola niestandardowa — czytelnik grupy zasobów z uprawnieniami do zasobów, które można przypisać w zakresie subskrypcji lub niższym.
Jeśli Twoje środowisko spełnia wymagania wstępne i masz doświadczenie w korzystaniu z szablonów ARM, wybierz przycisk Wdróż na platformie Azure. Szablon zostanie otwarty w witrynie Azure Portal.
Wymagania wstępne
Aby utworzyć rolę niestandardową, musisz mieć następujące elementy:
- Uprawnienia do tworzenia ról niestandardowych, takich jak administrator dostępu użytkowników.
Należy użyć następującej wersji:
2018-07-01
lub nowsze
Więcej informacji, zobacz Wersje interfejsów API REST RBAC platformy Azure.
Przegląd szablonu
Szablon używany w tym artykule pochodzi z szablonów szybkiego startu platformy Azure. Szablon zawiera cztery parametry i sekcję zasobów. Cztery parametry to:
- Tablica akcji z wartością
["Microsoft.Resources/subscriptions/resourceGroups/read"]
domyślną . - Tablica z
notActions
pustą wartością domyślną. - Nazwa roli z wartością
Custom Role - RG Reader
domyślną . - Opis roli z wartością
Subscription Level Deployment of a Role Definition
domyślną .
Zakres, w którym można przypisać tę rolę niestandardową, jest ustawiony na bieżącą subskrypcję.
{
"$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]"
]
}
}
]
}
Zasób zdefiniowany w szablonie to:
Wdrażanie szablonu
Wykonaj następujące kroki, aby wdrożyć poprzedni szablon.
Zaloguj się w witrynie Azure Portal.
Otwórz usługę Azure Cloud Shell dla programu PowerShell.
Skopiuj i wklej następujący skrypt do usługi Cloud Shell.
$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
Wprowadź lokalizację wdrożenia, na przykład
centralus
.Wprowadź listę akcji roli niestandardowej jako listę rozdzielaną przecinkami, taką jak
Microsoft.Resources/resources/read,Microsoft.Resources/subscriptions/resourceGroups/read
.W razie potrzeby naciśnij Enter, aby uruchomić
New-AzDeployment
polecenie.Polecenie New-AzDeployment wdraża szablon w celu utworzenia roli niestandardowej.
Powinny zostać wyświetlone dane wyjściowe podobne do następujących:
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 :
Przeglądanie wdrożonych zasobów
Wykonaj następujące kroki, aby sprawdzić, czy rola niestandardowa została utworzona.
Uruchom polecenie Get-AzRoleDefinition, aby wyświetlić listę roli niestandardowej.
Get-AzRoleDefinition "Custom Role - RG Reader" | ConvertTo-Json
Powinny zostać wyświetlone dane wyjściowe podobne do następujących:
{ "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}" ] }
W witrynie Azure Portal otwórz subskrypcję.
W menu po lewej stronie wybierz pozycję Kontrola dostępu (Zarządzanie dostępem i tożsamościami)..
Wybierz kartę Role.
Ustaw listę Typ na Wartość CustomRole.
Sprawdź, czy na liście znajduje się rola niestandardowa — czytelnik RG.
Aktualizacja roli niestandardowej
Podobnie jak w przypadku tworzenia roli niestandardowej, możesz zaktualizować istniejącą rolę niestandardową przy użyciu szablonu. Aby zaktualizować rolę niestandardową, musisz określić rolę, którą chcesz zaktualizować.
Poniżej przedstawiono zmiany, które należy wprowadzić w poprzednim szablonie Szybkiego startu, aby zaktualizować rolę niestandardową.
Dołącz identyfikator roli jako parametr.
... "roleDefName": { "type": "string", "metadata": { "description": "ID of the role definition" } ...
Uwzględnij parametr identyfikatora roli w definicji roli.
... "resources": [ { "type": "Microsoft.Authorization/roleDefinitions", "apiVersion": "2022-04-01", "name": "[parameters('roleDefName')]", "properties": { ...
Oto przykład wdrażania szablonu.
$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
Czyszczenie zasobów
Aby usunąć rolę niestandardową, wykonaj następujące kroki.
Uruchom następujące polecenie, aby usunąć rolę niestandardową.
Get-AzRoleDefinition -Name "Custom Role - RG Reader" | Remove-AzRoleDefinition
Wprowadź wartość Y , aby potwierdzić, że chcesz usunąć rolę niestandardową.