Öğ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.
Sistem tarafından atanan yönetilen kimliği yeni bir VM'de etkinleştirmek için:
Azure portalda oturum açma
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.
Azure portalının sol üst köşesinde bulunan + Kaynak oluştur düğmesini seçin.
Depolama'ı seçin ve ardından hesabı Depolama : blob, dosya, tablo, kuyruk.
Ad’ın altında, depolama hesabı için bir ad girin.
Dağıtım modeli ve Hesap türü, Kaynak yöneticisi ve Depolama (genel amaçlı v1) olarak ayarlanmalıdır.
Abonelik ve Kaynak Grubu değerlerinin, önceki adımda VM'nizi oluştururken belirttiklerinizle eşleştiğinden emin olun.
Oluştur seçeneğini belirleyin.
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.
Yeni oluşturulan depolama hesabınıza geri gidin.
Blob Hizmeti'nin altında Kapsayıcılar'ı seçin.
Sayfanın üst kısmındaki + Kapsayıcı'ya tıklayın.
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.
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.
Kapsayıcı adına ve ardından Karşıya yükle’ye tıklayarak dosyayı yeni oluşturulan kapsayıcıya yükleyin
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.
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.
Yeni oluşturulan depolama hesabınıza geri gidin.
Erişim denetimi (IAM) öğesini seçin.
Rol ataması ekle sayfasını açmak için Rol ataması ekle'yi>seçin.
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>
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.
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: