Guida introduttiva: Assegnare un ruolo di Azure usando un modello di Resource Manager
Per gestire l'accesso alle risorse di Azure, si usa il controllo degli accessi in base al ruolo Azure. Questa guida introduttiva illustra come creare un gruppo di risorse e come concedere l'accesso a un utente in modo che possa creare e gestire macchine virtuali nel gruppo di risorse. In questo argomento di avvio rapido si usa un modello di Azure Resource Manager (modello di Resource Manager) per concedere l'accesso.
Un modello di Azure Resource Manager è un file JSON (JavaScript Object Notation) che definisce l'infrastruttura e la configurazione del progetto. Il modello utilizza la sintassi dichiarativa. Si descrive la distribuzione prevista senza scrivere la sequenza di comandi di programmazione necessari per creare la distribuzione.
Se l'ambiente soddisfa i prerequisiti e si ha familiarità con l'uso dei modelli di Resource Manager, selezionare il pulsante Distribuisci in Azure. Il modello verrà aperto nel portale di Azure.
Prerequisiti
Per assegnare ruoli di Azure e rimuovere le assegnazioni di ruolo, è necessario disporre di:
- Se non si ha una sottoscrizione di Azure, creare un account gratuito prima di iniziare.
Microsoft.Authorization/roleAssignments/write
eMicrosoft.Authorization/roleAssignments/delete
autorizzazioni, ad esempio Amministratore Controllo di accesso basato su ruoli- Per assegnare un ruolo, è necessario specificare tre elementi: entità di sicurezza, definizione del ruolo e ambito. Per questa guida introduttiva, l'entità di sicurezza è l'utente o un altro utente nella directory, la definizione del ruolo è Collaboratore macchina virtuale e l'ambito è un gruppo di risorse specificato.
Rivedere il modello
Il modello usato in questo avvio rapido proviene dai modelli di avvio rapido di Azure. Il modello ha due parametri e una sezione resources. In tale sezione sono presenti i tre elementi di un'assegnazione di ruolo, ovvero l'entità di sicurezza, la definizione del ruolo e l'ambito.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"metadata": {
"_generator": {
"name": "bicep",
"version": "0.25.53.49325",
"templateHash": "15160858749942476090"
}
},
"parameters": {
"roleDefinitionID": {
"type": "string",
"metadata": {
"description": "Specifies the role definition ID used in the role assignment."
}
},
"principalId": {
"type": "string",
"metadata": {
"description": "Specifies the principal ID assigned to the role."
}
}
},
"variables": {
"roleAssignmentName": "[guid(parameters('principalId'), parameters('roleDefinitionID'), resourceGroup().id)]"
},
"resources": [
{
"type": "Microsoft.Authorization/roleAssignments",
"apiVersion": "2022-04-01",
"name": "[variables('roleAssignmentName')]",
"properties": {
"roleDefinitionId": "[resourceId('Microsoft.Authorization/roleDefinitions', parameters('roleDefinitionID'))]",
"principalId": "[parameters('principalId')]"
}
}
],
"outputs": {
"name": {
"type": "string",
"value": "[variables('roleAssignmentName')]"
},
"resourceGroupName": {
"type": "string",
"value": "[resourceGroup().name]"
},
"resourceId": {
"type": "string",
"value": "[resourceId('Microsoft.Authorization/roleAssignments', variables('roleAssignmentName'))]"
}
}
}
Nel modello è definita la risorsa seguente:
Distribuire il modello
Accedere al portale di Azure.
Determinare l'indirizzo e-mail elettronica associato alla sottoscrizione di Azure. In alternativa, determinare l'indirizzo e-mail di un altro utente nella directory.
Aprire Azure Cloud Shell per PowerShell.
Copiare e incollare lo script seguente in Cloud Shell.
$resourceGroupName = Read-Host -Prompt "Enter a resource group name (i.e. ExampleGrouprg)" $emailAddress = Read-Host -Prompt "Enter an email address for a user in your directory" $location = Read-Host -Prompt "Enter a location (i.e. centralus)" $roleAssignmentName = New-Guid $principalId = (Get-AzAdUser -Mail $emailAddress).id $roleDefinitionId = (Get-AzRoleDefinition -name "Virtual Machine Contributor").id $templateUri = "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.authorization/rbac-builtinrole-resourcegroup/azuredeploy.json" New-AzResourceGroup -Name $resourceGroupName -Location $location New-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName -TemplateUri $templateUri -roleDefinitionID $roleDefinitionId -principalId $principalId
Immettere un nome per il gruppo di risorse, ad esempio ExampleGrouprg.
Immettere un indirizzo e-mail per se stessi o per un altro utente nella directory.
Immettere un percorso per il gruppo di risorse, ad esempio centralus.
Se necessario, premere INVIO per eseguire il comando New-AzResourceGroupDeployment.
Il comando New-AzResourceGroup command crea un nuovo gruppo di risorse, mentre il comando New-AzResourceGroupDeployment distribuisce il modello per aggiungere l'assegnazione di ruolo.
L'output dovrebbe essere simile al seguente:
PS> New-AzResourceGroupDeployment -ResourceGroupName $resourceGroupName -TemplateUri $templateUri -roleAssignmentName $roleAssignmentName -roleDefinitionID $roleDefinitionId -principalId $principalId DeploymentName : azuredeploy ResourceGroupName : ExampleGrouprg ProvisioningState : Succeeded Timestamp : 5/22/2020 9:01:30 PM Mode : Incremental TemplateLink : Uri : https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.authorization/rbac-builtinrole-resourcegroup/azuredeploy.json ContentVersion : 1.0.0.0 Parameters : Name Type Value ==================== ========================= ========== roleDefinitionID String 9980e02c-c2be-4d73-94e8-173b1dc7cf3c principalId String {principalId} Outputs : DeploymentDebugLogLevel :
Esaminare le risorse distribuite
Nel portale di Azure aprire il gruppo di risorse creato.
Nel menu a sinistra fare clic su Controllo di accesso (IAM).
Fare clic sulla scheda Assegnazioni di ruolo.
Verificare che il ruolo Collaboratore macchina virtuale sia assegnato all'utente specificato.
Pulire le risorse
Per rimuovere l'assegnazione di ruolo e il gruppo di risorse creato, eseguire queste operazioni.
Copiare e incollare lo script seguente in Cloud Shell.
$emailAddress = Read-Host -Prompt "Enter the email address of the user with the role assignment to remove" $resourceGroupName = Read-Host -Prompt "Enter the resource group name to remove (i.e. ExampleGrouprg)" $principalId = (Get-AzAdUser -Mail $emailAddress).id Remove-AzRoleAssignment -ObjectId $principalId -RoleDefinitionName "Virtual Machine Contributor" -ResourceGroupName $resourceGroupName Remove-AzResourceGroup -Name $resourceGroupName
Immettere l'indirizzo e-mail dell'utente con l'assegnazione di ruolo da rimuovere.
Immettere il nome del gruppo di risorse da rimuovere, ad esempio ExampleGrouprg.
Se necessario, premere INVIO per eseguire il comando Remove-AzResourceGroup.
Immettere Y per confermare che si intende rimuovere il gruppo di risorse.