Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Azure DevTest Labs, Azure portalını kullanarak hızlı bir şekilde self servis geliştirme testi ortamları oluşturmanıza olanak tanır. Ancak, çeşitli ekipleriniz ve birkaç DevTest Labs örneğiniz varsa oluşturma işlemini otomatikleştirmek zaman kazandırabilir. Azure Resource Manager şablonları laboratuvarlar, laboratuvar VM'leri, özel görüntüler, formüller oluşturmanıza ve kullanıcıları otomatik bir şekilde eklemenize olanak tanır. Bu makale özellikle DevTest Labs örneğine kullanıcı eklemeye odaklanır.
Laboratuvara kullanıcı eklemek için, kullanıcıyı laboratuvarın DevTest Labs Kullanıcı rolüne eklersiniz. Bu makalede, aşağıdaki yollardan birini kullanarak laboratuvara kullanıcı eklemeyi nasıl otomatikleştirebilirsiniz?
- Azure Resource Manager şablonları
- Azure PowerShell cmdlet’leri
- Azure CLI.
Azure Resource Manager şablonlarını kullanma
Aşağıdaki örnek Resource Manager şablonu, bir laboratuvarın DevTest Labs Kullanıcı rolüne eklenecek kullanıcıyı belirtir.
{
"$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'))]"
]
}
]
}
Rolü laboratuvarı oluşturan şablonda atıyorsanız rol atama kaynağı ile laboratuvar arasında bir bağımlılık eklemeyi unutmayın. Daha fazla bilgi için Azure Resource Manager Şablonlarında bağımlılıkları tanımlama makalesine bakın.
Rol AtamaSı Kaynak Bilgileri
Rol atama kaynağının türü ve adını belirtmesi gerekir.
Dikkat edilmesi gereken ilk şey, kaynağın türünün bir kaynak grubu için olduğu gibi olmadığıdır Microsoft.Authorization/roleAssignments . Bunun yerine, kaynak türü desenini {provider-namespace}/{resource-type}/providers/roleAssignmentsizler. Bu durumda kaynak türü olacaktır Microsoft.DevTestLab/labs/providers/roleAssignments.
Rol atama adının genel olarak benzersiz olması gerekir. Atamanın adı desenini {labName}/Microsoft.Authorization/{newGuid}kullanır.
newGuid, şablon için bir parametre değeridir. Rol atama adının benzersiz olmasını sağlar. GUID oluşturmak için şablon işlevi olmadığından, herhangi bir GUID oluşturucu aracını kullanarak kendiniz bir GUID oluşturmanız gerekir.
Şablonda rol atamasının adı değişkeni tarafından fullDevTestLabUserRoleName tanımlanır. Şablondaki tam satır:
"fullDevTestLabUserRoleName": "[concat(parameters('labName'), '/Microsoft.Authorization/', parameters('roleAssignmentGuid'))]"
Rol AtamaSı Kaynak Özellikleri
Rol ataması üç özelliği tanımlar. , principalIdve scopegerekirroleDefinitionId.
Rol Tanımı
Rol tanımı kimliği, mevcut rol tanımının dize tanımlayıcısıdır. Rol kimliği biçimindedir /subscriptions/{subscription-id}/providers/Microsoft.Authorization/roleDefinitions/{role-definition-id}.
Abonelik kimliği şablon işlevi kullanılarak subscription().subscriptionId elde edilir.
Yerleşik rol için DevTest Labs User rol tanımını almanız gerekir. DevTest Labs Kullanıcı rolünün GUID değerini almak için Rol Atamaları REST API'sini veya Get-AzRoleDefinition cmdlet'ini kullanabilirsiniz.
$dtlUserRoleDefId = (Get-AzRoleDefinition -Name "DevTest Labs User").Id
Rol kimliği değişkenler bölümünde tanımlanır ve olarak adlandırılır devTestLabUserRoleId. Şablonda rol kimliği şu şekilde ayarlanır: 1111111111-0000-0000-11111111111111111111111.
"devTestLabUserRoleId": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/111111111-0000-0000-11111111111111111')]",
Asıl Kimlik
Asıl Kimlik, laboratuvar kullanıcısı olarak laboratuvar kullanıcısı olarak eklemek istediğiniz Active Directory kullanıcısının, grubunun veya hizmet sorumlusunun nesne kimliğidir. Şablon parametresi olarak öğesini ObjectId kullanır.
ObjectId değerini Get-AzADUser, Get-AzADGroup veya Get-AzADServicePrincipal PowerShell cmdlet'lerini kullanarak alabilirsiniz. Bu cmdlet'ler, ihtiyacınız olan nesne kimliği olan id özelliğine sahip active Directory nesnelerinin tek bir listesini veya listesini döndürür. Aşağıdaki örnekte, bir şirkette tek bir kullanıcının nesne kimliğini nasıl edindiğiniz gösterilmektedir.
$userObjectId = (Get-AzADUser -UserPrincipalName 'email@company.com').Id
Get-MgUser, Get-MgGroup ve Get-MgServicePrincipal içeren Microsoft Graph PowerShell cmdlet'lerini de kullanabilirsiniz.
Kapsam
Kapsam, rol atamasının uygulanacağı kaynağı veya kaynak grubunu belirtir. Kaynaklar için kapsam şu biçimdedir: /subscriptions/{subscription-id}/resourceGroups/{resource-group-name}/providers/{provider-namespace}/{resource-type}/{resource-name}. Şablon, bölümü doldurmak için işlevini ve resourceGroup().name bölümü doldurmak subscription-idresource-group-name için şablon işlevini kullanırsubscription().subscriptionId. Bu işlevleri kullanmak, rol atadığınız laboratuvarın geçerli abonelikte ve şablon dağıtımının yapıldığı kaynak grubunda bulunması gerektiği anlamına gelir. Son bölüm olan resource-name, laboratuvarın adıdır. Bu değer, bu örnekteki şablon parametresi aracılığıyla alınır.
Şablondaki rol kapsamı:
"roleScope": "[concat('/subscriptions/', subscription().subscriptionId, '/resourceGroups/', resourceGroup().name, '/providers/Microsoft.DevTestLab/labs/', parameters('labName'))]"
Şablon dağıtma
İlk olarak, Resource Manager şablonundaki parametrelerin değerlerini geçiren bir parametre dosyası (örneğin: azuredeploy.parameters.json) oluşturun.
{
"$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"
}
}
}
Ardından, Resource Manager şablonunu dağıtmak için New-AzResourceGroupDeployment PowerShell cmdlet'ini kullanın. Aşağıdaki örnek komut, bir laboratuvar için DevTest Labs Kullanıcı rolüne bir kişi, grup veya hizmet sorumlusu atar.
New-AzResourceGroupDeployment -Name "MyLabResourceGroup-$(New-Guid)" -ResourceGroupName 'MyLabResourceGroup' -TemplateParameterFile .\azuredeploy.parameters.json -TemplateFile .\azuredeploy.json
Not
Grup dağıtımı adı ve rol atamaSı GUID'i benzersiz olmalıdır. Benzersiz olmayan bir GUID kullanarak kaynak ataması dağıtmaya çalışırsanız bir RoleAssignmentUpdateNotPermitted hata görürsünüz.
Laboratuvarınızın DevTest Labs Kullanıcı rolüne birkaç Active Directory nesnesi eklemek için şablonu birkaç kez kullanmayı planlıyorsanız PowerShell komutunuzda dinamik nesneleri kullanmayı göz önünde bulundurun. Aşağıdaki örnek, kaynak grubu dağıtım adını ve rol atama GUID'sini dinamik olarak belirtmek için New-Guid cmdlet'ini kullanır.
New-AzResourceGroupDeployment -Name "MyLabResourceGroup-$(New-Guid)" -ResourceGroupName 'MyLabResourceGroup' -TemplateFile .\azuredeploy.json -roleAssignmentGuid "$(New-Guid)" -labName "MyLab" -principalId "aaaaaaaa-bbbb-cccc-1111-222222222222"
Azure PowerShell kullanma
Giriş bölümünde açıklandığı gibi, laboratuvarın DevTest Labs Kullanıcı rolüne kullanıcı eklemek için yeni bir Azure rol ataması oluşturursunuz. PowerShell'de bunu New-AzRoleAssignment cmdlet'ini kullanarak yaparsınız. Bu cmdlet'in esneklik sağlamak için birçok isteğe bağlı parametresi vardır.
ObjectId, SigninNameveya ServicePrincipalName izinleri verilen nesne olarak belirtilebilir.
Aşağıda, belirtilen laboratuvardaki DevTest Labs Kullanıcı rolüne kullanıcı ekleyen örnek bir Azure PowerShell komutu verilmiştir.
New-AzRoleAssignment -UserPrincipalName <email@company.com> -RoleDefinitionName 'DevTest Labs User' -ResourceName '<Lab Name>' -ResourceGroupName '<Resource Group Name>' -ResourceType 'Microsoft.DevTestLab/labs'
İzinlerin verildiği kaynağı belirtmek için , ResourceTypeResourceGroup veya parametresinin ResourceNamebir bileşimiyle scope belirtilebilir. Hangi parametre bileşimi kullanılırsa kullanılsın, cmdlet'ine Active Directory nesnesini (kullanıcı, grup veya hizmet sorumlusu), kapsamı (kaynak grubu veya kaynak) ve rol tanımını benzersiz olarak tanımlamak için yeterli bilgi sağlayın.
Azure CLI kullanma
Azure CLI'da laboratuvar kullanıcısını laboratuvara ekleme işlemi komutu kullanılarak az role assignment create gerçekleştirilir. Azure CLI cmdlet'leri hakkında daha fazla bilgi için bkz . Azure CLI kullanarak Azure rol atamaları ekleme veya kaldırma.
Erişim verilen nesne , , signInNamespn parametreleri tarafından objectIdbelirtilebilir. Nesneye erişim verilen laboratuvar url'si veya , resource-typeve resource-group parametrelerinin resource-namebirleşimiyle scope tanımlanabilir.
Aşağıdaki Azure CLI örneği, belirtilen Laboratuvar için DevTest Labs Kullanıcı rolüne nasıl kişi ekleneceğini gösterir.
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>
Sonraki adımlar
Aşağıdaki makalelere bakın: