특정 랩 정책에 사용자 권한 부여
개요
이 문서에서는 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는 aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb입니다.
PS C:\>Get-AzADUser -SearchString "SomeUser"
DisplayName Type ObjectId
----------- ---- --------
someuser@hotmail.com aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
사용자에 대한 ObjectId와 사용자 지정 역할 이름이 있으면 New-AzRoleAssignment cmdlet을 사용하여 사용자에게 해당 역할을 할당할 수 있습니다.
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
사용자가 특정 작업을 수행하도록 허용하는 역할 만들기
랩의 모든 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에 계정이 있나요? 첫 번째 랩 을 만들고 몇 분 안에 Azure DevTest Labs를 시작합니다.
다음 단계
특정 랩 정책에 사용자 권한을 부여한 경우 다음 몇 가지 단계를 고려해야 합니다.