Краткое руководство. Назначение роли Azure с помощью шаблона ARM
Управление доступом на основе ролей Azure (Azure RBAC) — это способ управления доступом к ресурсам в Azure. В этом кратком руководстве показано, как создать группу ресурсов и предоставить пользователю доступ для создания и администрирования виртуальных машин в группе ресурсов. В этом кратком руководстве показано, как создать общий запрос с помощью шаблона Azure Resource Manager (шаблона ARM).
Шаблон Azure Resource Manager — это файл нотации объектов JavaScript (JSON), который определяет инфраструктуру и конфигурацию проекта. В шаблоне используется декларативный синтаксис. Вы описываете предполагаемое развертывание без написания последовательности команд программирования для создания развертывания.
Если среда соответствует предварительным требованиям и вы знакомы с использованием шаблонов ARM, нажмите кнопку Развертывание в Azure. Шаблон откроется на портале Azure.
Необходимые компоненты
Чтобы добавлять и удалять назначения ролей, требуется следующее:
- Если у вас нет подписки Azure, создайте бесплатную учетную запись, прежде чем приступить к работе.
Microsoft.Authorization/roleAssignments/write
иMicrosoft.Authorization/roleAssignments/delete
разрешения, такие как администратор на основе ролей контроль доступа- Чтобы назначить роль, необходимо указать три элемента: субъект безопасности, определение роли и область действия. В этом кратком руководстве субъектом безопасности являетесь вы или другой пользователь в каталоге, определением роли — роль Участник виртуальных машин, а областью действия — указанная группа ресурсов.
Изучение шаблона
Шаблон, используемый в этом кратком руководстве, взят из шаблонов быстрого запуска Azure. Шаблон содержит два параметра и раздел resources. Обратите внимание, что в разделе resources есть три элемента назначения роли: субъект безопасности, определение роли и область действия.
{
"$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'))]"
}
}
}
В шаблоне определен следующий ресурс:
Развертывание шаблона
Войдите на портал Azure.
Определите адрес электронной почты, связанный с вашей подпиской Azure. Или определите адрес электронной почты другого пользователя в каталоге.
Откройте Azure Cloud Shell для PowerShell.
Скопируйте и вставьте следующий скрипт в 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
Введите имя группы ресурсов, например ExampleGrouprg.
Введите адрес электронной почты для пользователя в каталоге.
Введите расположение группы ресурсов, например centralus.
При необходимости нажмите клавишу ВВОД, чтобы выполнить команду New-AzResourceGroupDeployment.
Команда New-AzResourceGroup создает новую группу ресурсов, а команда New-AzResourceGroupDeployment развертывает шаблон для добавления назначения роли.
Вы должны увидеть результат, аналогичный приведенному ниже:
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 :
Просмотр развернутых ресурсов
На портале Azure откройте созданную группу ресурсов.
В меню слева щелкните Управление доступом (IAM).
Перейдите на вкладку Назначения ролей.
Убедитесь, что роль Участник виртуальных машин назначена указанному пользователю.
Очистка ресурсов
Чтобы удалить назначение ролей и созданную группу ресурсов, сделайте следующее.
Скопируйте и вставьте следующий скрипт в 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
Введите адрес электронной почты пользователя с назначением роли для удаления.
Введите имя группы ресурсов для удаления, например ExampleGrouprg.
При необходимости нажмите клавишу ВВОД, чтобы выполнить команду Remove-AzResourceGroup.
Введите Y, чтобы подтвердить удаление указанной группы ресурсов.