Öğretici: SAS kimlik bilgisiyle Azure Depolama'ya erişmek için Linux VM sistem tarafından atanan kimliğini 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 alanı Paylaşılan Erişim İmzası (SAS) kimlik bilgilerini almak üzere bir Linux sanal makinesi (VM) için sistem tarafından atanan yönetilen bir kimliği nasıl kullanacağınız gösterilmektedir. Özellikle, bir Hizmet SAS kimlik bilgileri.

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, örneğin Depolama SDK'sını kullanırken SAS kimlik bilgilerini olağan şekilde kullanabilirsiniz. Bu öğreticide, Azure Depolama CLI kullanarak bir blobu karşıya yükleme ve indirme işlemini göstereceğiz. 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

Ö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

Henüz bir hesabınız yoksa, şimdi bir depolama hesabı oluşturacaksınız. 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 daha sonra kullanacağınız 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şturma ekranını gösteren ekran görüntüsü.

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

Daha sonra yeni depolama hesabına bir dosya yükleyip 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 paneldeki "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ı oluşturma ekranını gösteren ekran görüntüsü.

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, Vm'nizin sistem tarafından atanan yönetilen kimliğini kullanarak Resource Manager'dan bir depolama SAS'sini alabilir ve 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 Hesap 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

Öğreticinin geri kalanında, daha önce oluşturduğumuz VM'den çalışacağı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:

Artık SSH istemciniz olduğuna göre aşağıdaki adımlara geçin:

  1. Azure portalında Sanal Makineler gidin, Linux sanal makinenize gidin, 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 istenir. Bundan sonra başarıyla oturum açabilmeniz 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ı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

Şimdi bir depolama SAS kimliği oluşturmak için önceki bölümde aldığımız erişim belirtecini kullanarak Resource Manager'ı çağırmak için CURL kullanın. SAS kimlik bilgilerini aldıktan sonra, depolama karşıya yükleme/indirme işlemlerini çağırabiliriz.

Bu istek için, SAS kimlik bilgilerini oluşturmak için aşağıdaki HTTP isteği parametrelerini kullanacağız:

{
    "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.
}

Bu parametreler SAS kimlik bilgileri için isteğin POST gövdesine eklenmiştir. 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'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, bunun bir GET isteği değil POST isteği olduğunu bilmek de ö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"
}

Ayrıca dosyayı Azure CLI kullanarak indirebilir ve kimlik doğrulamasını SAS kimlik bilgileriyle yapabilirsiniz.

İ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
}

Sonraki adımlar

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