Megosztás:


Tesztkörnyezet-felhasználó hozzáadása tesztkörnyezethez az Azure DevTest Labsban

Az Azure DevTest Labs lehetővé teszi önkiszolgáló fejlesztői tesztkörnyezetek gyors létrehozását az Azure Portal használatával. Ha azonban több csapat és több DevTest Labs-példány is van, a létrehozási folyamat automatizálása időt takaríthat meg. Az Azure Resource Manager-sablonok lehetővé teszik tesztkörnyezetek, tesztkörnyezeti virtuális gépek, egyéni rendszerképek, képletek létrehozását és felhasználók automatikus hozzáadását. Ez a cikk kifejezetten a felhasználók DevTest Labs-példányhoz való hozzáadására összpontosít.

Ha felhasználót szeretne hozzáadni egy tesztkörnyezethez, a felhasználót a tesztkörnyezet DevTest Labs-felhasználó szerepköréhez kell hozzáadnia. Ez a cikk bemutatja, hogyan automatizálhatja a felhasználók laborba való felvételét az alábbi módszerek egyikével:

  • Azure Resource Manager-sablonok
  • Azure PowerShell-parancsmagok
  • Azure parancssori felület (CLI).

Használjon Azure Resource Manager-sablonokat

Az alábbi Resource Manager-mintasablon egy tesztkörnyezet DevTest Labs-felhasználói szerepköréhez hozzáadni kívánt felhasználót határoz meg.

{
  "$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'))]"
      ]
    }
  ]
}

Ha a szerepkört ugyanabban a sablonban rendeli hozzá, amely a labort hozza létre, ne felejtsen el függőséget hozzáadni a szerepkör-hozzárendelési erőforrás és a tesztkörnyezet között. További információ: Függőségek meghatározása az Azure Resource Manager-sablonokban .

Szerepkör-hozzárendelési erőforrás adatai

A szerepkör-hozzárendelési erőforrásnak meg kell adnia a típust és a nevet.

Az első dolog, amit meg kell jegyezni, hogy az erőforrás típusa nem Microsoft.Authorization/roleAssignments olyan, mint egy erőforráscsoport esetében. Ehelyett az erőforrástípus a mintát {provider-namespace}/{resource-type}/providers/roleAssignmentsköveti. Ebben az esetben az erőforrás típusa a következő lesz Microsoft.DevTestLab/labs/providers/roleAssignments: .

A szerepkör-hozzárendelés nevének globálisan egyedinek kell lennie. A hozzárendelés neve a mintát {labName}/Microsoft.Authorization/{newGuid}használja. Ez newGuid a sablon paraméterértéke. Biztosítja, hogy a szerepkör-hozzárendelés neve egyedi legyen. Mivel a GRAFIKUS GUID-k létrehozásához nincsenek sablonfüggvények, saját maga kell létrehoznia egy GUID-azonosítót bármely GUID-generátor eszközzel.

A sablonban a szerepkör-hozzárendelés nevét a fullDevTestLabUserRoleName változó határozza meg. A sablon pontos sora a következő:

"fullDevTestLabUserRoleName": "[concat(parameters('labName'), '/Microsoft.Authorization/', parameters('roleAssignmentGuid'))]"

Szerepkör-hozzárendelési erőforrás tulajdonságai

Maga a szerepkör-hozzárendelés három tulajdonságot határoz meg. Szüksége van a roleDefinitionId, principalIdés scope.

Szerepkördefiníció

A szerepkördefiníció azonosítója a meglévő szerepkördefiníció sztringazonosítója. A szerepkör-azonosító az űrlapon /subscriptions/{subscription-id}/providers/Microsoft.Authorization/roleDefinitions/{role-definition-id}van.

Az előfizetés azonosítóját sablonfüggvény használatával subscription().subscriptionId szerezheti be.

Be kell szereznie a beépített szerepkör szerepkördefinícióját DevTest Labs User . A DevTest Labs felhasználói szerepkör GUID-azonosítójának lekéréséhez használhatja a Szerepkör-hozzárendelések REST API-t vagy a Get-AzRoleDefinition parancsmagot.

$dtlUserRoleDefId = (Get-AzRoleDefinition -Name "DevTest Labs User").Id

A szerepkör-azonosító a változók szakaszban van definiálva és elnevezve devTestLabUserRoleId. A sablonban a szerepkör azonosítója a következő: 1111111111-0000-0000-111111111111111111111.

"devTestLabUserRoleId": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/111111111-0000-0000-11111111111111111')]",

Egyszerű azonosító

Az egyszerű azonosító annak az Active Directory-felhasználónak, csoportnak vagy szolgáltatásnévnek az objektumazonosítója, amelyet laborfelhasználóként szeretne hozzáadni a laborhoz. A sablon paraméterként használja a ObjectId sablont.

Az ObjectId-et a Get-AzADUser, a Get-AzADGroup vagy a Get-AzADServicePrincipal PowerShell-parancsmagokkal szerezheti be. Ezek a parancsmagok egy vagy több Olyan Active Directory-objektumot ad vissza, amelyek azonosító tulajdonsággal rendelkeznek, ami a szükséges objektumazonosító. Az alábbi példa bemutatja, hogyan szerezheti be egyetlen felhasználó objektumazonosítóját egy vállalatnál.

$userObjectId = (Get-AzADUser -UserPrincipalName 'email@company.com').Id

Használhatja a Microsoft Graph PowerShell-parancsmagokat is, amelyek tartalmazzák a Get-MgUser, a Get-MgGroup és a Get-MgServicePrincipal parancsmagokat.

Hatókör

A hatókör azt az erőforrást vagy erőforráscsoportot határozza meg, amelyre a szerepkör-hozzárendelésnek vonatkoznia kell. Erőforrások esetén a hatókör a következő formában van: /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/{provider-namespace}/{resource-type}/{resource-name}. A sablon a subscription().subscriptionId függvény használatával tölti ki az subscription-id alkatrészt, a sablonfüggvényt pedig resourceGroup().name az resource-group-name alkatrész kitöltéséhez. Ezeknek a függvényeknek a használata azt jelenti, hogy az a tesztkörnyezet, amelyhez szerepkört rendel, az aktuális előfizetésben és ugyanabban az erőforráscsoportban kell lennie, amelyhez a sablon üzembe helyezése történik. Az utolsó rész resource-namea labor neve. Ez az érték a példában szereplő sablonparaméteren keresztül érkezik.

A sablon szerepkör-hatóköre:

"roleScope": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.DevTestLab/labs/', parameters('labName'))]"

A sablon telepítése

Először hozzon létre egy paraméterfájlt (például: azuredeploy.parameters.json), amely a Resource Manager-sablon paramétereinek értékeit adja át.

{
  "$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"
    }
  }
}

Ezután a New-AzResourceGroupDeployment PowerShell-parancsmaggal telepítse a Resource Manager-sablont. Az alábbi példaparancs egy személyt, csoportot vagy szolgáltatásnevet rendel egy tesztkörnyezet DevTest Labs-felhasználó szerepköréhez.

New-AzResourceGroupDeployment -Name "MyLabResourceGroup-$(New-Guid)" -ResourceGroupName 'MyLabResourceGroup' -TemplateParameterFile .\azuredeploy.parameters.json -TemplateFile .\azuredeploy.json

Feljegyzés

A csoport üzembehelyezési nevének és a szerepkör-hozzárendelés GUID azonosítójának egyedinek kell lennie. Ha nem egyedi GUID használatával próbál erőforrás-hozzárendelést üzembe helyezni, hibaüzenet jelenik meg RoleAssignmentUpdateNotPermitted .

Ha a sablont többször is használni szeretné, hogy több Active Directory-objektumot is hozzáadjon a tesztkörnyezet DevTest Labs-felhasználói szerepköréhez, fontolja meg a dinamikus objektumok használatát a PowerShell-parancsban. Az alábbi példa a New-Guid parancsmagot használja az erőforráscsoport központi telepítési nevének és a szerepkör-hozzárendelés GUID-jának dinamikus megadásához.

New-AzResourceGroupDeployment -Name "MyLabResourceGroup-$(New-Guid)" -ResourceGroupName 'MyLabResourceGroup' -TemplateFile .\azuredeploy.json -roleAssignmentGuid "$(New-Guid)" -labName "MyLab" -principalId "aaaaaaaa-bbbb-cccc-1111-222222222222"

Azure PowerShell használatával

A bevezetésben leírtaknak megfelelően létrehoz egy új Azure-szerepkör-hozzárendelést, amely hozzáad egy felhasználót a tesztkörnyezet DevTest Labs-felhasználó szerepköréhez. Ezt a PowerShellben a New-AzRoleAssignment parancsmaggal teheti meg. Ez a parancsmag számos választható paramétert biztosít a rugalmasság érdekében. A ObjectId, SigninNamevagy ServicePrincipalName megadható az engedélyekkel rendelkező objektumként.

Íme egy minta Azure PowerShell-parancs, amely hozzáad egy felhasználót a DevTest Labs felhasználói szerepköréhez a megadott tesztkörnyezetben.

New-AzRoleAssignment -UserPrincipalName <email@company.com> -RoleDefinitionName 'DevTest Labs User' -ResourceName '<Lab Name>' -ResourceGroupName '<Resource Group Name>' -ResourceType 'Microsoft.DevTestLab/labs'

Annak az erőforrásnak a megadásához, amelyhez engedélyeket adnak, megadható a ( ) ResourceGroupResourceTypekombinációjával ResourceNamevagy a scope paraméterrel. Bármilyen paraméterek kombinációját is használja, adjon meg elegendő információt a parancsmagnak az Active Directory-objektum (felhasználó, csoport vagy szolgáltatásnév), a hatókör (erőforráscsoport vagy erőforrás) és a szerepkör-definíció egyedi azonosításához.

Az Azure parancssori felület használatával

Az Azure CLI-ben a tesztkörnyezet felhasználójának hozzáadása a tesztkörnyezethez a az role assignment create parancs használatával történik. További információ az Azure CLI-parancsmagokról: Azure-szerepkör-hozzárendelések hozzáadása vagy eltávolítása az Azure CLI használatával.

A hozzáférést kapó objektumot a objectId, signInNameparaméterek spn adhatja meg. Az a tesztkörnyezet, amelyhez az objektum hozzáférést kap, az scope URL-cím vagy a resource-name, resource-typeés resource-group paraméterek kombinációja alapján azonosítható.

Az alábbi Azure CLI-példa bemutatja, hogyan vehet fel egy személyt a Megadott tesztkörnyezet DevTest Labs-felhasználói szerepköréhez.

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>

Következő lépések

Tekintse meg az alábbi cikkeket: