Öğretici: Azure Depolama’ya erişmek için Windows VM sistem tarafından atanan yönetilen kimlik 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.

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

Dekont

Azure Depolama için Microsoft Entra kimlik doğrulaması genel önizleme aşamasındadır.

Ön koş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.
  • Gerekli kaynak oluşturma ve rol yönetimini 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.

Etkinleştirme

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.

Screenshot shows the System assigned tab for a virtual machine where you can turn on the System assigned status.

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

  1. Azure portalda oturum açma

  2. Sistem tarafından atanan kimliğin etkin olduğu bir sanal makine oluşturma

Erişim verme

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'ı seçin ve ardından hesabı Depolama : blob, dosya, tablo, kuyruk.

  3. Ad’ın altında, 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 seçeneğini belirleyin.

    Create new storage account

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şturulan depolama hesabınıza geri gidin.

  2. Blob Hizmeti'nin altında Kapsayıcılar'ı seçin.

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

  4. Yeni kapsayıcı’nın altında, kapsayıcı için bir ad girin ve Genel erişim düzeyi’nin altında varsayılan değeri değiştirmeyin.

    Create storage container

  5. Tercih ettiğiniz bir düzenleyiciyi kullanarak yerel makinenizde hello world.txt başlıklı bir dosya oluşturun. Dosyayı açıp (tırnak işaretleri olmadan) "Hello world! :)" metnini ekleyin ve sonra kaydedin.

  6. Kapsayıcı adına ve ardından Karşıya yükle’ye tıklayarak dosyayı yeni oluşturulan kapsayıcıya yükleyin

  7. Blobu karşıya yükle bölmesindeki Dosyalar'ın altında klasör simgesini seçin ve yerel makinenizdeki hello_world.txt dosyasına gidin, dosyayı seçin ve ardından Karşıya Yükle'yi seçin. Upload text file

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österir. Azure depolama blobundaki verileri almak için VM’nin sistem tarafından atanan yönetilen kimliğini kullanabilirsiniz.

  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 Değer
    Rol Depolama Blob Verileri Okuyucusu
    Şu kişiye erişim ata: Yönetilen kimlik
    Sistem tarafından atanan Sanal Makine
    Seç <sanal makineniz>

    Add role assignment page in Azure portal.

Verilere erişme

Azure Depolama, Yönetilen kimlik kullanılarak elde edilen erişim belirteçlerini doğrudan kabul edebilmesi için Microsoft Entra kimlik doğrulamasını yerel olarak destekler. Bu yaklaşım, Azure Depolama'nin 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 bağlantısı 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.

Screenshot shows the System assigned tab for a virtual machine where you can turn off the System assigned status.

Sonraki adımlar

Bu öğreticide Azure Depolama’ya erişmek için Windows VM sistem tarafından atanan kimliğini etkinleştirmeyi öğrendiniz. Azure Depolama hakkında daha fazla bilgi edinmek için bkz: