Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Med Azure DevTest Labs kan du snabbt skapa utvecklingstestmiljöer med självbetjäning med hjälp av Azure Portal. Men om du har flera team och flera DevTest Labs-instanser kan det spara tid att automatisera skapandeprocessen. Med Azure Resource Manager-mallar kan du skapa labb, virtuella labbdatorer, anpassade bilder, formler och lägga till användare på ett automatiserat sätt. Den här artikeln fokuserar specifikt på att lägga till användare i en DevTest Labs-instans.
Om du vill lägga till en användare i ett labb lägger du till användaren i DevTest Labs-användarrollen för labbet. Den här artikeln visar hur du automatiserar hur du lägger till en användare i ett labb på något av följande sätt:
- Azure Resource Manager-mallar
- Azure PowerShell-cmdletar
- Azure CLI.
Använda Azure Resource Manager-mallar
Följande Resource Manager-exempelmall anger en användare som ska läggas till i DevTest Labs-användarrollen för ett labb.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"principalId": {
"type": "string",
"metadata": {
"description": "The objectId of the user, group, or service principal for the role."
}
},
"labName": {
"type": "string",
"metadata": {
"description": "The name of the lab instance to be created."
}
},
"roleAssignmentGuid": {
"type": "string",
"metadata": {
"description": "Guid to use as the name for the role assignment."
}
}
},
"variables": {
"devTestLabUserRoleId": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/111111111-0000-0000-11111111111111111')]",
"fullDevTestLabUserRoleName": "[concat(parameters('labName'), '/Microsoft.Authorization/', parameters('roleAssignmentGuid'))]",
"roleScope": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.DevTestLab/labs/', parameters('labName'))]"
},
"resources": [
{
"apiVersion": "2016-05-15",
"type": "Microsoft.DevTestLab/labs",
"name": "[parameters('labName')]",
"location": "[resourceGroup().location]"
},
{
"apiVersion": "2016-07-01",
"type": "Microsoft.DevTestLab/labs/providers/roleAssignments",
"name": "[variables('fullDevTestLabUserRoleName')]",
"properties": {
"roleDefinitionId": "[variables('devTestLabUserRoleId')]",
"principalId": "[parameters('principalId')]",
"scope": "[variables('roleScope')]"
},
"dependsOn": [
"[resourceId('Microsoft.DevTestLab/labs', parameters('labName'))]"
]
}
]
}
Om du tilldelar rollen i samma mall som skapar labbet, kom ihåg att lägga till ett beroende mellan rolltilldelningsresursen och labbet. Mer information finns i artikeln Definiera beroenden i Azure Resource Manager-mallar .
Resursinformation för rolltilldelning
Rolltilldelningsresursen måste ange typ och namn.
Det första du bör tänka på är att resurstypen inte Microsoft.Authorization/roleAssignments
är som den skulle vara för en resursgrupp. I stället följer resurstypen mönstret {provider-namespace}/{resource-type}/providers/roleAssignments
. I det här fallet blir Microsoft.DevTestLab/labs/providers/roleAssignments
resurstypen .
Själva rolltilldelningsnamnet måste vara globalt unikt. Namnet på tilldelningen använder mönstret {labName}/Microsoft.Authorization/{newGuid}
.
newGuid
är ett parametervärde för mallen. Det säkerställer att rolltilldelningsnamnet är unikt. Eftersom det inte finns några mallfunktioner för att skapa GUID:er måste du generera ett GUID själv med hjälp av guid-generatorverktyg.
I mallen definieras namnet på rolltilldelningen av variabeln fullDevTestLabUserRoleName
. Den exakta raden från mallen är:
"fullDevTestLabUserRoleName": "[concat(parameters('labName'), '/Microsoft.Authorization/', parameters('roleAssignmentGuid'))]"
Resursegenskaper för rolltilldelning
Själva rolltilldelningen definierar tre egenskaper. Den behöver roleDefinitionId
, principalId
och scope
.
Rolldefinition
Rolldefinitions-ID:t är strängidentifieraren för den befintliga rolldefinitionen. Roll-ID:t är i formatet /subscriptions/{subscription-id}/providers/Microsoft.Authorization/roleDefinitions/{role-definition-id}
.
Prenumerations-ID hämtas med hjälp subscription().subscriptionId
av mallfunktionen.
Du måste hämta rolldefinitionen för den DevTest Labs User
inbyggda rollen. Om du vill hämta GUID för DevTest Labs-användarrollen kan du använda REST-API:et rolltilldelningar eller cmdleten Get-AzRoleDefinition.
$dtlUserRoleDefId = (Get-AzRoleDefinition -Name "DevTest Labs User").Id
Roll-ID:t definieras i avsnittet variabler och heter devTestLabUserRoleId
. I mallen är roll-ID inställt på: 111111111-0000-0000-11111111111111111111111111.
"devTestLabUserRoleId": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/111111111-0000-0000-11111111111111111')]",
Huvudnamns-ID
Huvudnamns-ID är objekt-ID för active directory-användaren, gruppen eller tjänstens huvudnamn som du vill lägga till som labbanvändare i labbet. Mallen använder ObjectId
som en parameter.
Du kan hämta ObjectId med hjälp av Cmdletarna Get-AzADUser, Get-AzADGroup eller Get-AzADServicePrincipal PowerShell. Dessa cmdletar returnerar en enda eller lista över Active Directory-objekt som har en ID-egenskap, vilket är det objekt-ID som du behöver. I följande exempel visas hur du hämtar objekt-ID för en enskild användare på ett företag.
$userObjectId = (Get-AzADUser -UserPrincipalName 'email@company.com').Id
Du kan också använda Microsoft Graph PowerShell-cmdletar som innehåller Get-MgUser, Get-MgGroup och Get-MgServicePrincipal.
Omfattning
Omfånget anger den resurs eller resursgrupp som rolltilldelningen ska gälla för. För resurser är omfånget i formuläret : /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/{provider-namespace}/{resource-type}/{resource-name}
. Mallen subscription().subscriptionId
använder funktionen för att fylla i subscription-id
delen och resourceGroup().name
mallfunktionen för att fylla i resource-group-name
delen. Att använda dessa funktioner innebär att labbet som du tilldelar en roll till måste finnas i den aktuella prenumerationen och i samma resursgrupp som malldistributionen görs till. Den sista delen, resource-name
, är namnet på labbet. Det här värdet tas emot via mallparametern i det här exemplet.
Rollomfånget i mallen:
"roleScope": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.DevTestLab/labs/', parameters('labName'))]"
Distribuera mallen
Skapa först en parameterfil (till exempel azuredeploy.parameters.json) som skickar värden för parametrar i Resource Manager-mallen.
{
"$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"principalId": {
"value": "aaaaaaaa-bbbb-cccc-1111-222222222222"
},
"labName": {
"value": "MyLab"
},
"roleAssignmentGuid": {
"value": "22222222-2222-2222-2222-222222222222"
}
}
}
Använd sedan PowerShell-cmdleten New-AzResourceGroupDeployment för att distribuera Resource Manager-mallen. Följande exempelkommando tilldelar en person, grupp eller ett huvudnamn för tjänsten till rollen DevTest Labs-användare för ett labb.
New-AzResourceGroupDeployment -Name "MyLabResourceGroup-$(New-Guid)" -ResourceGroupName 'MyLabResourceGroup' -TemplateParameterFile .\azuredeploy.parameters.json -TemplateFile .\azuredeploy.json
Kommentar
Gruppdistributionsnamnet och rolltilldelningens GUID måste vara unika. Om du försöker distribuera en resurstilldelning med hjälp av ett icke-unikt GUID visas ett RoleAssignmentUpdateNotPermitted
fel.
Om du planerar att använda mallen flera gånger för att lägga till flera Active Directory-objekt i användarrollen DevTest Labs för ditt labb kan du överväga att använda dynamiska objekt i PowerShell-kommandot. I följande exempel används cmdleten New-Guid för att ange resursgruppens distributionsnamn och rolltilldelnings-GUID dynamiskt.
New-AzResourceGroupDeployment -Name "MyLabResourceGroup-$(New-Guid)" -ResourceGroupName 'MyLabResourceGroup' -TemplateFile .\azuredeploy.json -roleAssignmentGuid "$(New-Guid)" -labName "MyLab" -principalId "aaaaaaaa-bbbb-cccc-1111-222222222222"
Använda Azure PowerShell
Som beskrivs i introduktionen skapar du en ny Azure-rolltilldelning för att lägga till en användare i DevTest Labs-användarrollen för labbet. I PowerShell gör du det med hjälp av cmdleten New-AzRoleAssignment . Den här cmdleten har många valfria parametrar som ger flexibilitet. , ObjectId
SigninName
, eller ServicePrincipalName
kan anges som det objekt som beviljas behörigheter.
Här är ett Azure PowerShell-exempelkommando som lägger till en användare i DevTest Labs-användarrollen i det angivna labbet.
New-AzRoleAssignment -UserPrincipalName <email@company.com> -RoleDefinitionName 'DevTest Labs User' -ResourceName '<Lab Name>' -ResourceGroupName '<Resource Group Name>' -ResourceType 'Microsoft.DevTestLab/labs'
Om du vill ange den resurs som behörigheter beviljas till kan du ange en kombination av ResourceName
, ResourceType
ResourceGroup
eller av parametern scope
. Oavsett vilken kombination av parametrar som används ger du tillräckligt med information till cmdleten för att unikt identifiera Active Directory-objektet (användare, grupp eller tjänstens huvudnamn), omfång (resursgrupp eller resurs) och rolldefinition.
Använda Azure CLI
I Azure CLI läggs en labbanvändare till i ett labb med hjälp az role assignment create
av kommandot . Mer information om Azure CLI-cmdletar finns i Lägga till eller ta bort Azure-rolltilldelningar med Azure CLI.
Objektet som beviljas åtkomst kan anges av parametrarna objectId
, signInName
, spn
. Det labb som objektet beviljas åtkomst till kan identifieras av scope
URL:en eller en kombination av parametrarna resource-name
, resource-type
och resource-group
.
Följande Azure CLI-exempel visar hur du lägger till en person i DevTest Labs-användarrollen för det angivna labbet.
az role assignment create --roleName "DevTest Labs User" --signInName <email@company.com> -–resource-name "<Lab Name>" --resource-type "Microsoft.DevTestLab/labs" --resource-group "<Resource Group Name>" --role Contributor --scope /subscriptions/<SubscriptionID>/resourceGroups/<ResourceGroupName>
Nästa steg
Mer information finns i följande artiklar: