Öğretici: Azure kaynaklarına erişmek için Linux 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 Linux 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 Linux VM sistem tarafından atanan yönetilen kimliği kullanma
Bu öğreticide, Azure Data Lake Store'a erişmek üzere Linux sanal makinesi (VM) için sistem tarafından atanan yönetilen kimliğin nasıl kullanılacağı gösterilmektedir.
Nasıl yapılacağını öğrenin:
- Azure Data Lake Store'a VM'niz için erişim verme.
- Azure Data Lake Store'a erişmek için VM'nin sistem tarafından atanan yönetilen kimliğini kullanarak bir erişim belirteci alın.
Erişim verme
Bu bölümde, VM'nize Azure Data Lake Store'daki dosyalara ve klasörlere nasıl erişim verilip ve ven velilerin nasıl verilip ve ven verilip ve ven Bu adımda, mevcut Data Lake Store örneğini kullanabilir veya yeni bir sunucu oluşturabilirsiniz. Azure portalını kullanarak Data Lake Store örneği oluşturmak için, Azure Data Lake Store hızlı başlangıcı'nı izleyin. 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'da yeni bir klasör oluşturun ve Linux VM sistem tarafından atanan yönetilen kimliğe bu klasördeki dosyaları okuma, yazma ve yürütme izni verin:
- Azure portalında, sol bölmedeki Data Lake Store'u seçin.
- Kullanmak istediğiniz Data Lake Store örneğini seçin.
- Komut çubuğunda Veri Gezgini'ni seçin.
- Data Lake Store örneğinin kök klasörü seçilidir. Komut çubuğunda Erişim'i seçin.
- Ekle'yi seçin. Seç kutusuna 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 seçin. Oku ve Yürüt'e tıklayın, Bu klasöre ekleyin, Yalnızca erişim izni olarak ekleyin ve ardından Tamam'ı seçin. İzin başarıyla eklenmiş olmalıdır.
- Erişim bölmesini kapatın.
- Yeni bir klasör oluşturun, ardından komut çubuğunda Yeni Klasör'e tıklayın ve yeni klasöre bir ad verin; örneğin, TestFolder, 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ç kutusuna VM'nizin adını girin.
- Arama sonuçlarından VM'nizi seçin ve ardından Seç'i seçin.
- İzinleri Seç'i ve ardından Oku'ya ve ardından Yaz ve Yürüt'e tıklayın.
- Bu klasöre eklemek için seçin, ardından Erişim izni girdisi ve varsayılan izin girdisi olarak ekle'yi ve ardından Tamam'ı seçin. İzin başarıyla eklenmiş olmalıdır.
Azure kaynakları için yönetilen kimlikler 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 daha fazla bilgi için bkz. Data Lake Store’da Erişim Denetimi.
Bir erişim belirteci alma
Bu bölümde bir erişim belirtecinin nasıl alınıp Data Lake Store dosya sisteminin nasıl çağrılacakları gösterilmektedir. Azure Data Lake Store, 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.
Data Lake Store dosya sisteminde kimlik doğrulaması yapmak için, Microsoft Entra Id tarafından verilen bir erişim belirtecini Data Lake Store dosya sistemi uç noktanıza gönderirsiniz. Erişim belirteci biçiminde Bearer \<ACCESS_TOKEN_VALUE\>
bir yetkilendirme üst bilgisindedir. 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ı.
Ardından, REST isteklerinde bulunmak için cURL kullanarak Data Lake Store dosya sisteminin REST API'sinde kimlik doğrulaması yaparsınız.
Not
Data Lake Store dosya sistemi için istemci SDK'ları henüz Azure kaynakları için yönetilen kimlikleri desteklememektedir.
Bu adımları tamamlamak bir SSH istemciniz olmalıdır. Windows kullanıyorsanız, Linux için Windows Alt Sistemi'ndeki SSH istemcisini kullanabilirsiniz. SSH 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 göz atın, ardından Genel Bakış bölümünde Bağlan'ı seçin.
Tercih ettiğiniz SSH istemcisini kullanarak VM'ye bağlanın.
Terminal penceresinde cURL kullanarak Azure kaynakları için Azure'ın yerel yönetilen kimlikleri uç noktasına bir istekte bulunarak Data Lake Store dosya sistemi için bir erişim belirteci alın. Data Lake Store'un kaynak tanımlayıcısı şeklindedir
https://datalake.azure.net/
. Kaynak tanımlayıcısına sondaki eğik çizgiyi eklemek önemlidir.curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fdatalake.azure.net%2F' -H Metadata:true
Başarılı bir yanıt Data Lake Store'da kimlik doğrulaması için kullandığınız erişim belirtecini döndürür:
{"access_token":"eyJ0eXAiOiJ...", "refresh_token":"", "expires_in":"3599", "expires_on":"1508119757", "not_before":"1508115857", "resource":"https://datalake.azure.net/", "token_type":"Bearer"}
cURL kullanarak, kök klasördeki klasörleri listelemek için Data Lake Store dosya sisteminizin REST uç noktasına bir istek gönderin. Bu, her şeyin doğru yapılandırıldığını denetlemenin en iyi yoludur. Önceki adımdan erişim belirtecinin değerini kopyalayın. Yetkilendirme üst bilgisindeki dizenin
Bearer
büyük "B" olması önemlidir. Data Lake Store örneğinizin adını Azure portalındaki Data Lake Store bölmesinin Genel Bakış bölümünde bulabilirsiniz.curl https://<YOUR_ADLS_NAME>.azuredatalakestore.net/webhdfs/v1/?op=LISTSTATUS -H "Authorization: Bearer <ACCESS_TOKEN>"
Başarılı bir yanıt şöyle görünür:
{"FileStatuses":{"FileStatus":[{"length":0,"pathSuffix":"TestFolder","type":"DIRECTORY","blockSize":0,"accessTime":1507934941392,"modificationTime":1508105430590,"replication":0,"permission":"770","owner":"bd0e76d8-ad45-4fe1-8941-04a7bf27f071","group":"bd0e76d8-ad45-4fe1-8941-04a7bf27f071"}]}}
Şimdi Data Lake Store örneğine bir dosya yükleyin. Önce karşıya yüklenecek dosyayı oluşturun.
echo "Test file." > Test1.txt
cURL kullanarak, dosyayı daha önce oluşturduğunuz klasöre yüklemek için Data Lake Store dosya sisteminizin REST uç noktasına bir istek gönderin. Karşıya yükleme işlemi bir yeniden yönlendirme içerir ve cURL yeniden yönlendirmeyi otomatik olarak izler.
curl -i -X PUT -L -T Test1.txt -H "Authorization: Bearer <ACCESS_TOKEN>" 'https://<YOUR_ADLS_NAME>.azuredatalakestore.net/webhdfs/v1/<FOLDER_NAME>/Test1.txt?op=CREATE'
Başarılı bir yanıt şöyle görünür:
HTTP/1.1 100 Continue HTTP/1.1 307 Temporary Redirect Cache-Control: no-cache, no-cache, no-store, max-age=0 Pragma: no-cache Expires: -1 Location: https://mytestadls.azuredatalakestore.net/webhdfs/v1/TestFolder/Test1.txt?op=CREATE&write=true x-ms-request-id: 756f6b24-0cca-47ef-aa12-52c3b45b954c ContentLength: 0 x-ms-webhdfs-version: 17.04.22.00 Status: 0x0 X-Content-Type-Options: nosniff Strict-Transport-Security: max-age=15724800; includeSubDomains Date: Sun, 15 Oct 2017 22:10:30 GMT Content-Length: 0 HTTP/1.1 100 Continue HTTP/1.1 201 Created Cache-Control: no-cache, no-cache, no-store, max-age=0 Pragma: no-cache Expires: -1 Location: https://mytestadls.azuredatalakestore.net/webhdfs/v1/TestFolder/Test1.txt?op=CREATE&write=true x-ms-request-id: af5baa07-3c79-43af-a01a-71d63d53e6c4 ContentLength: 0 x-ms-webhdfs-version: 17.04.22.00 Status: 0x0 X-Content-Type-Options: nosniff Strict-Transport-Security: max-age=15724800; includeSubDomains Date: Sun, 15 Oct 2017 22:10:30 GMT Content-Length: 0
Son olarak, artık Data Lake Store dosya sistemi için diğer API'leri kullanarak dosyalara ekleyebilir, dosyaları indirebilir ve daha fazlasını yapabilirsiniz.
Azure Depolama’ya erişmek için Linux VM sistem tarafından atanan yönetilen kimliği kullanma
Bu öğreticide Azure Depolama'ya erişmek amacıyla bir Linux sanal makinesi (VM) için sistem tarafından atanmış yönetilen bir kimliği nasıl kullanacağınız gösterilmektedir.
Nasıl yapılacağını öğrenin:
- Depolama hesabı oluşturma
- Depolama hesabında bir blob kapsayıcı oluşturma
- Azure Depolama kapsayıcısına Linux VM’sinin Yönetilen Kimlik erişimini verme
- Erişim belirteci alma ve bu belirteci Azure Depolama’yı çağırmak için kullanma
Depolama hesabı oluşturma
Bu örnekte CLI betiklerini çalıştırmak için iki seçeneğiniz vardır:
- Azure portaldan veya her kod bloğunun sağ üst köşesinde bulunan Deneyin düğmesiyle Azure Cloud Shell'i kullanın.
- Yerel bir CLI konsolu kullanmayı tercih ediyorsanız en son CLI 2.0 sürümünü yükleyin (2.0.23 veya üstü).
İlk olarak bir depolama hesabı oluşturun.
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’ı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'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'ne ve ardından Kapsayıcılar'a tıklayın.
Sayfanın üst kısmındaki + Kapsayıcı'ya tıklayın.
Yeni kapsayıcı'yı seçin ve kapsayıcı için bir ad girin.
Genel erişim düzeyinin varsayılan değer olduğundan emin olun.
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.
Kapsayıcı adını ve ardından Karşıya Yükle'yi seçin. Bu işlem, dosyayı yeni oluşturulan kapsayıcıya yükler.
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.
Dosyayı ve ardından Karşıya Yükle'yi seçin.
VM'nize Azure Depolama kapsayıcısı için erişim izni verme
Azure depolama blobundaki verileri almak için VM’nin yönetilen kimliğini kullanabilirsiniz. Azure kaynakları için yönetilen kimlikler, Microsoft Entra kimlik doğrulamasını destekleyen kaynaklarda kimlik doğrulaması yapmak için kullanılabilir. Depolama hesabınızı içeren kaynak grubunun kapsamında yönetilen kimliğe depolama-blob-veri okuyucu rolünü atayarak erişim izni verin.
Ayrıntılı adımlar için bkz. Azure portalı kullanarak Azure rolleri atama.
Not
Depolama izinleri vermek için kullanabileceğiniz çeşitli roller hakkında daha fazla bilgi için Bkz . Microsoft Entra Id kullanarak bloblara ve kuyruklara erişim yetkisi verme
Erişim belirteci alma ve bu belirteci Azure Depolama’yı çağırmak için kullanma
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, Azure Depolama'nın Microsoft Entra ID ile tümleştirmesinin bir parçasıdır ve bağlantı dizesi kimlik bilgilerini sağlamaktan farklıdır.
Aşağıdaki adımları tamamlamak için, daha önce oluşturulmuş olan VM’den çalışmanız gerekir ve buna bağlanmak için de SSH istemciniz olmalıdır.
Windows kullanıyorsanız, Linux için Windows Alt Sistemi'ndeki 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.
Azure portalında Sanal Makineler gidin, Linux sanal makinenize gidin, ardından Genel Bakış sayfasında Bağlan'ı seçin. VM'nize bağlanma dizesini kopyalayın.
Tercih ettiğiniz SSH istemciyle VM'ye bağlanın.
Terminal penceresinde, Azure Depolama için erişim belirteci almak üzere yerel Yönetilen Kimlik uç noktasına istekte bulunmak için CURL'yi kullanın.
curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fstorage.azure.com%2F' -H Metadata:true
Azure Depolama'ya erişmek için erişim belirtecini kullanın. Örneğin, daha önce kapsayıcıya yüklediğiniz örnek dosyanın içeriğini okumak için ,
<CONTAINER NAME>
ve<FILE NAME>
değerlerini<STORAGE ACCOUNT>
daha önce belirttiğiniz değerlerle ve<ACCESS TOKEN>
önceki adımda döndürülen belirteçle değiştirin.curl https://<STORAGE ACCOUNT>.blob.core.windows.net/<CONTAINER NAME>/<FILE NAME> -H "x-ms-version: 2017-11-09" -H "Authorization: Bearer <ACCESS TOKEN>"
Yanıt, dosyanın içeriklerini kapsar:
Hello world! :)
Son olarak, belirteci bir değişkende depolayabilir ve gösterildiği gibi ikinci komuta geçirebilirsiniz:
# Run the first curl command and capture its output in a variable
access_token=$(curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fstorage.azure.com%2F' -H Metadata:true | jq -r '.access_token')
# Run the second curl command with the access token
curl "https://<STORAGE ACCOUNT>.blob.core.windows.net/<CONTAINER NAME>/<FILE NAME>" \
-H "x-ms-version: 2017-11-09" \
-H "Authorization: Bearer $access_token"
Sas kimlik bilgileri aracılığıyla Azure Depolama'ya erişmek için Linux VM sistem tarafından atanan yönetilen kimliği kullanma
Bu öğreticide, depolama Paylaşılan Erişim İmzası (SAS) kimlik bilgilerini almak üzere Linux sanal makinesi (VM) için sistem tarafından atanan yönetilen kimliğin nasıl kullanılacağı gösterilir; özellikle, bir Hizmet SAS kimlik bilgisi.
Not
Bu öğreticide oluşturulan SAS anahtarı VM'ye kısıtlanmaz/bağlanmaz.
Hizmet SAS’si, hesap erişim anahtarını göstermeden depolama hesabındaki nesnelere sınırlı erişim sağlar. Erişim, sınırlı bir süre ve belirli bir hizmet için sağlanabilir. Depolama işlemleri yaparken sas kimlik bilgilerini her zamanki gibi kullanabilirsiniz; örneğin, Depolama SDK'sını kullanırken. Bu öğreticide Azure Depolama CLI kullanarak bir blob yükleyip indireceksiniz.
Nasıl yapılacağını öğrenin:
- Depolama hesabı oluşturma
- Depolama hesabında bir blob kapsayıcısı 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
Depolama hesabı oluşturma
Henüz bir hesabınız yoksa bir depolama hesabı oluşturmanız gerekir. Bu adımı atlayıp VM sistem tarafından atanan yönetilen kimliğinize mevcut bir depolama hesabının anahtarları için erişim vermeyi seçebilirsiniz.
Azure portalının sol üst köşesinde bulunan +/Yeni hizmet oluştur düğmesini seçin.
Depolama'yı, ardından Depolama Hesabı'nı seçin, ardından Depolama hesabı oluştur paneli görüntülenir.
Depolama hesabı için bir Ad girin. Daha sonra gerek duyacağınız için bu adı unutmayın.
Dağıtım modelinin Resource Manager, Hesap türünün ise Genel amaçlı olarak ayarlandığından emin olun.
Abonelik ve Kaynak Grubu'nun VM'nizi oluştururken belirttiğinizlerle eşleştiğinden emin olun.
Depolama hesabı oluşturmayı tamamlamak 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, dosyanın depolandığı 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üntülenir.
Kapsayıcıya bir ad verin, bir erişim düzeyi seçin ve ardından Tamam'ı seçin. Öğreticide daha sonra belirttiğiniz ada ihtiyacınız olacaktı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ğrulamasını yerel olarak desteklediğinden, Resource Manager'dan depolama SAS'sini almak için VM'nizin sistem tarafından atanan yönetilen kimliğini kullanabilirsiniz. Ardından depolamaya erişmek için SAS kullanabilirsiniz.
Bu bölümde, VM'nizin sistem tarafından atanan yönetilen kimliğine depolama hesabınızın SAS'sine erişim verirsiniz. Depolama hesabınızı içeren kaynak grubunun kapsamında yönetilen kimliğe Depolama Hesabı Katkıda Bulunanı rolünü atayın.
Ayrıntılı adımlar için bkz. Azure portalı kullanarak Azure rolleri atama.
Not
Depolama izinleri vermek için kullanabileceğiniz çeşitli roller hakkında daha fazla bilgi için Bkz . Microsoft Entra Id kullanarak bloblara ve kuyruklara erişim yetkisi verme.
VM kimliğini kullanarak erişim belirteci alma ve Azure Resource Manager çağrısı yapmak için bunu kullanma
Bu öğreticinin geri kalanında, daha önce oluşturduğunuz VM'den çalışırsınız.
Bu adımları tamamlamak için bir SSH istemciniz olması gerekir. Windows kullanıyorsanız, Linux için Windows Alt Sistemi SSH istemcisini kullanabilirsiniz. SSH istemcinizin anahtarlarını yapılandırma konusunda yardıma ihtiyacınız varsa bkz:
- Azure'da Windows ile SSH anahtarları kullanma
- Azure'da Linux VM'leri için SSH ortak ve özel anahtar çifti oluşturma ve kullanma.
SSH istemcinizi aldıktan sonra şu adımları izleyin:
- Azure portalında Sanal Makineler gidin ve ardından Linux sanal makinenize gidin.
- Genel Bakış sayfasında, ekranın üst kısmındaki Bağlan'ı seçin.
- VM'nize bağlanma dizesini kopyalayın.
- SSH istemcinizi kullanarak VM'nize bağlanın.
- Linux VM'sini oluştururken eklediğiniz Parolanızı girin. Bundan sonra başarıyla oturum açabilmeniz gerekir.
- Azure Resource Manager'ın erişim anahtarını almak için CURL kullanın.
Erişim belirteci için CURL istek ve yanıtı aşağıda yer alır:
curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fmanagement.azure.com%2F' -H Metadata:true
Not
Önceki istekte 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.
Aşağıdaki yanıtta, access_token öğesi kısaldı.
{
"access_token":"eyJ0eXAiOiJ...",
"refresh_token":"",
"expires_in":"3599",
"expires_on":"1504130527",
"not_before":"1504126627",
"resource":"https://management.azure.com",
"token_type":"Bearer"
}
Depolama çağrıları yapmak için Azure Resource Manager'dan SAS kimlik bilgileri alma
Ardından, önceki bölümde aldığımız erişim belirtecini kullanarak Resource Manager'ı çağırmak için CURL kullanın. Depolama SAS kimlik bilgileri oluşturmak için bunu kullanın. SAS kimlik bilgilerine sahip olduktan sonra depolama karşıya yükleme/indirme 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.
}
SAS kimlik bilgileri için POST isteğinin gövdesine bu parametreleri ekleyin. SAS kimliği oluştururken kullanılan parametreler hakkında daha fazla bilgi için bkz. Liste Hizmeti SAS REST başvurusu.
SAS kimlik bilgilerini almak için aşağıdaki CURL isteğini kullanın. <SUBSCRIPTION ID>
, <RESOURCE GROUP>
, <STORAGE ACCOUNT NAME>
, <CONTAINER NAME>
ve <EXPIRATION TIME>
parametre değerlerini kendi değerlerinizle değiştirmeyi unutmayın. <ACCESS TOKEN>
değerini daha önce aldığınız erişim belirteciyle değiştirin:
curl https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE ACCOUNT NAME>/listServiceSas/?api-version=2017-06-01 -X POST -d "{\"canonicalizedResource\":\"/blob/<STORAGE ACCOUNT NAME>/<CONTAINER NAME>\",\"signedResource\":\"c\",\"signedPermission\":\"rcw\",\"signedProtocol\":\"https\",\"signedExpiry\":\"<EXPIRATION TIME>\"}" -H "Authorization: Bearer <ACCESS TOKEN>"
Not
Önceki URL'deki metin büyük/küçük harfe duyarlıdır, bu nedenle kaynak gruplarınızın uygun şekilde yansıtması için büyük küçük harf kullanıp kullanmadığınızdan emin olun. Ayrıca bunun GET isteği değil POST isteği olduğunu bilmeniz önemlidir.
CURL yanıtı SAS kimlik bilgilerini döndürür:
{"serviceSasToken":"sv=2015-04-05&sr=c&spr=https&st=2017-09-22T00%3A10%3A00Z&se=2017-09-22T02%3A00%3A00Z&sp=rcw&sig=QcVwljccgWcNMbe9roAJbD8J5oEkYoq%2F0cUPlgriBn0%3D"}
Linux VM'de aşağıdaki komutu kullanarak blob depolama kapsayıcınıza yüklemek için örnek bir blob dosyası oluşturun:
echo "This is a test file." > test.txt
Ardından, SAS kimlik bilgilerini kullanarak CLI az storage
komutuyla kimlik doğrulaması yapın ve dosyayı blob kapsayıcısına yükleyin. Bu adım için, henüz yüklemediyseniz VM'nize en son Azure CLI'yı yüklemeniz gerekir.
az storage blob upload --container-name
--file
--name
--account-name
--sas-token
Yanıt:
Finished[#############################################################] 100.0000%
{
"etag": "\"0x8D4F9929765C139\"",
"lastModified": "2017-09-21T03:58:56+00:00"
}
Azure CLI'yi kullanarak ve SAS kimlik bilgileriyle kimlik doğrulaması yaparak da dosyayı indirebilirsiniz.
İstek:
az storage blob download --container-name
--file
--name
--account-name
--sas-token
Yanıt:
{
"content": null,
"metadata": {},
"name": "testblob",
"properties": {
"appendBlobCommittedBlockCount": null,
"blobType": "BlockBlob",
"contentLength": 16,
"contentRange": "bytes 0-15/16",
"contentSettings": {
"cacheControl": null,
"contentDisposition": null,
"contentEncoding": null,
"contentLanguage": null,
"contentMd5": "Aryr///Rb+D8JQ8IytleDA==",
"contentType": "text/plain"
},
"copy": {
"completionTime": null,
"id": null,
"progress": null,
"source": null,
"status": null,
"statusDescription": null
},
"etag": "\"0x8D4F9929765C139\"",
"lastModified": "2017-09-21T03:58:56+00:00",
"lease": {
"duration": null,
"state": "available",
"status": "unlocked"
},
"pageBlobSequenceNumber": null,
"serverEncrypted": false
},
"snapshot": null
}
Erişim anahtarı aracılığıyla Azure Depolama'ya erişmek için Linux VM sistem tarafından atanan yönetilen kimliği kullanma
Bu öğreticide depolama hesabı erişim anahtarlarını almak amacıyla bir Linux sanal makinesi (VM) için sistem tarafından atanmış yönetilen bir kimliği nasıl kullanacağınız gösterilmektedir. Depolama işlemleri yaparken her zamanki gibi bir depolama erişim anahtarı kullanabilirsiniz; örneğin, Depolama SDK'sını kullanırken. Bu öğreticide, Azure CLI kullanarak blobları karşıya yükler ve indirirsiniz.
Nasıl yapılacağını öğrenin:
- VM’inize Resource Manager’da yer alan depolama hesabı erişim anahtarı için erişim verme
- VM'nizin kimliğini kullanarak erişim belirteci alma ve Resource Manager'dan depolama erişim anahtarlarını almak için bu belirteci kullanma
Depolama hesabı oluşturma
Bu öğreticiye başlamadan önce mevcut bir depolama hesabınız yoksa bir tane oluşturmanız gerekir. Mevcut bir depolama hesabınız varsa, vm sistem tarafından atanan yönetilen kimliğinize mevcut depolama hesabınızın anahtarları için erişim vermek için bu adımları izleyin.
Azure portalının sol üst köşesinde bulunan +/Yeni hizmet oluştur düğmesini seçin.
Depolama'yı, ardından Depolama Hesabı'nı seçin, ardından Depolama hesabı oluştur paneli görüntülenir.
Depolama hesabı için bir Ad girin. Daha sonra gerek duyacağınız için bu adı unutmayın.
Dağıtım modelinin Resource Manager, Hesap türünün ise Genel amaçlı olarak ayarlandığından emin olun.
Abonelik ve Kaynak Grubu'nun VM'nizi oluştururken belirttiğinizlerle eşleştiğinden emin olun.
Depolama hesabı oluşturmayı tamamlamak 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, dosyanın depolandığı 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üntülenir.
Kapsayıcıya bir ad verin, bir erişim düzeyi seçin ve ardından Tamam'ı seçin. Öğreticide daha sonra belirttiğiniz ada ihtiyacınız olacaktır.
Depolama hesabı erişim anahtarlarını 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 bir depolama SAS'sini almak için VM'nizin sistem tarafından atanan yönetilen kimliğini 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. Depolama hesabınızı içeren kaynak grubunun kapsamında yönetilen kimliğe Depolama Hesabı Katkıda Bulunanı rolünü atayarak erişim izni verin.
Ayrıntılı adımlar için bkz. Azure portalı kullanarak Azure rolleri atama.
Not
Depolama izinleri vermek için kullanabileceğiniz çeşitli roller hakkında daha fazla bilgi için Bkz . Microsoft Entra Id kullanarak bloblara ve kuyruklara erişim yetkisi verme.
VM kimliğini kullanarak erişim belirteci alma ve Azure Resource Manager çağrısı yapmak için bunu kullanma
Öğreticinin geri kalanında, daha önce oluşturduğumuz VM'den çalışırız.
Bu adımları tamamlamak bir SSH istemciniz olmalıdır. Windows kullanıyorsanız, Linux için Windows Alt Sistemi'ndeki 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.
Azure portalında Sanal Makineler gidin, Linux sanal makinenizi seçin, ardından Genel Bakış sayfasından üstteki Bağlan'ı seçin. VM'nize bağlanma dizesini kopyalayın.
SSH istemcinizi kullanarak VM'nize bağlanın.
Ardından, Linux VM'sini oluştururken eklediğiniz Parolayı girmeniz gerekir.
Azure Resource Manager'ın erişim anahtarını almak için CURL kullanın.
Erişim belirteci için CURL istek ve yanıtı aşağıda yer alır:
curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fmanagement.azure.com%2F' -H Metadata:true
Not
Önceki istekte, "resource" parametresinin 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. Aşağıdaki yanıtta, access_token öğesi kısaltılmıştır.
{ "access_token": "eyJ0eXAiOiJ...", "refresh_token": "", "expires_in": "3599", "expires_on": "1504130527", "not_before": "1504126627", "resource": "https://management.azure.com", "token_type": "Bearer" }
Depolama çağrıları yapmak için Azure Resource Manager'dan depolama hesabı erişim anahtarları alma
Şimdi depolama erişim anahtarını almak için önceki bölümde aldığımız erişim belirtecini kullanarak Resource Manager'ı çağırmak için CURL kullanın. Depolama erişim anahtarımızı aldıktan sonra, depolama karşıya yükleme/indirme işlemlerini çağırabiliriz. <SUBSCRIPTION ID>
, <RESOURCE GROUP>
ve <STORAGE ACCOUNT NAME>
parametre değerlerini kendi değerlerinizden değiştirmeyi unutmayın. <ACCESS TOKEN>
değerini daha önce aldığınız erişim belirteciyle değiştirin:
curl https://management.azure.com/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>/providers/Microsoft.Storage/storageAccounts/<STORAGE ACCOUNT NAME>/listKeys?api-version=2016-12-01 --request POST -d "" -H "Authorization: Bearer <ACCESS TOKEN>"
Not
Önceki URL'nin metni büyük/küçük harfe duyarlıdır; bu nedenle Kaynak Gruplarınız için büyük/küçük harf kullanımının bunu düzgün yansıttığından emin olun. Ayrıca, bir GET isteği değil POST isteği olduğunu bilmeniz ve -d ile NULL olabilecek uzunluk sınırını yakalamak üzere bir değer geçirmeniz de önemlidir.
CURL yanıtı Anahtarların listesini verir:
{"keys":[{"keyName":"key1","permissions":"Full","value":"iqDPNt..."},{"keyName":"key2","permissions":"Full","value":"U+uI0B..."}]}
Blob depolama kapsayıcısına yüklemek için örnek bir blob dosyası oluşturun. Linux VM'sinde bunu aşağıdaki komutla yapabilirsiniz.
echo "This is a test file." > test.txt
Ardından depolama erişim anahtarını kullanarak CLI az storage
komutuyla kimlik doğrulaması yapın ve dosyayı blob kapsayıcısına yükleyin. Bu adım için, henüz yüklemediyseniz VM'nize en son Azure CLI'yı yüklemeniz gerekir.
az storage blob upload -c <CONTAINER NAME> -n test.txt -f test.txt --account-name <STORAGE ACCOUNT NAME> --account-key <STORAGE ACCOUNT KEY>
Yanıt:
Finished[#############################################################] 100.0000%
{
"etag": "\"0x8D4F9929765C139\"",
"lastModified": "2017-09-12T03:58:56+00:00"
}
Ayrıca dosyayı Azure CLI kullanarak indirebilir ve kimlik doğrulamasını depolama erişim anahtarıyla yapabilirsiniz.
İstek:
az storage blob download -c <CONTAINER NAME> -n test.txt -f test-download.txt --account-name <STORAGE ACCOUNT NAME> --account-key <STORAGE ACCOUNT KEY>
Yanıt:
{
"content": null,
"metadata": {},
"name": "test.txt",
"properties": {
"appendBlobCommittedBlockCount": null,
"blobType": "BlockBlob",
"contentLength": 21,
"contentRange": "bytes 0-20/21",
"contentSettings": {
"cacheControl": null,
"contentDisposition": null,
"contentEncoding": null,
"contentLanguage": null,
"contentMd5": "LSghAvpnElYyfUdn7CO8aw==",
"contentType": "text/plain"
},
"copy": {
"completionTime": null,
"id": null,
"progress": null,
"source": null,
"status": null,
"statusDescription": null
},
"etag": "\"0x8D5067F30D0C283\"",
"lastModified": "2017-09-28T14:42:49+00:00",
"lease": {
"duration": null,
"state": "available",
"status": "unlocked"
},
"pageBlobSequenceNumber": null,
"serverEncrypted": false
},
"snapshot": null
}
Azure Key Vault'a erişmek için Linux VM sistem tarafından atanan yönetilen kimliği kullanma
Bu öğreticide, Linux 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 daha sonra 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 Hizmet Kimlikleri Azure tarafından otomatik olarak yönetilir ve kodunuzdaki 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'nin kimliğini kullanarak erişim belirteci alma ve anahtarı Key Vault'tan almak için kullanma
Key Vault oluşturma
Ayrıca sistem tarafından atanan yönetilen kimliklerin etkinleştirildiği bir Linux Sanal makinesine de ihtiyacınız vardır.
- Bu öğretici için bir sanal makine oluşturmanız gerekiyorsa Azure portalıyla Linux sanal makinesi oluşturma başlıklı makaleyi izleyebilirsiniz
İ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. Kodunuz, Azure kaynakları için yönetilen kimlikleri kullanarak 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'a tıklayın.
Oluştur'u belirleyin.
Yeni anahtar kasası için bir Ad belirtin.
Bu öğretici için kullandığınız sanal makineyi oluşturduğunuz aboneliği ve kaynak grubunu seçtiğinizden emin olmak için tüm gerekli bilgileri doldurun.
Gözden geçir+ oluştur'u ve ardından Oluştur'u seçin.
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 kullanacaksınız. Ancak aynı kavramlar bu sanal makinede yürütülen tüm kodlar için de 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 bölümünde, Karşıya yükleme seçenekleri'ne gidin ve El ile seçeneğinin belirlendiğinden emin olun.
Gizli dizi için bir ad ve değer girin. Değer, istediğiniz herhangi bir şey olabilir.
Etkinleştirme tarihini ve sona erme tarihini temiz bırakın ve Etkin'in Evet olarak ayarlandığından emin olun.
Gizli diziyi oluşturmak için Oluştur'u seçin.
Erişim verme
Sanal makine tarafından kullanılan yönetilen kimliğin Key Vault'ta depolanan gizli diziyi okumak için erişimi olmalıdır.
Yeni oluşturduğunuz Key Vault'a gidin.
Sol gezinti bölmesinden Erişim İlkesi'ni seçin.
Erişim İlkesi Ekle'yi seçin.
Şablondan yapılandır (isteğe bağlı) altındaki Erişim ilkesi ekle bölümünde, 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 adımları tamamlamak bir SSH istemciniz olmalıdır. Windows kullanıyorsanız, Linux için Windows Alt Sistemi'ndeki 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.
Önemli
Tüm Azure SDK'ları, hedef hizmetlere erişmek için Microsoft Entra belirteçleri almayı kolaylaştıran Azure.Identity kitaplığını destekler. Azure SDK'ları ve Azure.Identity kitaplığına erişme hakkında daha fazla bilgi edinin.
- 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 cURL kullanarak Azure Key Vault için erişim belirteci almak üzere Azure kaynakları uç noktasına yönelik yerel yönetilen kimliklere istekte bulunabilirsiniz. Erişim belirteci için CURL isteği aşağıda yer alır.
curl 'http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fvault.azure.net' -H Metadata:true
```
The response includes the access token you need to access Resource Manager.
Response:
```bash
{"access_token":"eyJ0eXAi...",
"refresh_token":"",
"expires_in":"3599",
"expires_on":"1504130527",
"not_before":"1504126627",
"resource":"https://vault.azure.net",
"token_type":"Bearer"}
Azure Key Vault’ta kimlik doğrulamak için bu erişim belirtecini kullanabilirsiniz. Sonraki CURL isteği, CURL ve Key Vault REST API kullanarak Key Vault’tan nasıl gizli dizi okunacağını gösterir. Key Vault'un Genel Bakış sayfasının Temel Parçalar bölümünde yer alan Key Vault'unuzun URL'sine ihtiyacınız vardır. Ayrıca önceki çağrıda edindiğiniz erişim belirtecinin de olması gerekir.
curl 'https://<YOUR-KEY-VAULT-URL>/secrets/<secret-name>?api-version=2016-10-01' -H "Authorization: Bearer <ACCESS TOKEN>"
Yanıt şöyle görünür:
{"value":"p@ssw0rd!","id":"https://mytestkeyvault.vault.azure.net/secrets/MyTestSecret/7c2204c6093c4d859bc5b9eff8f29050","attributes":{"enabled":true,"created":1505088747,"updated":1505088747,"recoveryLevel":"Purgeable"}}
Key Vault'tan gizli diziyi aldıktan sonra, ad ve parola gerektiren bir hizmette kimlik doğrulaması yapmak için kullanabilirsiniz.
Kaynakları temizleme
Kaynakları temizlemeye hazır olduğunuzda Azure portalında oturum açın, Kaynak grupları'nı seçin, ardından bu öğreticinin sürecinde oluşturulan kaynak grubunu bulun ve seçin, örneğinmi-test
. Kaynak grubunu sil komutunu veya PowerShell veya CLI aracılığıyla kullanabilirsiniz.
Resource Manager'da bir kaynak grubuna erişmek için Linux 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 Linux Sanal Makinesine (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.
Şunları yapmayı öğreneceksiniz:
- VM'nize Azure resource manager erişimi verin.
- Kaynak yöneticisine 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 sekmesindeki Erişim ata seçeneğinde 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ç seçeneğinde açılan listeden VM'nizi 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 kaynak yöneticisini ç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.
- Azure portalında Linux VM'nize gidin.
- Genel Bakış'ta Bağlan'ı seçin.
- Tercih ettiğiniz SSH istemciyle VM'ye bağlanın.
- Terminal penceresinde kullanarak Azure
curl
kaynak yöneticisi 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. Kaynak yöneticisi kaynak kimliği söz konusu olduğunda, URI'ye sondaki eğik çizgiyi eklemeniz gerekir.
Yanıt, Azure resource manager'a erişmek için ihtiyacınız olan erişim belirtecini içerir.
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 içindeki resourceGroup
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"
}
}
Resource Manager'da bir kaynak grubuna erişmek için Linux VM kullanıcı 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 kullanıcı tarafından atanan bir kimliğin nasıl oluşturulacağı, bir Linux Sanal Makinesine (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.
Kullanıcı tarafından atanan yönetilen kimliği oluşturmak için az identity create kullanın. -g
parametresi kullanıcı tarafından atanan yönetilen kimliğin oluşturulduğu kaynak grubunu belirtirken, -n
parametresi de bunun adını belirtir. <RESOURCE GROUP>
ve <UAMI NAME>
parametre değerlerini kendi değerlerinizle değiştirmeyi unutmayın:
Ö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.
az identity create -g <RESOURCE GROUP> -n <UAMI NAME>
Yanıt, aşağıdaki örneğe benzer biçimde, oluşturulmuş kullanıcı tarafından atanan yönetilen kimliğin ayrıntılarını içerir. Kullanıcı tarafından atanan yönetilen kimliğinizin id
değerini not alın, çünkü bu değer sonraki adımda kullanılacaktır:
{
"clientId": "00001111-aaaa-2222-bbbb-3333cccc4444",
"clientSecretUrl": "https://control-westcentralus.identity.azure.net/subscriptions/<SUBSCRIPTON ID>/resourcegroups/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<UAMI NAME>/credentials?tid=5678&oid=9012&aid=aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb",
"id": "/subscriptions/<SUBSCRIPTON ID>/resourcegroups/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<UAMI NAME>",
"location": "westcentralus",
"name": "<UAMI NAME>",
"principalId": "9012",
"resourceGroup": "<RESOURCE GROUP>",
"tags": {},
"tenantId": "aaaabbbb-0000-cccc-1111-dddd2222eeee",
"type": "Microsoft.ManagedIdentity/userAssignedIdentities"
}
Linux VM'nize kimlik atama
Kullanıcı tarafından atanan yönetilen kimlik, istemciler tarafından birden çok Azure kaynağında kullanılabilir. Aşağıdaki komutları kullanarak kullanıcı tarafından atanan yönetilen kimliği tek bir VM'ye atayın. -IdentityID
parametresi için önceki adımda döndürülen Id
özelliğini kullanın.
Az vm identity assign komutunu kullanarak Linux VM'nize kullanıcı tarafından atanan yönetilen kimliği atayın. <RESOURCE GROUP>
ve <VM NAME>
parametre değerlerini kendi değerlerinizle değiştirmeyi unutmayın. --identities
parametre değeri için önceki adımda döndürülen id
özelliğini kullanın.
az vm identity assign -g <RESOURCE GROUP> -n <VM NAME> --identities "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/<RESOURCE GROUP>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<UAMI NAME>"
Azure Resource Manager'da kaynak grubuna erişim izni verme
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 kimliklerdir. 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 grubu. <SUBSCRIPTION ID>
ve <RESOURCE GROUP>
değerini ortamınıza uyacak şekilde güncelleştirin. Buna ek olarak, <UAMI PRINCIPALID>
özelliğini Kullanıcı tarafından atanan yönetilen kimlik oluşturma bölümünde az identity create
komutuyla döndürülen principalId
özelliğiyle değiştirin:
az role assignment create --assignee <UAMI PRINCIPALID> --role 'Reader' --scope "/subscriptions/<SUBSCRIPTION ID>/resourcegroups/<RESOURCE GROUP> "
Yanıt, aşağıdaki örneğe benzer biçimde, oluşturulan rol atamasının ayrıntılarını içerir:
{
"id": "/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>/providers/Microsoft.Authorization/roleAssignments/00000000-0000-0000-0000-000000000000",
"name": "00000000-0000-0000-0000-000000000000",
"properties": {
"principalId": "aaaaaaaa-bbbb-cccc-1111-222222222222",
"roleDefinitionId": "/subscriptions/<SUBSCRIPTION ID>/providers/Microsoft.Authorization/roleDefinitions/00000000-0000-0000-0000-000000000000",
"scope": "/subscriptions/<SUBSCRIPTION ID>/resourceGroups/<RESOURCE GROUP>"
},
"resourceGroup": "<RESOURCE GROUP>",
"type": "Microsoft.Authorization/roleAssignments"
}
VM kimliğini kullanarak erişim belirteci alma ve Resource Manager çağrısı yapmak için bunu kullanma
İpucu
Bu makaledeki adımlar, başladığınız portala göre biraz değişiklik gösterebilir.
Öğreticinin geri kalanında, daha önce oluşturduğunuz VM'den çalışırsınız.
Bu adımları tamamlamak bir SSH istemciniz olmalıdır. Windows kullanıyorsanız, Linux için Windows Alt Sistemi'ndeki SSH istemcisini kullanabilirsiniz.
Azure Portal’ında oturum açın.
Portalda, Sanal Makineler'e ve Linux sanal makinesine gidin, ardından Genel Bakış'ta Bağlan'a tıklayın. VM'nize bağlanma dizesini kopyalayın.
Tercih ettiğiniz SSH istemciyle VM'ye bağlanın. Windows kullanıyorsanız, Linux için Windows Alt Sistemi'ndeki 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.
Terminal penceresinde CURL kullanarak Azure Örnek Meta Veri Hizmeti (IMDS) kimlik uç noktasına Azure Resource Manager için erişim belirteci alma isteğinde bulunabilirsiniz.
Erişim belirtecini almaya yönelik CURL isteği aşağıdaki örnekte gösterilmektedir.
<CLIENT ID>
özelliğinin Kullanıcı tarafında atanan yönetilen kimlik oluşturma bölümündeaz identity create
komutuyla döndürülenclientId
özelliğiyle değiştirildiğinden emin olun:curl -H Metadata:true "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https%3A%2F%2Fmanagement.azure.com/&client_id=<UAMI CLIENT ID>"
Not
Parametresinin
resource
değeri, Microsoft Entra Id tarafından beklenen değerle tam olarak eşleşmelidir. Resource Manager kaynak kimliği kullanıldığında, URI'nin sonundaki eğik çizgiyi de eklemelisiniz.Yanıtta, Azure Resource Manager’a erişmek için ihtiyacınız olan erişim belirteci vardır.
Yanıt örneği:
{ "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 erişim belirtecini kullanın ve kullanıcı tarafından atanan yönetilen kimlik erişiminizi daha önce vermiş olduğunuz kaynak grubunun özelliklerini okuyun.
<SUBSCRIPTION ID>
,<RESOURCE GROUP>
değerlerinin daha önce belirttiğiniz değerlerle ve<ACCESS TOKEN>
öğesinin önceki adımda döndürülen belirteçle değiştirildiğinden emin olun.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 harfle aynı büyük/küçük harf kullandığınızdan ve içindeki
resourceGroups
büyük harf "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>"
Yanıt, aşağıdaki örneğe benzer şekilde belirli kaynak grubu bilgilerini içerir:
{ "id":"/subscriptions/<SUBSCRIPTION ID>/resourceGroups/DevTest", "name":"DevTest", "location":"westus", "properties":{"provisioningState":"Succeeded"} }