Предоставление пользователю разрешений для определенных политик лаборатории

Обзор

В этой статье рассказывается, как с помощью 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 имеет значение 05DEFF7B-0AC3-4ABF-B74D-6A72CD5BF3F3.

PS C:\>Get-AzADUser -SearchString "SomeUser"

DisplayName                    Type                           ObjectId
-----------                    ----                           --------
someuser@hotmail.com                                          05DEFF7B-0AC3-4ABF-B74D-6A72CD5BF3F3

Получив ObjectId пользователя и имя пользовательской роли, можно назначить эту роль пользователю с помощью командлета New-AzRoleAssignment:

PS C:\>New-AzRoleAssignment -ObjectId 05DEFF7B-0AC3-4ABF-B74D-6A72CD5BF3F3 -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? Начало работы с первой лабораторией в DevTest Labs: начало работы с Azure DevTest Labs за считанные минуты.

Дальнейшие действия

После того как пользователю будут предоставлены разрешения для определенных политик лаборатории, можно выполнить следующие действия.