Öğ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 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:

  1. Henüz yüklemediyseniz Azure PowerShell'in en son sürümünü yükleyin.

  2. Azure'da Oturum Açın:

    Connect-AzAccount
    
  3. 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.

  4. 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.

  1. Azure Portal’ında oturum açın.

  2. Portalda, Sanal Makineler'e ve Windows sanal makinesine gidin, ardından Genel Bakış'ta Bağlan'a tıklayın.

  3. Windows VM'sini oluştururken kullandığınız Kullanıcı adı ve Parola’yı girin.

  4. Artık sanal makineyle Uzak Masaüstü Bağlantısı'nı oluşturduğunuza göre, uzak oturumda PowerShell'i açın.

  5. PowerShell'in Invoke-WebRequestkullanarak, 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: