Öğ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).
- Bu öğretici için bir VM oluşturmanız gerekiyorsa bkz . Sistem tarafından atanan kimlik etkin bir sanal makine oluşturma.
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 yönetilen kimliği yeni bir VM'de etkinleştirmek için:
Azure Portal’ında oturum açın.
Sistem tarafından atanan kimliğin etkinleştirildiği bir sanal makine oluşturun.
Erişim izni ver
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:
- Azure portalında sol gezinti bölmesinde Data Lake Store'ı seçin.
- Bu öğretici için kullanmak istediğiniz Data Lake Store'ı seçin.
- Komut çubuğunda Veri Gezgini seçin.
- Data Lake Store’un kök klasörü seçilidir. Komut çubuğunda Access'i seçin.
- 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.
- İ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.
- Tamam'ı seçin ve erişim dikey penceresini kapatın. İzin başarıyla eklenmiş olmalıdır.
- 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.
- Oluşturduğunuz klasörü seçin ve ardından komut çubuğunda Access'i seçin.
- Ekle'yi seçin, ardından Seç alanına VM'nizin adını girin ve Seç'i seçin.
- İ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.
- 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.
Portalda Sanal Makineler gidin, Windows VM'nize gidin. Ardından Genel Bakış'ta Bağlan'ı seçin.
Windows VM'sini oluştururken eklediğiniz Kullanıcı Adı ve Parola bilgilerinizi girin.
VM ile bir Uzak Masaüstü Bağlantısı oluşturduğunuza göre, uzak oturumda PowerShell'i açın.
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ı şeklindedirhttps://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
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 dizeninBearer
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
Şimdi Data Lake Store'unuza dosya yüklemeyi deneyin. Önce karşıya yüklenecek dosyayı oluşturun.
echo "Test file." > Test1.txt
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.- İstekte bulunun ve dosyanın karşıya yüklenmesi gereken yere yeniden yönlendirme alın.
- 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
$HdfsRedirectResponse
incelerseniz 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.
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 yönetilen kimliği yeni bir VM'de etkinleştirmek için:
Azure Portal’ında oturum açın.
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.
Azure portalının sol üst köşesinde bulunan + Kaynak oluştur düğmesini seçin.
Depolama'yı, ardından Depolama hesabı - blob, dosya, tablo, kuyruk'ı seçin.
Ad alanına 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'u 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şturduğunuz depolama hesabınıza gidin.
Blob Hizmeti bölümünde Kapsayıcılar'ı seçin.
Sayfanın üst kısmındaki + Kapsayıcı'ya tıklayın.
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.
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.
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.
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.
Erişim izni ver
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.
Yeni oluşturduğunuz depolama hesabınıza 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 Value Role 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 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.
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.
Depolama'yı ve ardından Depolama Hesabı'yı seçin.
Depolama hesabı oluştur panelinde depolama hesabı için bir ad girin.
Dağıtım modeli ve Hesap türünün Resource Manager ve Genel amaçlı olarak ayarlandığından emin olun.
Abonelik ve Kaynak Grubu'nun önceki adımda VM'nizi oluştururken belirttiğiniz öğelerle eşleştiğinden emin olun.
Depolama hesabınızı oluşturmak için Oluştur'u seçin.
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.
Yeni oluşturduğunuz depolama hesabınıza gidin.
Sol paneldeki Blob hizmeti'nin altındaki Kapsayıcılar bağlantısını seçin.
Sayfanın üst kısmındaki + Kapsayıcı'yı seçin, ardından Yeni kapsayıcı paneli görünmelidir.
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 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.
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 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>
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.
Azure portalında Sanal Makineler gidin, Windows sanal makinenize gidin, ardından Genel Bakış sayfasından üstteki Bağlan'ı seçin.
Windows VM'nizi oluştururken eklediğiniz Kullanıcı Adınızı ve Parolanızı girin.
Sanal makineyle Uzak Masaüstü Bağlantısı kurun.
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.
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
).Ardından, yanıttan SAS kimlik bilgilerini ayıklayın:
$sasContent = $sasResponse.Content | ConvertFrom-Json $sasCred = $sasContent.serviceSasToken
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
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
Önce,
Install-Module Azure.Storage
kullanarak Azure Depolama cmdlet'lerini yüklediğinizden emin olun. Ardından PowerShellSet-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
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 yönetilen kimliği yeni bir VM'de etkinleştirmek için:
Azure Portal’ında oturum açın.
Sistem tarafından atanan kimliğin etkinleştirildiği bir sanal makine oluşturun.
Erişim izni ver
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:
- Sunucu için Microsoft Entra kimlik doğrulamasını etkinleştirin.
- 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:
- Azure portalında sol gezinti bölmesinde SQL server'ı seçin.
- Microsoft Entra kimlik doğrulaması için etkinleştirmek istediğiniz SQL sunucusunu seçin.
- Dikey penceresinin Ayarlar bölümünde Active Directory yöneticisi'ni seçin.
- Komut çubuğunda Yönetici ayarla'yı seçin.
- Sunucu için yönetici yapılacak bir Microsoft Entra kullanıcı hesabı seçin ve Seç'i seçin.
- 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 Veritabanı ve Azure Synapse Analytics ile Evrensel Kimlik Doğrulaması (MFA için SSMS desteği)
- SQL Veritabanı veya Azure Synapse Analytics ile Microsoft Entra kimlik doğrulamayı yapılandırma ve yönetme
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
SQL Server Management Studio'yu açın.
Sunucuya Bağlan iletişim kutusunda Sunucu adı alanına sunucu adınızı girin.
Kimlik Doğrulaması alanında, Active Directory - MFA ile Evrensel desteği'ni seçin.
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.
Seçenekleri belirleyin.
Veritabanına bağlan alanında, yapılandırmak istediğiniz sistem dışı veritabanının adını girin.
Bağlan'ı seçin ve oturum açma işlemini tamamlayın.
Nesne Gezgini'nde Veritabanları klasörünü genişletin.
Bir kullanıcı veritabanına sağ tıklayın ve Ardından Yeni sorgu'yu seçin.
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.
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();
Not
SDK'larımızı kullanarak diğer programlama seçenekleriyle çalışırken yönetilen kimlikleri kullanabilirsiniz.
Alternatif olarak, VM'de uygulama yazmak ve dağıtmak zorunda kalmadan uçtan uca kurulumu test etmek için PowerShell'i de kullanabilirsiniz.
Portalda Sanal Makineler gidin, Windows VM'nize gidin ve Genel Bakış'ta Bağlan'ı seçin.
Windows VM'yi oluştururken eklediğiniz VM yöneticisi kimlik bilgilerinizi girin.
ARTıK VM ile bir Uzak Masaüstü Bağlantısı oluşturduğunuza göre, PowerShell'i uzak bir oturumda açın.
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
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.
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.
Azure Portal’ında oturum açın.
Sol gezinti çubuğunun üst kısmında Kaynak oluştur'u seçin.
Markette Ara kutusuna Key Vault yazın ve Enter tuşuna basın.
Sonuçlardan Key Vault'u ve ardından Oluştur'u seçin.
Yeni anahtar kasası için bir Ad belirtin.
Tüm gerekli bilgileri doldurun. Bu öğretici için kullandığınız aboneliği ve kaynak grubunu seçtiğinizden emin olun.
Gözden geçir+ oluştur'u seçin.
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.
Yeni oluşturduğunuz Key Vault'a gidin.
Gizli Diziler'i ve ardından Ekle'yi seçin.
Oluştur/İçeri Aktar'ı seçin.
Gizli dizi oluştur ekranındaki Karşıya yükleme seçenekleri'nde El ile seçeneğinin seçili durumda bırakın.
Gizli dizi için bir ad ve değer girin. Değer, istediğiniz herhangi bir şey olabilir.
Etkinleştirme tarihi ile sona erme tarihini boş bırakın ve Etkin seçeneğini Evet değerinde bırakın.
Gizli diziyi oluşturmak için Oluştur'u seçin.
Erişim izni ver
VM tarafından kullanılan yönetilen kimliğe Key Vault'un depoladığı gizli diziyi okumak için erişim izni verilmesi gerekir.
Yeni oluşturduğunuz Key Vault'a gidin.
Sol taraftaki menüden Erişim İlkesi'ni seçin.
Erişim İlkesi Ekle'yi seçin.
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.
Sorumlu Seç'i seçin, ardından arama alanına daha önce oluşturduğunuz VM'nin adını girin.
Sonuç listesinden VM'yi ve ardından Seç'i seçin.
Ekle'yi seçin.
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:
- Portalda Sanal Makineler gidin ve Windows VM'nize gidin, ardından Genel Bakış'ta Bağlan'ı seçin.
- Windows VM'sini oluştururken eklediğiniz Kullanıcı Adı ve Parola bilgilerinizi girin.
- ARTıK VM ile Uzak Masaüstü Bağlantısı oluşturduğunuza göre, PowerShell'i uzak bir oturumda açın.
- 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:
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.
Kaynak Grupları sekmesine gidin.
VM'nin yönetilen kimlik erişimine vermek istediğiniz Kaynak Grubunu seçin.
Sol panelde Erişim denetimi (IAM) öğesini seçin.
Ekle'yi ve ardından Rol ataması ekle'yi seçin.
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.
Üyeler sekmesinde, Erişim ata seçeneği için Yönetilen kimlik'i ve ardından + Üye seç'i seçin.
Abonelik açılan listesinde uygun aboneliğin listelendiğinden emin olun. Kaynak Grubu için Tüm kaynak grupları'yı seçin.
Kimliği yönet açılan listesinde Sanal Makine'yi seçin.
Seç için açılan listeden VM'nizi seçin ve ardından Kaydet'i seçin.
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.
- Portalda Linux VM'nize gidin ve Genel Bakış'ta Bağlan'ı seçin.
- Tercih ettiğiniz SSH istemciyle VM'ye bağlanın.
- Terminal penceresinde kullanarak
curl
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.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:
- 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.
Bu öğreticide (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.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:
- Kimlik oluşturma.
- 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-0000-1111-2222-bbbbbbbbbbbb&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 izni ver
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.
Azure Portal’ında oturum açın.
Portalda Sanal Makineler gidin ve Windows VM'sine gidin. Genel Bakış'ta Bağlan'ı seçin.
Windows VM'sini oluştururken kullandığınız Kullanıcı Adı ve Parolayı girin.
Artık VM'nizle bir Uzak Masaüstü Bağlantısı oluşturduğunuza göre, PowerShell'i uzak oturumda açın.
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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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"}}