Belirli laboratuvar ilkelerine kullanıcı izinleri verme

Genel Bakış

Bu makalede, kullanıcılara belirli bir laboratuvar ilkesi için izin vermek için PowerShell'in nasıl kullanılacağı gösterilmektedir. Bu şekilde, izinler her kullanıcının ihtiyaçlarına göre uygulanabilir. Örneğin, belirli bir kullanıcıya VM ilkesi ayarlarını değiştirme olanağı vermek isteyebilirsiniz, ancak maliyet ilkelerini değiştiremezsiniz.

Kaynak olarak ilkeler

Azure rol tabanlı erişim denetimi (Azure RBAC) makalesinde açıklandığı gibi Azure RBAC, Azure için kaynakların ayrıntılı erişim yönetimini sağlar. Azure RBAC'yi kullanarak DevOps ekibinizin içindeki görevleri ayırabilir ve kullanıcılara yalnızca işlerini yapmaları için gereken erişim miktarını vekleyebilirsiniz.

DevTest Labs'de ilke, Microsoft.DevTestLab/labs/policySets/policies/ Azure RBAC eylemini etkinleştiren bir kaynak türüdür. Her laboratuvar ilkesi, İlke kaynak türündeki bir kaynaktır ve bir Azure rolüne kapsam olarak atanabilir.

Örneğin, kullanıcılara İzin Verilen VM Boyutları ilkesine okuma/yazma izni vermek için , Microsoft.DevTestLab/labs/policySets/policies/ eylemiyle çalışan özel bir rol oluşturur ve ardından uygun kullanıcıları Microsoft.DevTestLab/labs/policySets/policies/AllowedVmSizesInLab kapsamında bu özel role atarsınız.

Azure RBAC'deki özel roller hakkında daha fazla bilgi edinmek için bkz. Azure özel rolleri.

PowerShell kullanarak laboratuvar özel rolü oluşturma

Başlamak için Azure PowerShell yüklemeniz gerekir.

Azure PowerShell cmdlet'lerini ayarladıktan sonra aşağıdaki görevleri gerçekleştirebilirsiniz:

  • Bir kaynak sağlayıcısı için tüm işlemleri/eylemleri listeleme
  • Belirli bir roldeki eylemleri listeleme:
  • Özel rol oluşturma

Aşağıdaki PowerShell betiğinde bu görevlerin nasıl gerçekleştireceğinize ilişkin örnekler gösterilmektedir:

# 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)

Özel rolleri kullanarak belirli bir ilke için kullanıcıya izin atama

Özel rollerinizi tanımladıktan sonra kullanıcılara atayabilirsiniz. Kullanıcıya özel rol atamak için, önce o kullanıcıyı temsil eden ObjectId değerini almanız gerekir. Bunu yapmak için Get-AzADUser cmdlet'ini kullanın.

Aşağıdaki örnekte, SomeUser kullanıcısının ObjectId değeri 05DEFF7B-0AC3-4ABF-B74D-6A72CD5BF3F3'tür.

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

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

Kullanıcının ObjectId değerini ve özel rol adını aldıktan sonra, new-AzRoleAssignment cmdlet'ini kullanarak kullanıcıya bu rolü atayabilirsiniz:

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

Önceki örnekte AllowedVmSizesInLab ilkesi kullanılmıştır. Aşağıdaki ilkelerden herhangi birini kullanabilirsiniz:

  • MaxVmsAllowedPerUser
  • MaxVmsAllowedPerLab
  • AllowedVmSizesInLab
  • LabVmsShutdown

Kullanıcıların belirli bir görevi gerçekleştirmesine izin vermek için rol oluşturma

Laboratuvardaki tüm VM'leri başlatma ve durdurma izni olan DevTest Labs Advanced User rolünü oluşturan bu örnek betik:

    $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 ile çalışma başlama

Azure’da yeni misiniz? Ücretsiz bir Azure hesabı oluşturun.

Azure’u zaten kullanıyor musunuz? DevTest Labs'deki ilk laboratuvarınızı kullanmaya başlama: dakikalar içinde Azure DevTest Labs kullanmaya başlayın.

Sonraki adımlar

Belirli laboratuvar ilkelerine kullanıcı izinleri verdikten sonra göz önünde bulundurmanız gereken bazı sonraki adımlar şunlardır: