Udzielanie użytkownikowi uprawnień do określonych zasad laboratorium

Omówienie

W tym artykule pokazano, jak za pomocą programu PowerShell udzielić użytkownikom uprawnień do określonych zasad laboratorium. W ten sposób można stosować uprawnienia na podstawie potrzeb każdego użytkownika. Na przykład możesz przyznać określonemu użytkownikowi możliwość zmiany ustawień zasad maszyny wirtualnej, ale nie zasad kosztów.

Zasady jako zasoby

Jak opisano w artykule Kontrola dostępu oparta na rolach (RBAC) platformy Azure , kontrola dostępu oparta na rolach platformy Azure umożliwia szczegółowe zarządzanie dostępem do zasobów na platformie Azure. Korzystając z kontroli dostępu opartej na rolach platformy Azure, można rozdzielić obowiązki w zespole DevOps i udzielić dostępu tylko do użytkowników, których potrzebują do wykonywania swoich zadań.

W usłudze DevTest Labs zasady są typem zasobu, który umożliwia akcję RBAC platformy Azure Microsoft.DevTestLab/labs/policySets/policies/. Każda zasada laboratorium jest zasobem w typie zasobu Zasady i może być przypisana jako zakres do roli platformy Azure.

Na przykład w celu udzielenia użytkownikom uprawnień do odczytu/zapisu w zasadach Dozwolone rozmiary maszyn wirtualnych należy utworzyć rolę niestandardową, która współdziała z akcją Microsoft.DevTestLab/labs/policySets/policies/policies/ , a następnie przypisz odpowiednich użytkowników do tej roli niestandardowej w zakresie Microsoft.DevTestLab/labs/policySets/policies/AllowedVmSizesInLab.

Aby dowiedzieć się więcej na temat ról niestandardowych w kontroli dostępu opartej na rolach platformy Azure, zobacz role niestandardowe platformy Azure.

Tworzenie roli niestandardowej laboratorium przy użyciu programu PowerShell

Aby rozpocząć pracę, musisz zainstalować Azure PowerShell.

Po skonfigurowaniu poleceń cmdlet Azure PowerShell można wykonać następujące zadania:

  • Wyświetlanie listy wszystkich operacji/akcji dostawcy zasobów
  • Wyświetlanie listy akcji w określonej roli:
  • Tworzenie roli niestandardowej

Poniższy skrypt programu PowerShell ilustruje przykłady wykonywania tych zadań:

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

Przypisywanie uprawnień do użytkownika dla określonych zasad przy użyciu ról niestandardowych

Po zdefiniowaniu ról niestandardowych można przypisać je do użytkowników. Aby przypisać rolę niestandardową do użytkownika, musisz najpierw uzyskać identyfikator ObjectId reprezentujący tego użytkownika. W tym celu użyj polecenia cmdlet Get-AzADUser .

W poniższym przykładzie identyfikator ObjectId użytkownika SomeUser to 05DEFF7B-0AC3-4ABF-B74D-6A72CD5BF3F3.

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

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

Po utworzeniu identyfikatora ObjectId użytkownika i niestandardowej nazwy roli możesz przypisać tę rolę do użytkownika za pomocą polecenia cmdlet 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

W poprzednim przykładzie są używane zasady AllowedVmSizesInLab . Można użyć dowolnej z następujących zasad:

  • MaxVmsAllowedPerUser
  • MaxVmsAllowedPerLab
  • AllowedVmSizesInLab
  • LabVmsShutdown

Tworzenie roli umożliwiającej użytkownikom wykonywanie określonego zadania

Ten przykładowy skrypt tworzący rolę DevTest Labs Advanced User, który ma uprawnienia do uruchamiania i zatrzymywania wszystkich maszyn wirtualnych w laboratorium:

    $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 

Rozpoczynanie pracy z usługą Azure DevTest Labs

Dopiero zaczynasz korzystać z platformy Azure? Utwórz bezpłatne konto platformy Azure.

Już masz konto na platformie Azure? Rozpocznij pracę z pierwszym laboratorium w usłudze DevTest Labs: rozpoczynanie pracy z Azure DevTest Labs w ciągu kilku minut.

Następne kroki

Po udzieleniu uprawnień użytkownika do określonych zasad laboratorium poniżej przedstawiono kilka następnych kroków, które należy wziąć pod uwagę: