Aracılığıyla paylaş


Öğretici: Azure kaynaklarına erişmek için Windows VM/VMSS kullanma

Azure kaynakları için yönetilen kimlikler, Microsoft Entra Id'nin bir özelliğidir. Azure kaynakları için yönetilen kimlikleri destekleyen Azure hizmetlerinin her biri kendi zaman çizelgesine tabidir. Başlamadan önce kaynağınıza yönelik yönetilen kimliklerin kullanılabilirlik durumunu ve bilinen sorunları gözden geçirdiğinizden emin olun.

Önkoşullar

  • Yönetilen kimlikleri anlama. Azure kaynakları için yönetilen kimlikler özelliği hakkında bilgi sahibi değilseniz bu genel bakışı inceleyin.
  • Bir Azure hesabı, ücretsiz bir hesaba kaydolun.
  • Gerekli kaynak oluşturma ve rol yönetimi adımlarını gerçekleştirmek için uygun kapsamdaki sahip izinleri (aboneliğiniz veya kaynak grubunuz). Rol atama konusunda yardıma ihtiyacınız varsa bkz . Azure abonelik kaynaklarınıza erişimi yönetmek için Azure rolleri atama.
  • Sistem tarafından atanan yönetilen kimliklerin etkinleştirildiği bir Windows sanal makinesi (VM).

Azure Data Lake Store'a erişmek için Windows VM sistem tarafından atanan yönetilen kimliği kullanma

Bu öğreticide, Azure Data Lake Store'a erişmek üzere Windows sanal makinesi (VM) için sistem tarafından atanan yönetilen kimliğin nasıl kullanılacağı gösterilmektedir. Yönetilen kimlikler Azure tarafından otomatik olarak yönetilir. Uygulamanızın kodunuza kimlik bilgileri eklemeye gerek kalmadan Microsoft Entra kimlik doğrulamasını destekleyen hizmetlerde kimlik doğrulaması yapmasını sağlar.

Bu makalede şunları yapmayı öğreneceksiniz:

  • Azure Data Lake Store'a VM'niz için erişim verme
  • VM kimliğini kullanarak erişim belirteci alma ve Azure Data Lake Store'a erişmek için bunu kullanma

Etkinleştir

Sistem tarafından atanan yönetilen kimliği etkinleştirmek tek tıklamayla yapılan bir deneyimdir. Vm oluşturulurken veya mevcut bir VM'nin özelliklerinde etkinleştirebilirsiniz.

Sistem tarafından atanan durumunu açabileceğiniz bir sanal makine için Sistem tarafından atanan sekmesini gösteren ekran görüntüsü.

Sistem tarafından atanan yönetilen kimliği yeni bir VM'de etkinleştirmek için:

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

  2. Sistem tarafından atanan kimliğin etkinleştirildiği bir sanal makine oluşturun.

Erişim verme

VM'nize Azure Data Lake Store'daki dosyalara ve klasörlere erişim vekleyebilirsiniz. Bu adımda, mevcut Data Lake Store’u kullanabilir veya yeni bir tane oluşturabilirsiniz.

Azure portalını kullanarak yeni bir Data Lake Store oluşturmak için bkz . Azure Data Lake Store hızlı başlangıcı. Azure Data Lake Store belgeleri arasında Azure CLI'nin ve Azure PowerShell'in kullanıldığı hızlı başlangıçlar da vardır.

Data Lake Store'unuzda yeni bir klasör oluşturun ve VM'nizin sistem tarafından atanan kimlik iznini verin. Kimliğin bu klasördeki dosyaları okuma, yazma ve yürütme haklarına sahip olması gerekir:

  1. Azure portalında sol gezinti bölmesinde Data Lake Store'ı seçin.
  2. Bu öğretici için kullanmak istediğiniz Data Lake Store'ı seçin.
  3. Komut çubuğunda Veri Gezgini seçin.
  4. Data Lake Store’un kök klasörü seçilidir. Komut çubuğunda Access'i seçin.
  5. Ekle'yi seçin. Seç alanına VM'nizin adını girin (örneğin, DevTestVM). Arama sonuçlarından VM'nizi seçin ve ardından Seç'i seçin.
  6. İzinleri Seç'i ve ardından Okuma ve Yürütme'yi seçin. Bu klasöre ekleyin ve ardından Yalnızca erişim izni'ni seçin.
  7. Tamam'ı seçin ve erişim dikey penceresini kapatın. İzin başarıyla eklenmiş olmalıdır.
  8. Ardından yeni bir klasör oluşturun. Komut çubuğunda Yeni Klasör'e tıklayın ve yeni klasöre bir ad verin. Örneğin, TestFolder ve ardından Tamam'ı seçin.
  9. Oluşturduğunuz klasörü seçin ve ardından komut çubuğunda Access'i seçin.
  10. Ekle'yi seçin, ardından Seç alanına VM'nizin adını girin ve Seç'i seçin.
  11. İzinleri Seç'i ve ardından Okuma, Yazma ve Yürütme'yi seçin. Bu klasöre ekleyin, ardından Erişim izni girdisi ve varsayılan izin girdisi olarak ekleyin.
  12. Tamam'ı seçin. İzin başarıyla eklenmelidir.

VM sistem tarafından atanan yönetilen kimliği artık oluşturduğunuz klasördeki dosyalar üzerinde tüm işlemleri gerçekleştirebilir. Data Lake Store'a erişimi yönetme hakkında bilgi için bkz . Data Lake Store'da Erişim Denetimi.

Verilere erişme

Azure Data Lake Store, Azure kaynakları için yönetilen kimlikler kullanılarak elde edilen erişim belirteçlerini doğrudan kabul edebilmesi için Microsoft Entra kimlik doğrulamasını yerel olarak destekler. Data Lake Store dosya sisteminde kimlik doğrulaması yapmak için, Microsoft Entra Id tarafından verilen bir erişim belirtecini Yetkilendirme üst bilgisindeki Data Lake Store dosya sistemi uç noktanıza gönderirsiniz. Üst bilgi biçimindedir Bearer <ACCESS_TOKEN_VALUE>.

Microsoft Entra kimlik doğrulaması için Data Lake Store desteği hakkında daha fazla bilgi edinmek için bkz . Microsoft Entra Kimliğini kullanarak Data Lake Store ile kimlik doğrulaması.

Not

Data Lake Store dosya sistemi istemci SDK'ları henüz Azure kaynakları için yönetilen kimlikleri desteklememektedir.

Bu öğreticide, REST istekleri göndermek için PowerShell kullanarak Data Lake Store dosya sistemi REST API'sinde kimlik doğrulaması yaparsınız. Kimlik doğrulamasında VM sistem tarafından atanan yönetilen kimliğini kullanmak için VM’den istek göndermelisiniz.

  1. Portalda Sanal Makineler gidin, Windows VM'nize gidin. Ardından Genel Bakış'ta Bağlan'ı seçin.

  2. Windows VM'sini oluştururken eklediğiniz Kullanıcı Adı ve Parola bilgilerinizi girin.

  3. VM ile bir Uzak Masaüstü Bağlantısı oluşturduğunuza göre, uzak oturumda PowerShell'i açın.

  4. PowerShell Invoke-WebRequest cmdlet'ini kullanarak Azure Data Lake Store için erişim belirteci almak üzere Azure kaynakları uç noktasına yönelik yerel yönetilen kimliklere bir istek gönderin. Data Lake Store'un kaynak tanımlayıcısı şeklindedir https://datalake.azure.net/. Data Lake kaynak tanımlayıcısı üzerinde tam bir eşleşme yapar, bu nedenle sondaki eğik çizgi önemlidir.

    $response = Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fdatalake.azure.net%2F' -Method GET -Headers @{Metadata="true"}
    

    Yanıtı JSON nesnesinden PowerShell nesnesine dönüştürün.

    $content = $response.Content | ConvertFrom-Json
    

    Yanıttan erişim belirtecini ayıklayın.

    $AccessToken = $content.access_token
    
  5. Her şeyin doğru yapılandırıldığından denetleyin. PowerShell Invoke-WebRequest cmdlet'ini kullanarak Data Lake Store'unuzun REST uç noktasına kök klasördeki klasörleri listeleme isteğinde bulunabilirsiniz. Yetkilendirme üst bilgisindeki dizenin Bearer büyük "B" olması önemlidir. Data Lake Store'unuzun adını Data Lake Store'unuzun Genel Bakış bölümünde bulabilirsiniz.

    Invoke-WebRequest -Uri https://<YOUR_ADLS_NAME>.azuredatalakestore.net/webhdfs/v1/?op=LISTSTATUS -Headers @{Authorization="Bearer $AccessToken"}
    

    Başarılı bir yanıt şöyle görünür:

    StatusCode        : 200
    StatusDescription : OK
    Content           : {"FileStatuses":{"FileStatus":[{"length":0,"pathSuffix":"TestFolder","type":"DIRECTORY", "blockSize":0,"accessTime":1507934941392, "modificationTime":1507944835699,"replication":0, "permission":"770","ow..."
    RawContent        : HTTP/1.1 200 OK
                        Pragma: no-cache
                        x-ms-request-id: b4b31e16-e968-46a1-879a-3474aa7d4528
                        x-ms-webhdfs-version: 17.04.22.00
                        Status: 0x0
                        X-Content-Type-Options: nosniff
                        Strict-Transport-Security: ma...
    Forms             : {}
    Headers           : {[Pragma, no-cache], [x-ms-request-id, b4b31e16-e968-46a1-879a-3474aa7d4528],
                        [x-ms-webhdfs-version, 17.04.22.00], [Status, 0x0]...}
    Images            : {}
    InputFields       : {}
    Links             : {}
    ParsedHtml        : System.__ComObject
    RawContentLength  : 556
    
  6. Şimdi Data Lake Store'unuza dosya yüklemeyi deneyin. Önce karşıya yüklenecek dosyayı oluşturun.

    echo "Test file." > Test1.txt
    
  7. PowerShell Invoke-WebRequest cmdlet'ini kullanarak Data Lake Store'unuzun REST uç noktasına dosyayı daha önce oluşturduğunuz klasöre yükleme isteğinde bulunabilirsiniz. İstek iki adımdan oluşur.

    1. İstekte bulunun ve dosyanın karşıya yüklenmesi gereken yere yeniden yönlendirme alın.
    2. dosyasını yükleme. Bu öğreticide belirtilenden farklı değerler kullandıysanız klasör ve dosyanın adını uygun şekilde ayarlamayı unutmayın.
    $HdfsRedirectResponse = Invoke-WebRequest -Uri https://<YOUR_ADLS_NAME>.azuredatalakestore.net/webhdfs/v1/TestFolder/Test1.txt?op=CREATE -Method PUT -Headers @{Authorization="Bearer $AccessToken"} -Infile Test1.txt -MaximumRedirection 0
    

    değerini $HdfsRedirectResponseincelerseniz aşağıdaki yanıt gibi görünmelidir:

    PS C:\> $HdfsRedirectResponse
    
    StatusCode        : 307
    StatusDescription : Temporary Redirect
    Content           : {}
    RawContent        : HTTP/1.1 307 Temporary Redirect
                        Pragma: no-cache
                        x-ms-request-id: b7ab492f-b514-4483-aada-4aa0611d12b3
                        ContentLength: 0
                        x-ms-webhdfs-version: 17.04.22.00
                        Status: 0x0
                        X-Content-Type-Options: nosn...
    Headers           : {[Pragma, no-cache], [x-ms-request-id, b7ab492f-b514-4483-aada-4aa0611d12b3], 
                        [ContentLength, 0], [x-ms-webhdfs-version, 17.04.22.00]...}
    RawContentLength  : 0
    

    Yeniden yönlendirme uç noktasına istek göndererek karşıya yüklemeyi tamamlayın:

    Invoke-WebRequest -Uri $HdfsRedirectResponse.Headers.Location -Method PUT -Headers @{Authorization="Bearer $AccessToken"} -Infile Test1.txt -MaximumRedirection 0
    

    Başarılı bir yanıt şuna benzer:

    StatusCode        : 201
    StatusDescription : Created
    Content           : {}
    RawContent        : HTTP/1.1 201 Created
                        Pragma: no-cache
                        x-ms-request-id: 1e70f36f-ead1-4566-acfa-d0c3ec1e2307
                        ContentLength: 0
                        x-ms-webhdfs-version: 17.04.22.00
                        Status: 0x0
                        X-Content-Type-Options: nosniff
                        Strict...
    Headers           : {[Pragma, no-cache], [x-ms-request-id, 1e70f36f-ead1-4566-acfa-d0c3ec1e2307],
                        [ContentLength, 0], [x-ms-webhdfs-version, 17.04.22.00]...}
    RawContentLength  : 0
    

Son olarak, dosyaları eklemek ve indirmek için diğer Data Lake Store dosya sistemi API'lerini ve daha fazlasını kullanabilirsiniz.

Devre Dışı Bırak

VM'nizde sistem tarafından atanan kimliği devre dışı bırakmak için sistem tarafından atanan kimliğin durumunu Kapalı olarak ayarlayın.

Sistem tarafından atanan durumunu kapatabileceğiniz bir sanal makine için Sistem tarafından atanan sekmesini gösteren ekran görüntüsü.

Azure Depolama’ya erişmek için Windows VM sistem tarafından atanan yönetilen kimliği kullanma

Bu öğreticide, Azure Depolama'ya erişmek amacıyla, Windows sanal makinesi (VM) için sistem tarafından atanmış bir yönetilen kimliği nasıl kullanacağınız gösterilmektedir. Şunları yapmayı öğreneceksiniz:

  • Depolama hesabında bir blob kapsayıcı oluşturma
  • Windows VM’nizin sistem tarafından atanan yönetilen kimliğine depolama hesabı için erişim izni verin
  • Erişim elde edin ve bu erişimi Azure Depolama’yı çağırmak için kullanın

Etkinleştir

Sistem tarafından atanan yönetilen kimliği etkinleştirmek tek tıklamayla yapılan bir deneyimdir. Vm oluşturulurken veya mevcut bir VM'nin özelliklerinde etkinleştirebilirsiniz.

Sistem tarafından atanan durumunu açabileceğiniz bir sanal makine için Sistem tarafından atanan sekmesini gösteren ekran görüntüsü.

Sistem tarafından atanan yönetilen kimliği yeni bir VM'de etkinleştirmek için:

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

  2. Sistem tarafından atanan kimliğin etkinleştirildiği bir sanal makine oluşturun.

Depolama hesabı oluştur

Bu bölümde bir depolama hesabı oluşturursunuz.

  1. Azure portalının sol üst köşesinde bulunan + Kaynak oluştur düğmesini seçin.

  2. Depolama'yı, ardından Depolama hesabı - blob, dosya, tablo, kuyruk'ı seçin.

  3. Ad alanına depolama hesabı için bir ad girin.

  4. Dağıtım modeli ve Hesap türü, Kaynak yöneticisi ve Depolama (genel amaçlı v1) olarak ayarlanmalıdır.

  5. Abonelik ve Kaynak Grubu değerlerinin, önceki adımda VM'nizi oluştururken belirttiklerinizle eşleştiğinden emin olun.

  6. Oluştur'u belirleyin.

    Yeni depolama hesabının nasıl oluşturulacağını gösteren ekran görüntüsü.

Bir blob kapsayıcı oluşturma ve depolama hesabına dosya yükleme

Dosyalar blob depolama alanı gerektirdiğinden dosyasının depolanacağı bir blob kapsayıcısı oluşturmanız gerekir. Ardından yeni depolama hesabındaki blob kapsayıcısına bir dosya yükleyin.

  1. Yeni oluşturduğunuz depolama hesabınıza gidin.

  2. Blob Hizmeti bölümünde Kapsayıcılar'ı seçin.

  3. Sayfanın üst kısmındaki + Kapsayıcı'ya tıklayın.

  4. Yeni kapsayıcı alanına kapsayıcı için bir ad girin, ardından Genel erişim düzeyi seçeneğinde varsayılan değeri koruyun.

    Depolama kapsayıcısı oluşturmayı gösteren ekran görüntüsü.

  5. Tercih ettiğiniz bir düzenleyiciyi kullanarak yerel makinenizde hello world.txt başlıklı bir dosya oluşturun. Dosyayı açın ve Merhaba dünya! metnini ekleyin ve kaydedin.

  6. Dosyayı yeni oluşturulan kapsayıcıya yüklemek için kapsayıcı adını seçin ve ardından Karşıya Yükle'yi seçin.

  7. Blobu karşıya yükle bölmesindeki Dosyalar bölümünde klasör simgesini seçin ve yerel makinenizdeki dosya hello_world.txt göz atın. Ardından dosyayı ve Karşıya Yükle'yi seçin. Metin dosyasını karşıya yükleme ekranını gösteren ekran görüntüsü.

Erişim verme

Bu bölümde, VM'nize Azure Depolama kapsayıcısına nasıl erişim ver işleminin nasıl yapılacağını gösterilmektedir. Azure depolama blobundaki verileri almak için VM’nin sistem tarafından atanan yönetilen kimliğini kullanabilirsiniz.

  1. Yeni oluşturduğunuz depolama hesabınıza gidin.

  2. Erişim denetimi (IAM) öğesini seçin.

  3. Rol ataması ekle sayfasını açmak için Rol ataması ekle'yi> seçin.

  4. Aşağıdaki rolü atayın. Ayrıntılı adımlar için bkz. Azure portalı kullanarak Azure rolleri atama.

    Ayar Value
    Role Depolama Blob Verileri Okuyucusu
    Şu kişiye erişim ata: Yönetilen kimlik
    Sistem tarafından atanan Sanal Makine
    Seç <sanal makineniz>

    Rol ataması ekleme sayfasını gösteren ekran görüntüsü.

Verilere erişme

Azure Depolama, yönetilen kimlik kullanılarak alınan erişim belirteçlerini doğrudan kabul edebilmesi için Microsoft Entra kimlik doğrulamasını yerel olarak destekler. Bu yaklaşım Azure Depolama'nın Microsoft Entra ID ile tümleştirmesini kullanır ve bağlantı dizesi kimlik bilgilerini sağlamaktan farklıdır.

Aşağıda Azure Depolama'ya bağlantı açmaya ilişkin bir .NET kod örneği verilmişti. Örnek bir erişim belirteci kullanır ve daha önce oluşturduğunuz dosyanın içeriğini okur. Bu kodun, VM’nin yönetilen kimlik uç noktasına erişebilmesi için VM üzerinde çalıştırılması gerekir. Erişim belirteci yöntemini kullanmak için .NET Framework 4.6 veya üzeri gereklidir. <URI to blob file> değerini uygun şekilde değiştirin. Blob depolama alanına oluşturup yüklediğiniz dosyaya giderek ve Özellikler’in altındaki URL’yi Genel bakış sayfasına kopyalayarak bu değeri alabilirsiniz.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Net;
using System.Web.Script.Serialization;
using Microsoft.WindowsAzure.Storage.Auth;
using Microsoft.WindowsAzure.Storage.Blob;

namespace StorageOAuthToken
{
    class Program
    {
        static void Main(string[] args)
        {
            //get token
            string accessToken = GetMSIToken("https://storage.azure.com/");

            //create token credential
            TokenCredential tokenCredential = new TokenCredential(accessToken);

            //create storage credentials
            StorageCredentials storageCredentials = new StorageCredentials(tokenCredential);

            Uri blobAddress = new Uri("<URI to blob file>");

            //create block blob using storage credentials
            CloudBlockBlob blob = new CloudBlockBlob(blobAddress, storageCredentials);

            //retrieve blob contents
            Console.WriteLine(blob.DownloadText());
            Console.ReadLine();
        }

        static string GetMSIToken(string resourceID)
        {
            string accessToken = string.Empty;
            // Build request to acquire MSI token
            HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=" + resourceID);
            request.Headers["Metadata"] = "true";
            request.Method = "GET";

            try
            {
                // Call /token endpoint
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();

                // Pipe response Stream to a StreamReader, and extract access token
                StreamReader streamResponse = new StreamReader(response.GetResponseStream());
                string stringResponse = streamResponse.ReadToEnd();
                JavaScriptSerializer j = new JavaScriptSerializer();
                Dictionary<string, string> list = (Dictionary<string, string>)j.Deserialize(stringResponse, typeof(Dictionary<string, string>));
                accessToken = list["access_token"];
                return accessToken;
            }
            catch (Exception e)
            {
                string errorText = String.Format("{0} \n\n{1}", e.Message, e.InnerException != null ? e.InnerException.Message : "Acquire token failed");
                return accessToken;
            }
        }
    }
}

Yanıt, dosyanın içeriklerini kapsar:

Hello world! :)

Devre Dışı Bırak

VM'nizde sistem tarafından atanan kimliği devre dışı bırakmak için sistem tarafından atanan kimliğin durumunu Kapalı olarak ayarlayın.

Sistem tarafından atanan durumunu kapatabileceğiniz bir sanal makine için Sistem tarafından atanan sekmesini gösteren ekran görüntüsü.

Sas kimlik bilgileri aracılığıyla Azure Depolama'ya erişmek için Windows VM sistem tarafından atanan yönetilen kimliği kullanma

Bu öğreticide, depolama Paylaşılan Erişim İmzası (SAS) kimlik bilgilerini almak için Windows sanal makinesi (VM) için sistem tarafından atanan kimliğin nasıl kullanılacağı gösterilmektedir.

Hizmet SAS'sı, depolama hesabındaki nesnelere sınırlı süre ve belirli bir hizmet (bu örnekte blob hizmeti) için sınırlı erişim verme olanağı sağlar. SAS bunu hesap erişim anahtarını göstermeden yapar. Depolama işlemleri için sas kimlik bilgilerini her zamanki gibi kullanabilirsiniz; örneğin, bir depolama SDK'sı kullanılırken. Bu öğreticide, Azure Depolama PowerShell kullanarak bir blobu karşıya yükleme ve indirme işlemleri gösterilmektedir.

Nasıl yapılacağını öğrenin:

  • Depolama hesabı oluşturma
  • VM'nize Resource Manager'da yer alan depolama hesabı SAS için erişim verme
  • VM'nizin kimliğini kullanarak erişim belirteci alma ve Resource Manager'dan SAS almak için bu belirteci kullanma

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.

Depolama hesabı oluşturma

Henüz bir depolama hesabınız yoksa bir depolama hesabı oluşturmanız gerekir. Aksi takdirde, vm'nizin sistem tarafından atanan yönetilen kimliğine mevcut bir depolama hesabının SAS kimlik bilgilerine erişim vermek için bu adımları izleyin.

  1. Depolama'yı ve ardından Depolama Hesabı'yı seçin.

  2. Depolama hesabı oluştur panelinde depolama hesabı için bir ad girin.

  3. Dağıtım modeli ve Hesap türünün Resource Manager ve Genel amaçlı olarak ayarlandığından emin olun.

  4. Abonelik ve Kaynak Grubu'nun önceki adımda VM'nizi oluştururken belirttiğiniz öğelerle eşleştiğinden emin olun.

  5. Depolama hesabınızı oluşturmak için Oluştur'u seçin.

    Yeni depolama hesabının nasıl oluşturulacağını gösteren ekran görüntüsü.

Depolama hesabında bir blob kapsayıcısı oluşturma

Öğreticinin ilerleyen bölümlerinde yeni depolama hesabına bir dosya yükleyip indireceksiniz. Dosyalar blob depolama gerektirdiğinden, dosyayı depolamak için bir blob kapsayıcısı oluşturmanız gerekir.

  1. Yeni oluşturduğunuz depolama hesabınıza gidin.

  2. Sol paneldeki Blob hizmeti'nin altındaki Kapsayıcılar bağlantısını seçin.

  3. Sayfanın üst kısmındaki + Kapsayıcı'yı seçin, ardından Yeni kapsayıcı paneli görünmelidir.

  4. Kapsayıcıya bir ad verin, erişim düzeyini belirleyin ve ardından Tamam'ı seçin. Burada belirttiğiniz ad, öğreticinin ilerleyen bölümlerinde kullanılır.

    Depolama kapsayıcısı oluşturmayı gösteren ekran görüntüsü.

Depolama SAS değerini kullanmak için VM'nize sistem tarafından atanan yönetilen kimliği erişimi verme

Azure Depolama, Microsoft Entra kimlik doğrulamayı yerel olarak desteklemez. Ancak, Resource Manager'dan depolama SAS'sini almak için yönetilen kimlik kullanabilir ve ardından depolamaya erişmek için SAS'yi kullanabilirsiniz. Bu adımda, VM sistem tarafından atanan yönetilen kimliğinize depolama hesabının SAS değeri için erişim verirsiniz.

  1. Yeni oluşturulan depolama hesabınıza geri gidin.

  2. Erişim denetimi (IAM) öğesini seçin.

  3. Rol ataması ekle sayfasını açmak için Rol ataması ekle'yi> seçin.

  4. Aşağıdaki rolü atayın. Ayrıntılı adımlar için bkz. Azure portalı kullanarak Azure rolleri atama.

    Ayar Value
    Role Depolama hesabı katkıda bulunanı
    Şu kişiye erişim ata: Yönetilen kimlik
    Sistem tarafından atanan Sanal makine
    Seç <Windows sanal makineniz>

    Rol ataması ekleme sayfasını gösteren ekran görüntüsü.

VM'nin kimliğini kullanarak erişim belirteci alma ve Azure Resource Manager'ı çağırmak için bu belirteci kullanma

Bu öğreticinin geri kalanında VM'nizden çalışırsınız. Bu kısımda Azure Resource Manager PowerShell cmdlet'lerini kullanmanız gerekir. PowerShell yüklü değilse devam etmeden önce en son sürümü indirin.

  1. Azure portalında Sanal Makineler gidin, Windows sanal makinenize gidin, ardından Genel Bakış sayfasından üstteki Bağlan'ı seçin.

  2. Windows VM'nizi oluştururken eklediğiniz Kullanıcı Adınızı ve Parolanızı girin.

  3. Sanal makineyle Uzak Masaüstü Bağlantısı kurun.

  4. Uzak oturumda PowerShell'i açın, ardından PowerShell Invoke-WebRequest cmdlet'ini kullanarak Azure kaynakları uç noktası için yerel yönetilen kimlikten bir Azure Resource Manager belirteci alın.

       $response = Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fmanagement.azure.com%2F' -Method GET -Headers @{Metadata="true"}
    

    Not

    Parametresinin resource değeri, Microsoft Entra Id tarafından beklenen değerle tam olarak eşleşmelidir. Azure Resource Manager kaynak kimliği kullanıldığında, URI'nin sonundaki eğik çizgiyi de eklemelisiniz.

    Ardından, nesnede content JavaScript Nesne Gösterimi (JSON) biçimlendirilmiş dize olarak depolanan öğesini ayıklayın $response .

    $content = $response.Content | ConvertFrom-Json
    

    Ardından, yanıttan erişim belirtecini ayıklayın.

    $ArmToken = $content.access_token
    

Depolama çağrıları yapmak için Azure Resource Manager'dan SAS kimlik bilgileri alma

Son olarak, önceki bölümde aldığınız erişim belirtecini kullanarak Resource Manager'ı çağırmak için PowerShell kullanın. Depolama SAS kimlik bilgileri oluşturmak için bu belirteci kullanırsınız. SAS kimlik bilgilerine sahip olduktan sonra diğer depolama işlemlerini çağırabilirsiniz.

Bu istek için, SAS kimlik bilgilerini oluşturmak için aşağıdaki HTTP isteği parametrelerini kullanın:

{
    "canonicalizedResource":"/blob/<STORAGE ACCOUNT NAME>/<CONTAINER NAME>",
    "signedResource":"c",              // The kind of resource accessible with the SAS, in this case a container (c).
    "signedPermission":"rcw",          // Permissions for this SAS, in this case (r)ead, (c)reate, and (w)rite. Order is important.
    "signedProtocol":"https",          // Require the SAS be used on https protocol.
    "signedExpiry":"<EXPIRATION TIME>" // UTC expiration time for SAS in ISO 8601 format, for example 2017-09-22T00:06:00Z.
}

Buradaki parametreler SAS kimlik bilgisi isteğinin POST gövdesine eklenir. SAS kimlik bilgisi oluşturma parametreleri hakkında daha fazla bilgi için bkz . Liste Hizmeti SAS REST başvurusu.

  1. Parametreleri JSON'a dönüştürün, ardından SAS kimlik bilgilerini oluşturmak için depolama listServiceSas uç noktasını çağırın:

    $params = @{canonicalizedResource="/blob/<STORAGE-ACCOUNT-NAME>/<CONTAINER-NAME>";signedResource="c";signedPermission="rcw";signedProtocol="https";signedExpiry="2017-09-23T00:00:00Z"}
    $jsonParams = $params | ConvertTo-Json
    
    $sasResponse = Invoke-WebRequest -Uri https://management.azure.com/subscriptions/<SUBSCRIPTION-ID>/resourceGroups/<RESOURCE-GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE-ACCOUNT-NAME>/listServiceSas/?api-version=2017-06-01 -Method POST -Body $jsonParams -Headers @{Authorization="Bearer $ArmToken"}
    

    Not

    URL büyük/küçük harfe duyarlıdır, bu nedenle kaynak grubunu adlandırırken kullanılan büyük/küçük harfe tam olarak aynı büyük/küçük harf kullandığınızdan emin olun( büyük harfle "G" de dahil resourceGroups).

  2. Ardından, yanıttan SAS kimlik bilgilerini ayıklayın:

    $sasContent = $sasResponse.Content | ConvertFrom-Json
    $sasCred = $sasContent.serviceSasToken
    
  3. SAS kimlik bilgilerini incelerseniz aşağıdakine benzer bir şey görmeniz gerekir:

    PS C:\> $sasCred
    sv=2015-04-05&sr=c&spr=https&se=2017-09-23T00%3A00%3A00Z&sp=rcw&sig=JVhIWG48nmxqhTIuN0uiFBppdzhwHdehdYan1W%2F4O0E%3D
    
  4. test.txt adlı bir dosya oluşturun. Ardından cmdlet'iyle New-AzStorageContent kimlik doğrulaması yapmak için SAS kimlik bilgilerini kullanın, dosyayı blob kapsayıcısına yükleyin ve ardından dosyayı indirin.

    echo "This is a test text file." > test.txt
    
  5. Önce, Install-Module Azure.Storage kullanarak Azure Depolama cmdlet'lerini yüklediğinizden emin olun. Ardından PowerShell Set-AzStorageBlobContent cmdlet'ini kullanarak yeni oluşturduğunuz blobu karşıya yükleyin:

    $ctx = New-AzStorageContext -StorageAccountName <STORAGE-ACCOUNT-NAME> -SasToken $sasCred
    Set-AzStorageBlobContent -File test.txt -Container <CONTAINER-NAME> -Blob testblob -Context $ctx
    

    Yanıt:

    ICloudBlob        : Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob
    BlobType          : BlockBlob
    Length            : 56
    ContentType       : application/octet-stream
    LastModified      : 9/21/2017 6:14:25 PM +00:00
    SnapshotTime      :
    ContinuationToken :
    Context           : Microsoft.WindowsAzure.Commands.Storage.AzureStorageContext
    Name              : testblob
    
  6. Karşıya yüklediğiniz blobu PowerShell cmdlet'ini Get-AzStorageBlobContent kullanarak da indirebilirsiniz:

    Get-AzStorageBlobContent -Blob testblob -Container <CONTAINER-NAME> -Destination test2.txt -Context $ctx
    

    Yanıt:

    ICloudBlob        : Microsoft.WindowsAzure.Storage.Blob.CloudBlockBlob
    BlobType          : BlockBlob
    Length            : 56
    ContentType       : application/octet-stream
    LastModified      : 9/21/2017 6:14:25 PM +00:00
    SnapshotTime      :
    ContinuationToken :
    Context           : Microsoft.WindowsAzure.Commands.Storage.AzureStorageContext
    Name              : testblob
    

Azure SQL Veritabanı erişmek için Windows VM sistem tarafından atanan yönetilen kimliği kullanma

Bu öğreticide, Azure SQL Veritabanı erişmek üzere Windows sanal makinesi (VM) için sistem tarafından atanan kimliğin nasıl kullanılacağı gösterilmektedir. Yönetilen Hizmet Kimlikleri Azure tarafından otomatik olarak yönetilir ve kodunuza kimlik bilgileri eklemenize gerek kalmadan Microsoft Entra kimlik doğrulamasını destekleyen hizmetlerde kimlik doğrulaması yapmanıza olanak tanır.

Nasıl yapılacağını öğrenin:

  • VM'nize Azure SQL Veritabanı erişimi verme
  • Microsoft Entra kimlik doğrulamasını etkinleştirme
  • VM’nin sistem tarafından atanan kimliğini temsil eden veritabanında içerilen kullanıcı oluşturma
  • VM kimliğini kullanarak erişim belirteci alma ve Azure SQL Veritabanı sorgulamak için bu belirteci kullanma

Etkinleştir

Sistem tarafından atanan yönetilen kimliği etkinleştirmek tek tıklamayla yapılan bir deneyimdir. Vm oluşturulurken veya mevcut bir VM'nin özelliklerinde etkinleştirebilirsiniz.

Sistem tarafından atanan durumunu açabileceğiniz bir sanal makine için Sistem tarafından atanan sekmesini gösteren ekran görüntüsü.

Sistem tarafından atanan yönetilen kimliği yeni bir VM'de etkinleştirmek için:

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

  2. Sistem tarafından atanan kimliğin etkinleştirildiği bir sanal makine oluşturun.

Erişim verme

VM'nize Azure SQL Veritabanı'daki bir veritabanına erişim vermek için var olan bir mantıksal SQL sunucusunu kullanın veya yeni bir tane oluşturun. Azure portalını kullanarak yeni bir sunucu ve veritabanı oluşturmak için Azure SQL hızlı başlangıcını izleyin. Azure SQL belgeleri arasında Azure CLI'nin ve Azure PowerShell'in kullanıldığı hızlı başlangıçlar da vardır.

VM'nize veritabanına erişim vermek için şu adımları izleyin:

  1. Sunucu için Microsoft Entra kimlik doğrulamasını etkinleştirin.
  2. VM’nin sistem tarafından atanan kimliğini temsil eden veritabanında bir içerilen kullanıcı oluşturun.

Microsoft Entra kimlik doğrulamasını etkinleştirme

Microsoft Entra kimlik doğrulamasını yapılandırmak için:

  1. Azure portalında sol gezinti bölmesinde SQL server'ı seçin.
  2. Microsoft Entra kimlik doğrulaması için etkinleştirmek istediğiniz SQL sunucusunu seçin.
  3. Dikey penceresinin Ayarlar bölümünde Active Directory yöneticisi'ni seçin.
  4. Komut çubuğunda Yönetici ayarla'yı seçin.
  5. Sunucu için yönetici yapılacak bir Microsoft Entra kullanıcı hesabı seçin ve Seç'i seçin.
  6. Komut çubuğunda Kaydet'i seçin .

Kapsanan kullanıcı oluşturma

Bu bölümde, vm'nin sistem tarafından atanan kimliğini temsil eden veritabanında kapsanan bir kullanıcının nasıl oluşturulacağı gösterilir. Bu adım için Microsoft SQL Server Management Studio'nun (SSMS) yüklü olması gerekir. Başlamadan önce, Microsoft Entra tümleştirmesi hakkında arka plan için aşağıdaki makaleleri gözden geçirmek yararlı olabilir:

SQL veritabanları benzersiz Microsoft Entra ID görünen adları gerektirir. Bununla, kullanıcılar, gruplar ve hizmet sorumluları (uygulamalar) gibi Microsoft Entra hesapları ve yönetilen kimlik için etkinleştirilen VM adları, ilgili görünen adlarına özgü Microsoft Entra Kimliği'nde benzersiz olarak tanımlanmalıdır. SQL, bu tür kullanıcıların T-SQL oluşturması sırasında Microsoft Entra Id görünen adlarını denetler. Görünen adlar benzersiz değilse, komut başarısız olur ve verilen her hesap için benzersiz bir Microsoft Entra Id görünen adı girmenizi ister.

Kapsanan kullanıcı oluşturmak için

  1. SQL Server Management Studio'yu açın.

  2. Sunucuya Bağlan iletişim kutusunda Sunucu adı alanına sunucu adınızı girin.

  3. Kimlik Doğrulaması alanında, Active Directory - MFA ile Evrensel desteği'ni seçin.

  4. Kullanıcı adı alanına, sunucu yöneticisi olarak ayarladığınız Microsoft Entra hesabının adını girin; örneğin, cjensen@fabrikam.com.

  5. Seçenekleri belirleyin.

  6. Veritabanına bağlan alanında, yapılandırmak istediğiniz sistem dışı veritabanının adını girin.

  7. Bağlan'ı seçin ve oturum açma işlemini tamamlayın.

  8. Nesne Gezgini'nde Veritabanları klasörünü genişletin.

  9. Bir kullanıcı veritabanına sağ tıklayın ve Ardından Yeni sorgu'yu seçin.

  10. Sorgu penceresinde aşağıdaki satırı girin ve araç çubuğunda Yürüt'e tıklayın:

    Not

    Aşağıdaki komutta yer alan VMName, önkoşullar bölümünde sistem tarafından atanan kimliği etkinleştirdiğiniz VM’nin adıdır.

    CREATE USER [VMName] FROM EXTERNAL PROVIDER
    

    Komutun, VM'nin sistem tarafından atanan kimliği için kapsanan kullanıcıyı oluşturarak başarıyla tamamlanması gerekir.

  11. Sorgu penceresini temizleyin, aşağıdaki satırı girin ve araç çubuğunda Yürüt'e tıklayın:

    Not

    VMName aşağıdaki komutta, önkoşullar bölümünde sistem tarafından atanan kimliği etkinleştirdiğiniz VM'nin adıdır.

    "Sorumlunun VMName görünen adı yinelenen" hatasıyla karşılaşırsanız, CREATE USER deyimini WITH OBJECT_ID='xxx' ile ekleyin.

    ALTER ROLE db_datareader ADD MEMBER [VMName]
    

    Komutun, içerdiği kullanıcıya veritabanının tamamını okuma yeteneği vererek başarıyla tamamlanması gerekir.

VM'de çalışan kod artık sistem tarafından atanan yönetilen kimliğini kullanarak bir belirteç alabilir ve sunucuda kimlik doğrulaması yapmak için belirteci kullanabilir.

Verilere erişme

Bu bölümde, VM'nin sistem tarafından atanan yönetilen kimliğini kullanarak erişim belirtecinin nasıl alınıp Azure SQL'i çağırmak için nasıl kullanılacağı gösterilir. Azure SQL, Microsoft Entra kimlik doğrulamasını yerel olarak desteklediği için Azure kaynakları için yönetilen kimlikler kullanılarak elde edilen erişim belirteçlerini doğrudan kabul edebilir. Bu yöntem, bağlantı dizesi kimlik bilgileri sağlamayı gerektirmez.

Active Directory Yönetilen Kimlik kimlik doğrulamasını kullanarak SQL bağlantısı açmaya ilişkin bir .NET kod örneği aşağıda verilmişti. Vm'nin sistem tarafından atanan yönetilen kimliğin uç noktasına erişebilmek için kodun VM'de çalıştırılması gerekir.

Bu yöntemi kullanmak için .NET Framework 4.6.2 veya üzeri ya da .NET Core 3.1 veya üzeri gereklidir. AZURE-SQL-SERVERNAME ve DATABASE değerlerini uygun şekilde değiştirin ve Microsoft.Data.SqlClient kitaplığına bir NuGet başvurusu ekleyin.

using Microsoft.Data.SqlClient;

try
{
//
// Open a connection to the server using Active Directory Managed Identity authentication.
//
string connectionString = "Data Source=<AZURE-SQL-SERVERNAME>; Initial Catalog=<DATABASE>; Authentication=Active Directory Managed Identity; Encrypt=True";
SqlConnection conn = new SqlConnection(connectionString);
conn.Open();

Alternatif olarak, VM'de uygulama yazmak ve dağıtmak zorunda kalmadan uçtan uca kurulumu test etmek için PowerShell'i de kullanabilirsiniz.

  1. Portalda Sanal Makineler gidin, Windows VM'nize gidin ve Genel Bakış'ta Bağlan'ı seçin.

  2. Windows VM'yi oluştururken eklediğiniz VM yöneticisi kimlik bilgilerinizi girin.

  3. ARTıK VM ile bir Uzak Masaüstü Bağlantısı oluşturduğunuza göre, PowerShell'i uzak bir oturumda açın.

  4. PowerShell Invoke-WebRequest cmdlet'ini kullanarak, Azure SQL için erişim belirteci almak üzere yerel yönetilen kimliğin uç noktasına bir istek gönderin.

        $response = Invoke-WebRequest -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fdatabase.windows.net%2F' -Method GET -Headers @{Metadata="true"}
    

    Yanıtı JSON nesnesinden PowerShell nesnesine dönüştürün.

    $content = $response.Content | ConvertFrom-Json
    

    Yanıttan erişim belirtecini ayıklayın.

    $AccessToken = $content.access_token
    
  5. Sunucuya bir bağlantı açın. AZURE-SQL-SERVERNAME ve DATABASE değerlerini değiştirmeyi unutmayın.

    $SqlConnection = New-Object System.Data.SqlClient.SqlConnection
    $SqlConnection.ConnectionString = "Data Source = <AZURE-SQL-SERVERNAME>; Initial Catalog = <DATABASE>; Encrypt=True;"
    $SqlConnection.AccessToken = $AccessToken
    $SqlConnection.Open()
    

    Ardından bir sorgu oluşturup sunucuya gönderin. TABLE değerini değiştirmeyi unutmayın.

    $SqlCmd = New-Object System.Data.SqlClient.SqlCommand
    $SqlCmd.CommandText = "SELECT * from <TABLE>;"
    $SqlCmd.Connection = $SqlConnection
    $SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
    $SqlAdapter.SelectCommand = $SqlCmd
    $DataSet = New-Object System.Data.DataSet
    $SqlAdapter.Fill($DataSet)
    

Son olarak, sorgunun sonuçlarını görüntülemek için değerini $DataSet.Tables[0] inceleyin.

Devre Dışı Bırak

VM'nizde sistem tarafından atanan kimliği devre dışı bırakmak için sistem tarafından atanan kimliğin durumunu Kapalı olarak ayarlayın.

Sistem tarafından atanan durumunu kapatabileceğiniz bir sanal makine için Sistem tarafından atanan sekmesini gösteren ekran görüntüsü.

Azure Key Vault'a erişmek için Windows VM sistem tarafından atanan yönetilen kimlik kullanma

Bu öğreticide, Bir Windows sanal makinesinin (VM) Azure Key Vault'a erişmek için sistem tarafından atanan yönetilen kimliği nasıl kullanabileceği gösterilir. Key Vault, istemci uygulamanızın Microsoft Entra Kimliği ile güvenliği sağlanmayan kaynaklara erişmek için gizli dizi kullanmasını mümkün kılar. Yönetilen kimlikler Azure tarafından otomatik olarak yönetilir. Bunlar, kodunuzda kimlik doğrulama bilgilerini eklemeden Microsoft Entra kimlik doğrulamasını destekleyen hizmetlerde kimlik doğrulaması yapmanıza olanak tanır.

Nasıl yapılacağını öğrenin:

  • VM'nize Key Vault'ta depolanan gizli diziye erişim verme
  • VM kimliği kullanarak erişim belirteci alma ve Key Vault'tan gizli diziyi almak için bunu kullanma

Key Vault oluşturma

İpucu

Bu makaledeki adımlar, başladığınız portala göre biraz değişiklik gösterebilir.

Bu bölümde, VM'nize Key Vault'ta depolanan bir gizli diziye nasıl erişim ver iletişim bilgileri gösterilir. Azure kaynakları için yönetilen kimlikleri kullandığınızda kodunuz, Microsoft Entra kimlik doğrulamasını destekleyen kaynaklarda kimlik doğrulaması yapmak için erişim belirteçleri alabilir. 

Ancak, tüm Azure hizmetleri Microsoft Entra kimlik doğrulamayı desteklemez. Söz konusu hizmetlerle Azure kaynakları için yönetilen kimlikleri kullanmak için, hizmet kimlik bilgilerini Azure Key Vault'ta depolayın ve VM’nin yönetilen kimliğini kullanarak Key Vault'a erişip kimlik bilgilerini alın.

İlk olarak, bir Key Vault oluşturmanız ve VM'nizin sistem tarafından atanan yönetilen kimliğine Key Vault erişimi vermeniz gerekir.

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

  2. Sol gezinti çubuğunun üst kısmında Kaynak oluştur'u seçin.

  3. Markette Ara kutusuna Key Vault yazın ve Enter tuşuna basın.

  4. Sonuçlardan Key Vault'u ve ardından Oluştur'u seçin.

  5. Yeni anahtar kasası için bir Ad belirtin.

    Anahtar kasası oluştur ekranının ekran görüntüsü.

  6. Tüm gerekli bilgileri doldurun. Bu öğretici için kullandığınız aboneliği ve kaynak grubunu seçtiğinizden emin olun.

  7. Gözden geçir+ oluştur'u seçin.

  8. Oluştur'u belirleyin.

Gizli anahtar oluşturma

Ardından, daha sonra VM'nizde çalışan kodu kullanarak alabilmeniz için Key Vault'a bir gizli dizi eklemeniz gerekir. Bu bölümde PowerShell kullanırsınız, ancak vm'nizde yürüttüğünüz tüm kodlar için aynı kavramlar geçerlidir.

  1. Yeni oluşturduğunuz Key Vault'a gidin.

  2. Gizli Diziler'i ve ardından Ekle'yi seçin.

  3. Oluştur/İçeri Aktar'ı seçin.

  4. Gizli dizi oluştur ekranındaki Karşıya yükleme seçenekleri'ndeEl ile seçeneğinin seçili durumda bırakın.

  5. Gizli dizi için bir ad ve değer girin. Değer, istediğiniz herhangi bir şey olabilir. 

  6. Etkinleştirme tarihi ile sona erme tarihini boş bırakın ve Etkin seçeneğini Evet değerinde bırakın. 

  7. Gizli diziyi oluşturmak için Oluştur'u seçin.

    Gizli dizi oluşturmayı gösteren ekran görüntüsü.

Erişim verme

VM tarafından kullanılan yönetilen kimliğe Key Vault'un depoladığı gizli diziyi okumak için erişim izni verilmesi gerekir.

  1. Yeni oluşturduğunuz Key Vault'a gidin.

  2. Sol taraftaki menüden Erişim İlkesi'ni seçin.

  3. Erişim İlkesi Ekle'yi seçin.

    Anahtar kasası erişim ilkesi ekranını gösteren ekran görüntüsü.

  4. Erişim ilkesi ekle bölümünde, Şablondan yapılandır (isteğe bağlı) altında, açılan menüden Gizli Dizi Yönetimi'ni seçin.

  5. Sorumlu Seç'i seçin, ardından arama alanına daha önce oluşturduğunuz VM'nin adını girin. 

  6. Sonuç listesinden VM'yi ve ardından Seç'i seçin.

  7. Ekle'yi seçin.

  8. Kaydet'i seçin.

Verilere erişme

Bu bölümde VM kimliğini kullanarak erişim belirtecinin nasıl alınıp Key Vault'tan gizli diziyi almak için nasıl kullanılacağı gösterilmektedir. PowerShell 4.3.1 veya üstünü yüklemediyseniz, en son sürümü indirip yüklemeniz gerekir.

Not

Gizli diziyi doğrulamak ve almak için PowerShell kullanma yöntemi, yönetilen kimliklerin özel olarak gerekli olduğu senaryolarda veya işlemi uygulamanın koduna eklerken tercih edilir.

İlk olarak, Key Vault'ta kimlik doğrulaması yapmak üzere bir erişim belirteci almak için VM'nin sistem tarafından atanan yönetilen kimliğini kullanın:

  1. Portalda Sanal Makineler gidin ve Windows VM'nize gidin, ardından Genel Bakış'ta Bağlan'ı seçin.
  2. Windows VM'sini oluştururken eklediğiniz Kullanıcı Adı ve Parola bilgilerinizi girin.
  3. ARTıK VM ile Uzak Masaüstü Bağlantısı oluşturduğunuza göre, PowerShell'i uzak bir oturumda açın.
  4. PowerShell'de, VM için belirtilen bağlantı noktasında yerel konağın belirtecini almak üzere kiracıda web isteğini çağırın.

Not

GCC-H gibi bağımsız bir bulut kullanıyorsanız, PowerShell cmdlet'i yerine vault.azure.net uç noktayı vault.usgovcloudapi.net kullanın.

Örnek PowerShell isteği:

$Response = Invoke-RestMethod -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fvault.azure.net' -Method GET -Headers @{Metadata="true"} 

Not

Bağımsız bulutlarla çalışırken, cmdlet'in sonunda belirtilen uç noktada ayarlamalar yapmanız gerekir.

Örneğin, vault.usgovcloudapi.net sonuç olarak Azure Kamu Bulut ile çalışırken kullanılmalıdır:

$Response = Invoke-RestMethod -Uri 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fvault.usgovcloudapi.net' -Method GET -Headers @{Metadata="true"

Son ekin ortamınızla eşleştiğinden emin olmak için Azure Key Vault güvenliğine genel bakış makalesini gözden geçirin.

Yanıt şöyle görünmelidir:

Belirteç yanıtı içeren bir isteği gösteren ekran görüntüsü.

Ardından, yanıttan erişim belirtecini ayıklayın.

   $KeyVaultToken = $Response.access_token

Son olarak, Daha önce Key Vault'ta oluşturduğunuz gizli diziyi almak için PowerShell Invoke-WebRequest cmdlet'ini kullanın ve erişim belirtecini Yetkilendirme üst bilgisine geçirin. Key Vault'unuzun URL'sine ihtiyacınız olacaktır. Bu URL, Key Vault'un Genel Bakış sayfasındaki Temel Parçalar bölümünde yer alır.

Invoke-RestMethod -Uri https://<your-key-vault-URL>/secrets/<secret-name>?api-version=2016-10-01 -Method GET -Headers @{Authorization="Bearer $KeyVaultToken"}

Yanıt şu şekilde görünmelidir:

  value       id                                                                                    attributes
  -----       --                                                                                    ----------
  'My Secret' https://mi-lab-vault.vault.azure.net/secrets/mi-test/50644e90b13249b584c44b9f712f2e51 @{enabled=True; created=16…

Key Vault'tan gizli diziyi aldıktan sonra, bunu kullanarak ad ve parola gerektiren bir hizmette kimlik doğrulaması yapabilirsiniz.

Kaynakları temizleme

Son olarak, kaynakları temizlemek istediğinizde Azure portalında oturum açın, Kaynak grupları'nı seçin, ardından bu öğreticinin (örneğinmi-test) sürecinde oluşturulan kaynak grubunu bulup seçin. Ardından Kaynak grubunu sil komutunu kullanın.

İsterseniz PowerShell veya CLI kullanarak da kaynakları temizleyebilirsiniz.

Resource Manager'a erişmek için Windows VM sistem tarafından atanan yönetilen kimliği kullanma

İpucu

Bu makaledeki adımlar, başladığınız portala göre biraz değişiklik gösterebilir.

Bu öğreticide sistem tarafından atanan bir kimliğin nasıl oluşturulacağı, bir Windows Sanal Makinesi'ne (VM) nasıl atanacağı ve ardından Azure Resource Manager API'sine erişmek için bu kimliğin nasıl kullanılacağı açıklanmaktadı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.

Nasıl yapılacağını öğrenin:

  • VM'nize Azure Resource Manager erişimi verin.
  • Resource Manager'a erişmek için VM'nin sistem tarafından atanan yönetilen kimliğini kullanarak erişim belirteci alın.
  1. Yönetici hesabınızla Azure portalında oturum açın.

  2. Kaynak Grupları sekmesine gidin.

  3. VM'nin yönetilen kimlik erişimine vermek istediğiniz Kaynak Grubunu seçin.

  4. Sol panelde Erişim denetimi (IAM) öğesini seçin.

  5. Ekle'yi ve ardından Rol ataması ekle'yi seçin.

  6. Rol sekmesinde Okuyucu'ya tıklayın. Bu rol tüm kaynakları görüntülemenize izin verir, ancak herhangi bir değişiklik yapmanıza izin vermez.

  7. Üyeler sekmesinde, Erişim ata seçeneği için Yönetilen kimlik'i ve ardından + Üye seç'i seçin.

  8. Abonelik açılan listesinde uygun aboneliğin listelendiğinden emin olun. Kaynak Grubu için Tüm kaynak grupları'yı seçin.

  9. Kimliği yönet açılan listesinde Sanal Makine'yi seçin.

  10. Seç için açılan listeden VM'nizi seçin ve ardından Kaydet'i seçin.

    Yönetilen kimliğe okuyucu rolünü eklemeyi gösteren ekran görüntüsü.

Bir erişim belirteci alma

Vm'nin sistem tarafından atanan yönetilen kimliğini kullanın ve erişim belirteci almak için Resource Manager'ı çağırın.

Bu adımları tamamlamak bir SSH istemciniz olmalıdır. Windows kullanıyorsanız, Linux için Windows Alt Sistemi SSH istemcisini kullanabilirsiniz. SSSH istemcinizin anahtarlarını yapılandırmak için yardıma ihtiyacınız olursa, bkz. Azure'da Windows ile SSH anahtarlarını kullanma veya Azure’da Linux VM’ler için SSH ortak ve özel anahtar çifti oluşturma.

  1. Portalda Linux VM'nize gidin ve Genel Bakış'ta Bağlan'ı seçin.
  2. Tercih ettiğiniz SSH istemciyle VM'ye bağlanın.
  3. Terminal penceresinde kullanarak curlAzure Resource Manager için erişim belirteci almak üzere Azure kaynakları uç noktasına yönelik yerel yönetilen kimliklere bir istek gönderin.   curl Erişim belirteci isteği aşağıdadır.
curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/' -H Metadata:true

Not

Parametresinin resource değeri, Microsoft Entra Id tarafından beklenen değerle tam olarak eşleşmelidir. Resource Manager'ın kaynak kimliği söz konusu olduğunda, URI'ye sondaki eğik çizgiyi eklemeniz gerekir.

Yanıtta, Azure Resource Manager’a erişmek için ihtiyacınız olan erişim belirteci vardır.

Yanıt:

{
  "access_token":"eyJ0eXAiOi...",
  "refresh_token":"",
  "expires_in":"3599",
  "expires_on":"1504130527",
  "not_before":"1504126627",
  "resource":"https://management.azure.com",
  "token_type":"Bearer"
}

Azure Resource Manager'a erişmek için bu erişim belirtecini kullanın; örneğin, daha önce bu VM erişimine izin vermiş olduğunuz kaynak grubunun ayrıntılarını okumak için. , <RESOURCE-GROUP>ve <ACCESS-TOKEN> değerlerini <SUBSCRIPTION-ID>daha önce oluşturduğunuz değerlerle değiştirin.

Not

URL büyük/küçük harfe duyarlıdır, bu nedenle daha önce kaynak grubunu adlandırırken kullandığınız büyük/küçük harfi ve "resourceGroup" içinde büyük harfli "G" harfini kullandığınızdan emin olun.

curl https://management.azure.com/subscriptions/<SUBSCRIPTION-ID>/resourceGroups/<RESOURCE-GROUP>?api-version=2016-09-01 -H "Authorization: Bearer <ACCESS-TOKEN>" 

Belirli kaynak grubu bilgilerini içeren yanıt:

{
"id":"/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/DevTest",
"name":"DevTest",
"location":"westus",
"properties":
{
  "provisioningState":"Succeeded"
  }
} 

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 bir kimliğin nasıl oluşturulacağı, bir Windows Sanal Makinesi'ne (VM) nasıl atanacağı ve ardından Azure Resource Manager API'sine erişmek için bu kimliğin nasıl kullanılacağı açıklanmaktadı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.

Nasıl yapılacağını öğrenin:

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

Azure PowerShell'i yerel olarak yapılandırma

Bu örnekte betikleri çalıştırmak için iki seçeneğiniz vardır:

Bu öğreticide (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. Modülün yayımlanan sürümünü Az.ManagedServiceIdentity yükleyin. Bu öğreticide kullanıcı tarafından atanan yönetilen kimlik işlemlerini gerçekleştirmek için buna ihtiyacınız vardır:

    Install-Module -Name Az.ManagedServiceIdentity -AllowPrerelease
    

Etkinleştir

Kullanıcı tarafından atanan bir kimliğe dayalı senaryolar için bu bölümde aşağıdaki adımları gerçekleştirmeniz gerekir:

  1. Kimlik oluşturma.
  2. Yeni oluşturulan kimliği atayın.

Kimlik oluşturma

Bu bölümde, tek başına Azure kaynağı olarak oluşturulan kullanıcı tarafından atanan bir kimliğin nasıl oluşturulacağı gösterilmektedir. New-AzUserAssignedIdentity cmdlet'ini kullanarak Azure, Microsoft Entra kiracınızda bir veya daha fazla Azure hizmet örneğine atayabileceğiniz 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 şekilde, oluşturulan kullanıcı tarafından atanan kimliğin ayrıntılarını içerir. Id Kullanıcı tarafından atanan kimliğiniz için ve ClientId değerlerini, sonraki adımlarda kullanıldıkları gibi tanımlayın:

{
Id: /subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1
ResourceGroupName : myResourceGroupVM
Name: ID1
Location: westus
TenantId: aaaabbbb-0000-cccc-1111-dddd2222eeee
PrincipalId: aaaaaaaa-bbbb-cccc-1111-222222222222
ClientId: 00001111-aaaa-2222-bbbb-3333cccc4444
ClientSecretUrl: https://control-westus.identity.azure.net/subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM/providers/Microsoft.ManagedIdentity/userAssignedIdentities/ID1/credentials?tid=aaaabbbb-0000-cccc-1111-dddd2222eeee&oid=aaaaaaaa-bbbb-cccc-1111-222222222222&aid=00001111-aaaa-2222-bbbb-3333cccc4444
Type: Microsoft.ManagedIdentity/userAssignedIdentities
}

Kimlik atama

Bu bölümde, Kullanıcı tarafından atanan kimliği bir Windows VM'sine atama adımları gösterilmektedir. 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, VM'nin bulunduğu kaynak grubuna erişilir. <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/00000000-0000-0000-0000-000000000000
Scope: /subscriptions/<SUBSCRIPTIONID>/resourcegroups/myResourceGroupVM
DisplayName: ID1
SignInName:
RoleDefinitionName: Reader
RoleDefinitionId: 00000000-0000-0000-0000-000000000000
ObjectId: aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
ObjectType: ServicePrincipal
CanDelegate: False

Verilere erişme

İpucu

Bu makaledeki adımlar, başladığınız portala göre biraz değişiklik gösterebilir.

Bir erişim belirteci alma

Öğreticinin geri kalanında, daha önce oluşturduğunuz VM'den çalışırsınız.

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

  2. Portalda Sanal Makineler gidin ve Windows VM'sine gidin. Genel Bakış'ta Bağlan'ı seçin.

  3. Windows VM'sini oluştururken kullandığınız Kullanıcı Adı ve Parolayı girin.

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

  5. PowerShell Invoke-WebRequest cmdlet'ini kullanarak, Azure Resource Manager için erişim belirteci almak üzere Azure kaynakları uç noktasına yönelik 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=00001111-aaaa-2222-bbbb-3333cccc4444&resource=https://management.azure.com/' -Method GET -Headers @{Metadata="true"}
    $content = $response.Content | ConvertFrom-Json
    $ArmToken = $content.access_token
    

Okuma özellikleri

Son olarak, Azure Resource Manager'a erişmek için önceki adımda alınan erişim belirtecini kullanın, ardından kullanıcı tarafından atanan kimlik erişimine izin vermiş olduğunuz 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"}}

Daha fazla bilgi edinin