Предоставление пользователю разрешений для определенных политик лаборатории
Обзор
В этой статье рассказывается, как с помощью PowerShell предоставить пользователям разрешения для определенной политики лаборатории. Разрешения могут предоставляться в зависимости от потребностей каждого пользователя. Например, определенному пользователю можно разрешить изменить параметры политики виртуальной машины, но не политики затрат.
Политики как ресурсы
Как обсуждалось в статье об управлении доступом на основе ролей (Azure RBAC) в Azure, Azure RBAC обеспечивает детальное управление доступом к ресурсам для Azure. Используя Azure RBAC, вы можете разделить обязанности внутри своей группы DevOps и предоставить пользователям только тот объем доступа, который им необходим для выполнения их работы.
В DevTest Labs политика — это тип ресурса, который включает действие Azure RBAC Microsoft.DevTestLab/labs/policySets/policies/. Каждая лабораторная политика является ресурсом в типе ресурса "Политика" и может быть назначена в качестве области для роли Azure.
Например, чтобы предоставить пользователям разрешение на чтение и запись для политики Разрешенных размеров виртуальных машин, вы должны создать настраиваемую роль, которая работает с действием Microsoft.DevTestLab/labs/policySets/policies/, а затем назначить соответствующих пользователей для этой настраиваемой роли в области Microsoft.DevTestLab/labs/policySets/policies/AllowedVmSizesInLab.
Дополнительные сведения о настраиваемых ролях в Azure RBAC см. в разделе Настраиваемые роли Azure.
Создание пользовательской роли лаборатории с помощью PowerShell
Для начала вам необходимо установить Azure PowerShell.
Настроив командлеты Azure PowerShell, вы сможете выполнять следующие задачи:
- Получать список всех операций и действий по тому или иному поставщику ресурсов.
- Получать список действий по определенной роли:
- Создание пользовательской роли
Примеры выполнения этих задач демонстрирует следующий сценарий PowerShell:
# List all the operations/actions for a resource provider.
Get-AzProviderOperation -OperationSearchString "Microsoft.DevTestLab/*"
# List actions in a particular role.
(Get-AzRoleDefinition "DevTest Labs User").Actions
# Create custom role.
$policyRoleDef = (Get-AzRoleDefinition "DevTest Labs User")
$policyRoleDef.Id = $null
$policyRoleDef.Name = "Policy Contributor"
$policyRoleDef.IsCustom = $true
$policyRoleDef.AssignableScopes.Clear()
$policyRoleDef.AssignableScopes.Add("/subscriptions/<SubscriptionID> ")
$policyRoleDef.Actions.Add("Microsoft.DevTestLab/labs/policySets/policies/*")
$policyRoleDef = (New-AzRoleDefinition -Role $policyRoleDef)
Предоставление пользователю разрешений в отношении определенной политики с помощью пользовательских ролей
Определив пользовательские роли, можно назначить их пользователям. Чтобы назначить пользовательскую роль, необходимо получить ObjectId соответствующего пользователя. Для этого используйте командлет Get-AzADUser.
В следующем примере объект ObjectId пользователя SomeUser — aaaa-0000-1111-2222-bbbbbbbb.
PS C:\>Get-AzADUser -SearchString "SomeUser"
DisplayName Type ObjectId
----------- ---- --------
someuser@hotmail.com aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
Получив ObjectId пользователя и имя пользовательской роли, можно назначить эту роль пользователю с помощью командлета New-AzRoleAssignment:
PS C:\>New-AzRoleAssignment -ObjectId aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb -RoleDefinitionName "Policy Contributor" -Scope /subscriptions/<SubscriptionID>/resourceGroups/<ResourceGroupName>/providers/Microsoft.DevTestLab/labs/<LabName>/policySets/default/policies/AllowedVmSizesInLab
В предыдущем примере использовалась политика AllowedVmSizesInLab . Вы можете использовать любую из следующих политик:
- MaxVmsAllowedPerUser
- MaxVmsAllowedPerLab
- AllowedVmSizesInLab
- LabVmsShutdown
Создание роли, позволяющей пользователям выполнять определенную задачу
В этом примере скрипта, создающего роль DevTest Labs Advanced User, которая имеет разрешение на запуск и остановку всех виртуальных машин в лаборатории:
$policyRoleDef = Get-AzRoleDefinition "DevTest Labs User"
$policyRoleDef.Actions.Remove('Microsoft.DevTestLab/Environments/*')
$policyRoleDef.Id = $null
$policyRoleDef.Name = "DevTest Labs Advanced User"
$policyRoleDef.IsCustom = $true
$policyRoleDef.AssignableScopes.Clear()
$policyRoleDef.AssignableScopes.Add("/subscriptions/<subscription Id>")
$policyRoleDef.Actions.Add("Microsoft.DevTestLab/labs/virtualMachines/Start/action")
$policyRoleDef.Actions.Add("Microsoft.DevTestLab/labs/virtualMachines/Stop/action")
$policyRoleDef = New-AzRoleDefinition -Role $policyRoleDef
Приступить к использованию Azure DevTest Labs
Впервые работаете с Azure? Создайте бесплатную учетную запись Azure.
Уже используете Azure? Создайте первую лабораторию и начните работу с Azure DevTest Labs в минутах.
Следующие шаги
После того как пользователю будут предоставлены разрешения для определенных политик лаборатории, можно выполнить следующие действия.