특정 랩 정책에 사용자 권한 부여

개요

이 문서에서는 PowerShell을 사용하여 특정 랩 정책에 사용자 권한을 부여하는 방법을 보여줍니다. 이런 방식으로 각 사용자의 요구 사항에 따라 권한을 적용할 수 있습니다. 예를 들어 특정 사용자에게 VM 정책 설정을 변경할 수 있는 기능은 부여하지만 비용 정책에 대해서는 부여하지 않을 수 있습니다.

리소스인 정책

Azure RBAC(Azure 역할 기반 Access Control) 문서에 설명된 대로 Azure RBAC를 사용하면 Azure 리소스에 대해 세밀한 리소스 액세스 관리가 가능합니다. Azure RBAC를 사용하여 DevOps 팀 내에서 업무를 분리하고 사용자에게 해당 작업을 수행하는 데 필요한 만큼의 권한만 부여할 수 있습니다.

DevTest Lab에서 정책은 Azure RBAC 작업(Microsoft.DevTestLab/labs/policySets/policies/)을 지원하는 리소스 종류입니다. 각 랩 정책은 정책 리소스 종류에 속한 리소스이며 Azure 역할에 범위로 할당할 수 있습니다.

예를 들어 사용자에게 허용된 VM 크기 정책에 대한 읽기/쓰기 권한을 부여하려면 Microsoft.DevTestLab/labs/policySets/policies/ 작업을 수행하는 사용자 지정 역할을 만든 다음 Microsoft.DevTestLab/labs/policySets/policies/AllowedVmSizesInLab 범위에서 이 사용자 지정 역할에 적절한 사용자를 할당합니다.

Azure RBAC의 사용자 지정 역할에 대한 자세한 내용은 Azure 사용자 지정 역할을 참조하세요.

PowerShell을 사용하여 랩 사용자 지정 역할 만들기

시작하려면 Azure PowerShell을 설치해야 합니다.

Azure PowerShell cmdlet을 설정한 후 다음 작업을 수행할 수 있습니다.

  • 리소스 공급자에 대한 모든 작업 나열
  • 특정 역할의 작업 나열
  • 사용자 지정 역할 만들기

다음 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 cmdlet을 사용합니다.

다음 예제에서 SomeUser 사용자의 ObjectId 는 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 cmdlet을 사용하여 사용자에게 해당 역할을 할당할 수 있습니다.

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

사용자가 특정 작업을 수행하도록 허용하는 역할 만들기

랩의 모든 VM을 시작 및 중지하는 권한이 있는 DevTest Labs 고급 사용자 역할을 만드는 스크립트의 예는 다음과 같습니다.

    $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 시작.

다음 단계

특정 랩 정책에 사용자 권한을 부여한 경우 다음 몇 가지 단계를 고려해야 합니다.