Öğretici: Erişim anahtarı yoluyla Azure Depolama'ya erişmek için Linux VM sistem tarafından atanan yönetilen kimliği kullanma

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

Bu öğreticide 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, örneğin Depolama SDK'sını kullanırken depolama erişim anahtarını olağan şekilde kullanabilirsiniz. Bu öğreticide, Azure CLI kullanarak blob'ları karşıya yüklüyor ve indiriyoruz. Şunları öğrenirsiniz:

  • 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

Önkoşullar

  • Azure kaynakları için yönetilen kimlikler özelliği hakkında bilgi sahibi değilseniz bu genel bakışı inceleyin.
  • Azure hesabınız yoksa, devam etmeden önce ücretsiz bir hesaba kaydolun.
  • Gerekli kaynak oluşturma ve rol yönetimini gerçekleştirmek için hesabınız uygun kapsamda (aboneliğiniz veya kaynak grubunuz) "Sahip" izinlerini gerektiriyor. Rol atama konusunda yardıma ihtiyacınız varsa bkz . Azure abonelik kaynaklarınıza erişimi yönetmek için Azure rolleri atama.

Depolama hesabı oluşturma

Bu öğreticide kullanmak istediğiniz mevcut bir depolama hesabınız yoksa bir tane oluşturmanız gerekir. Ayrıca bu adımı atlayabilir ve VM sistem tarafından atanan yönetilen kimliğinize mevcut depolama hesabının anahtarları için erişim verebilirsiniz.

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

  2. Depolama'ı seçip Hesap Depolama yeni bir "Depolama hesabı oluştur" paneli görüntülenir.

  3. Depolama hesabı için bir Ad girin.

  4. Dağıtım modeli ve Hesap türü sırasıyla "Resource Manager" ve "Genel amaçlı" olarak ayarlanmalıdır.

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

  6. Oluştur'u belirleyin.

    Yeni depolama hesabı oluşturmayı gösteren ekran görüntüsü.

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

Daha sonra yeni depolama hesabına dosya yükleyecek ve indireceğiz. Dosyalar için blob depolaması gerektiğinden, dosyanın depolanacağı bir blob kapsayıcısı oluşturmalıyız.

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

  2. Sol taraftaki "Blob hizmeti" altında Kapsayıcılar bağlantısını seçin.

  3. Sayfanın üst kısmındaki + Kapsayıcı'yı seçtiğinizde "Yeni kapsayıcı" paneli dışarı kayar.

  4. Kapsayıcıya bir ad verin, bir erişim düzeyi seçin ve ardından Tamam'ı seçin. Belirttiğiniz ad bu öğreticide daha sonra kullanılacaktır.

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

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.

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

  2. SSH istemcinizi kullanarak VM'nize bağlanın.

  3. Ardından, Linux VM'sini oluştururken eklediğiniz Parolayıgirmeniz gerekir.

  4. 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
}

Sonraki adımlar

Bu öğreticide, erişim anahtarı kullanarak Azure Depolama'ya erişmek için Linux VM sistem tarafından atanan yönetilen kimlik kullanmayı öğrendiniz. Azure Depolama erişim anahtarları hakkında daha fazla bilgi için bkz: