Öğretici: Azure Resource Manager'a erişmek için Windows VM'de kullanıcı tarafından atanan yönetilen kimliği kullanma
Bu öğreticide, kullanıcı tarafından atanan kimliği oluşturma, bunu Windows Sanal Makinesine (VM) atama ve bu kimliği Azure Resource Manager API’sine erişmek için kullanma işlemleri açıklanır. Yönetilen Hizmet Kimlikleri Azure tarafından otomatik olarak yönetilir. Kimlik bilgilerini kodunuz içine eklemeye gerek kalmadan Microsoft Entra kimlik doğrulamasını destekleyen hizmetler için kimlik doğrulamasını etkinleştirir.
Şunları yapmayı öğreneceksiniz:
- Kullanıcı tarafından atanan yönetilen kimlik oluşturma
- Kullanıcı tarafından atanan kimliğinizi Windows VM’nize atama
- Azure Resource Manager’da Kaynak Grubuna kullanıcı tarafından atanan kimlik için erişim verme
- Kullanıcı tarafından atanan kimliği kullanarak erişim belirteci alma ve Azure Resource Manager çağrısı yapmak için bunu kullanma
- Kaynak Grubunun özelliklerini okuma
Not
Azure ile etkileşim kurmak için Azure Az PowerShell modülünü kullanmanızı öneririz. Başlamak için bkz. Azure PowerShell'i yükleme. Az PowerShell modülüne nasıl geçeceğinizi öğrenmek için bkz. Azure PowerShell’i AzureRM’den Az’ye geçirme.
Önkoşullar
- Azure kaynakları için yönetilen kimlikler özelliği hakkında bilgi sahibi değilseniz bu genel bakışı inceleyin. Azure hesabınız yoksa, devam etmeden önce ücretsiz bir hesaba kaydolun.
Azure portalda oturum açma
Bu öğreticideki gerekli kaynak oluşturma ve rol yönetimini adımlarını gerçekleştirmek için hesabınız uygun kapsamda (aboneliğiniz veya kaynak grubunuz) "Sahip" izinlerini gerektiriyor. Rol atama konusunda yardıma ihtiyacınız varsa bkz . Azure abonelik kaynaklarınıza erişimi yönetmek için Azure rolleri atama.
Örnek betikleri çalıştırmak için iki seçeneğiniz vardır:
- Kod bloklarının sağ üst köşesindeki Deneyin düğmesini kullanarak açabileceğiniz Azure Cloud Shell'i kullanın.
- Sonraki bölümde açıklandığı gibi betikleri Azure PowerShell ile yerel olarak çalıştırın.
Azure PowerShell'i yerel olarak yapılandırma
Bu makalede (Cloud Shell kullanmak yerine) Azure PowerShell'i yerel olarak kullanmak için aşağıdaki adımları tamamlayın:
Henüz yüklemediyseniz Azure PowerShell'in en son sürümünü yükleyin.
Azure'da Oturum Açın:
Connect-AzAccount
PowerShellGet'in en son sürümünü yükleyin.
Install-Module -Name PowerShellGet -AllowPrerelease
Sonraki adım için
Exit
bu komutu çalıştırdıktan sonra geçerli PowerShell oturumunu kapatmanız gerekebilir.Bu makalede kullanıcı tarafından atanan yönetilen kimlik işlemlerini gerçekleştirmek için modülün yayın öncesi sürümünü
Az.ManagedServiceIdentity
yükleyin:Install-Module -Name Az.ManagedServiceIdentity -AllowPrerelease
Etkinleştir
Kullanıcı tarafından atanan kimliği temel alan bir senaryo için aşağıdaki adımları gerçekleştirmeniz gerekir:
- Kimlik oluşturma
- Yeni oluşturulan kimliği atama
Kimlik oluşturma
Bu bölümde, kullanıcı tarafından atanan kimliğin nasıl oluşturulacağı gösterilmektedir. Kullanıcı tarafından atanan kimlik, tek başına bir Azure kaynağı olarak oluşturulur. New-AzUserAssignedIdentity kullanarak Azure, Microsoft Entra kiracınızda bir veya daha fazla Azure hizmet örneğine atanabilecek bir kimlik oluşturur.
Önemli
Kullanıcı tarafından atanan yönetilen kimlikler oluşturduğunuzda, ad bir harf veya sayı ile başlamalıdır ve alfasayısal karakterler, kısa çizgi (-) ve alt çizgi (_) birleşimini içerebilir. Bir sanal makineye veya sanal makine ölçek kümesine atamanın düzgün çalışması için ad 24 karakterle sınırlıdır. Daha fazla bilgi için bkz. SSS ve bilinen sorunlar.
New-AzUserAssignedIdentity -ResourceGroupName myResourceGroupVM -Name ID1
Yanıt, aşağıdaki örneğe benzer biçimde, oluşturulmuş kullanıcı tarafından atanan kimliğin ayrıntılarını içerir. Sonraki adımlarda kullanılacağından kullanıcı tarafından atanan kimliğin Id
ve ClientId
değerlerini not edin:
{
Id: /subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1
ResourceGroupName : myResourceGroupVM
Name: ID1
Location: westus
TenantId: 733a8f0e-ec41-4e69-8ad8-971fc4b533f8
PrincipalId: e591178e-b785-43c8-95d2-1397559b2fb9
ClientId: af825a31-b0e0-471f-baea-96de555632f9
ClientSecretUrl: https://control-westus.identity.azure.net/subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1/credentials?tid=733a8f0e-ec41-4e69-8ad8-971fc4b533f8&oid=e591178e-b785-43c8-95d2-1397559b2fb9&aid=af825a31-b0e0-471f-baea-96de555632f9
Type: Microsoft.ManagedIdentity/userAssignedIdentities
}
Kimlik atama
Bu bölümde, Kullanıcı tarafından atanan kimliğin Bir Windows VM'sine nasıl atandığı gösterilir. Kullanıcı tarafından atanan kimlik, istemciler tarafından birden çok Azure kaynağında kullanılabilir. Aşağıdaki komutları kullanarak kullanıcı tarafından atanan kimliği tek bir VM'ye atayın. -IdentityID
parametresi için önceki adımda döndürülen Id
özelliğini kullanın.
$vm = Get-AzVM -ResourceGroupName myResourceGroup -Name myVM
Update-AzVM -ResourceGroupName TestRG -VM $vm -IdentityType "UserAssigned" -IdentityID "/subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1"
Erişim verme
Bu bölümde, kullanıcı tarafından atanan kimliğinize Azure Resource Manager'daki bir Kaynak Grubuna nasıl erişim ver iletişimini verebilmek gösterilmektedir. Azure kaynakları için yönetilen kimlikler, kodunuzun Microsoft Entra kimlik doğrulamasını destekleyen kaynak API'lerinde kimlik doğrulaması yapmak üzere erişim belirteçleri istemek için kullanabileceği kimlikler sağlar. Bu öğreticide, kodunuz Azure Resource Manager API’sine erişir.
Kodunuzun API'ye erişebilmesi için önce Azure Resource Manager'da kaynağa kimlik erişimi vermeniz gerekir. Bu durumda, içinde VM'nin yer aldığı Kaynak Grubudur. <SUBSCRIPTIONID>
değerini ortamınıza uyacak şekilde güncelleştirin.
$spID = (Get-AzUserAssignedIdentity -ResourceGroupName myResourceGroupVM -Name ID1).principalid
New-AzRoleAssignment -ObjectId $spID -RoleDefinitionName "Reader" -Scope "/subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/"
Yanıt, aşağıdaki örneğe benzer biçimde, oluşturulan rol atamasının ayrıntılarını içerir:
RoleAssignmentId: /subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/providers/Microsoft.Authorization/roleAssignments/f9cc753d-265e-4434-ae19-0c3e2ead62ac
Scope: /subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM
DisplayName: ID1
SignInName:
RoleDefinitionName: Reader
RoleDefinitionId: acdd72a7-3385-48ef-bd42-f606fba81ae7
ObjectId: e591178e-b785-43c8-95d2-1397559b2fb9
ObjectType: ServicePrincipal
CanDelegate: False
Verilere erişme
Bir erişim belirteci alma
İpucu
Bu makaledeki adımlar, başladığınız portala göre biraz değişiklik gösterebilir.
Bu öğreticinin kalan bölümünde, daha önce oluşturmuş olduğumuz VM'den çalışacaksınız.
Azure Portal’ında oturum açın.
Portalda, Sanal Makineler'e ve Windows sanal makinesine gidin, ardından Genel Bakış'ta Bağlan'a tıklayın.
Windows VM'sini oluştururken kullandığınız Kullanıcı adı ve Parola’yı girin.
Artık sanal makineyle Uzak Masaüstü Bağlantısı'nı oluşturduğunuza göre, uzak oturumda PowerShell'i açın.
PowerShell'in
Invoke-WebRequest
kullanarak, Azure Resource Manager için erişim belirteci almak üzere Azure kaynakları uç noktası için yerel yönetilen kimliklere bir istek gönderin.client_id
Değer, kullanıcı tarafından atanan yönetilen kimliği oluşturduğunuzda döndürülen değerdir.$response = Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&client_id=af825a31-b0e0-471f-baea-96de555632f9&resource=https://management.azure.com/' -Method GET -Headers @{Metadata="true"} $content = $response.Content | ConvertFrom-Json $ArmToken = $content.access_token
Okuma özellikleri
Azure Resource Manager’a erişmek için önceki adımda alınan erişim belirtecini kullanın ve kullanıcı tarafından atanan kimliğiniz için erişim verdiğiniz Kaynak Grubunun özelliklerini okuyun. değerini ortamınızın abonelik kimliğiyle değiştirin <SUBSCRIPTION ID>
.
(Invoke-WebRequest -Uri https://management.azure.com/subscriptions/80c696ff-5efa-4909-a64d-f1b616f423ca/resourceGroups/myResourceGroupVM?api-version=2016-06-01 -Method GET -ContentType "application/json" -Headers @{Authorization ="Bearer $ArmToken"}).content
Yanıtta, aşağıdaki örneğe benzer belirli Kaynak Grubu bilgileri yer alır:
{"id":"/subscriptions/<SUBSCRIPTIONID>/resourceGroups/myResourceGroupVM","name":"myResourceGroupVM","location":"eastus","properties":{"provisioningState":"Succeeded"}}
Sonraki adımlar
Bu öğreticide, kullanıcı tarafından atanan bir kimlik oluşturmayı ve Azure Resource Manager API'sine erişmek için bunu bir Azure Sanal Makinesine eklemeyi öğrendiniz. Azure Resource Manager hakkında daha fazla bilgi edinmek için bkz: