Azure CLI ile kapsayıcı veya blob için kullanıcı temsilcisi SAS'i oluşturma

Paylaşılan erişim imzası (SAS), depolama hesabınızdaki kapsayıcılara ve bloblara sınırlı erişim vermenizi sağlar. SAS oluşturduğunuzda, istemcinin erişmesine izin verilen Azure Depolama kaynakları, bu kaynaklar üzerinde sahip oldukları izinler ve SAS'nin ne kadar süre geçerli olduğu gibi sınırlamalarını belirtirsiniz.

Her SAS bir anahtarla imzalanır. SAS'i iki yoldan biriyle imzalayabilirsiniz:

  • Microsoft Entra kimlik bilgileri kullanılarak oluşturulan bir anahtarla. Microsoft Entra kimlik bilgileriyle imzalanan SAS, kullanıcı temsilcisi SAS'dir. Kullanıcı temsilcisi SAS oluşturan bir istemciye Microsoft.Depolama içeren bir Azure RBAC rolü atanmalıdır/storageAccounts/blobServices/generateUserDelegationKey eylemi. Daha fazla bilgi edinmek için bkz . Kullanıcı temsilcisi SAS'ı oluşturma.
  • Depolama hesabı anahtarıyla. Hem hizmet SAS'i hem de hesap SAS'i depolama hesabı anahtarıyla imzalanmıştır. Hizmet SAS'si oluşturan istemcinin hesap anahtarına doğrudan erişimi olmalıdır veya Microsoft.Depolama/storageAccounts/listkeys/action izni. Daha fazla bilgi edinmek için bkz . Hizmet SAS'i oluşturma veya Hesap SAS'ı oluşturma.

Dekont

Kullanıcı temsilcisi SAS,depolama hesabı anahtarıyla imzalanmış bir SAS için üstün güvenlik sunar. Microsoft mümkün olduğunda kullanıcı temsilcisi SAS'sini kullanmanızı önerir. Daha fazla bilgi için bkz . Paylaşılan erişim imzalarıyla (SAS) verilere sınırlı erişim verme.

Bu makalede, Azure CLI ile bir kapsayıcı veya blob için kullanıcı temsilcisi SAS'i oluşturmak üzere Microsoft Entra kimlik bilgilerinin nasıl kullanılacağı gösterilmektedir.

Kullanıcı temsilcisi SAS hakkında

Kapsayıcıya veya bloba erişim için SAS belirteci, Microsoft Entra kimlik bilgileri veya hesap anahtarı kullanılarak güvenli hale getirilebilir. SAS'yi imzalamak için kullanılan OAuth 2.0 belirteci kullanıcı adına istendiğinden, Microsoft Entra kimlik bilgileriyle güvenliği sağlanan sas kullanıcı temsilcisi SAS olarak adlandırılır.

Microsoft, mümkün olduğunda microsoft Entra kimlik bilgilerini daha kolay ele geçirilebilen hesap anahtarını kullanmak yerine en iyi güvenlik uygulaması olarak kullanmanızı önerir. Uygulama tasarımınız paylaşılan erişim imzaları gerektirdiğinde, üstün güvenlik için kullanıcı temsilcisi SAS'ı oluşturmak için Microsoft Entra kimlik bilgilerini kullanın. Kullanıcı temsilcisi SAS'i hakkında daha fazla bilgi için bkz . Kullanıcı temsilcisi SAS'i oluşturma.

Dikkat

Geçerli bir SAS'ye sahip olan tüm istemciler, bu SAS'nin izin verdiği şekilde depolama hesabınızdaki verilere erişebilir. SAS'yi kötü amaçlı veya istenmeyen kullanıma karşı korumak önemlidir. SAS dağıtmak için isteğe bağlılığı kullanın ve güvenliği aşılmış SAS'yi iptal etmek için bir planınız var.

Paylaşılan erişim imzaları hakkında daha fazla bilgi için bkz. Paylaşılan erişim imzalarını (SAS) kullanarak Azure Depolama kaynaklarına sınırlı erişim verme.

Azure CLI’nin en son sürümünü yükleme

Microsoft Entra kimlik bilgileriyle sas güvenliğini sağlamak için Azure CLI'yı kullanmak için öncelikle Azure CLI'nın en son sürümünü yüklediğinizden emin olun. Azure CLI'yı yükleme hakkında daha fazla bilgi için bkz . Azure CLI'yi yükleme.

Azure CLI kullanarak kullanıcı temsilcisi SAS oluşturmak için 2.0.78 veya sonraki bir sürümü yüklediğinizden emin olun. Yüklü sürümünüzü denetlemek için komutunu kullanın az --version .

Microsoft Entra kimlik bilgileriyle oturum açma

Microsoft Entra kimlik bilgilerinizle Azure CLI'da oturum açın. Daha fazla bilgi için bkz. Azure CLI ile oturum açma.

Azure RBAC ile izin atama

Azure PowerShell'den kullanıcı temsilcisi SAS oluşturmak için Azure CLI'da oturum açmak için kullanılan Microsoft Entra hesabına Microsoft.Depolama'yi içeren bir rol atanmalıdır/storageAccounts/blobServices/generateUserDelegationKey eylemi. Bu izin, Microsoft Entra hesabının kullanıcı temsilcisi anahtarı istemesini sağlar. Kullanıcı temsilcisi SAS'sini imzalamak için kullanıcı temsilcisi anahtarı kullanılır. Microsoft.Depolama sağlayan rol/storageAccounts/blobServices/generateUserDelegationKey eylemi depolama hesabı, kaynak grubu veya abonelik düzeyinde atanmalıdır.

Azure rollerini bir Microsoft Entra güvenlik sorumlusuna atamak için yeterli izinleriniz yoksa, hesap sahibinden veya yöneticiden gerekli izinleri atamasını istemeniz gerekebilir.

Aşağıdaki örnek, Microsoft.Depolama içeren Depolama Blob Veri Katkıda Bulunanı rolünü atar /storageAccounts/blobServices/generateUserDelegationKey eylemi. Rolün kapsamı depolama hesabı düzeyindedir.

Köşeli ayraçlardaki yer tutucu değerleri kendi değerlerinizle değiştirmeyi unutmayın:

az role assignment create \
    --role "Storage Blob Data Contributor" \
    --assignee <email> \
    --scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>"

Microsoft.Depolama içeren yerleşik roller hakkında daha fazla bilgi için/storageAccounts/blobServices/generateUserDelegationKey eylemi, bkz. Azure yerleşik rolleri.

SAS güvenliğini sağlamak için Microsoft Entra kimlik bilgilerini kullanma

Azure CLI ile bir kullanıcı temsilcisi SAS oluşturduğunuzda, SAS'yi imzalamak için kullanılan kullanıcı temsilcisi anahtarı sizin için örtük olarak oluşturulur. SAS için belirttiğiniz başlangıç saati ve süre sonu saati, kullanıcı temsilcisi anahtarı için başlangıç zamanı ve süre sonu saati olarak da kullanılır.

Kullanıcı temsilcisi anahtarının geçerli olduğu maksimum aralık başlangıç tarihinden itibaren 7 gün olduğundan, SAS için başlangıç saatinden itibaren 7 gün içinde bir süre sonu belirtmelisiniz. Kullanıcı temsilcisi anahtarının süresi dolduktan sonra SAS geçersizdir, bu nedenle süresi 7 günden uzun olan bir SAS yine de yalnızca 7 gün boyunca geçerli olur.

Kullanıcı temsilcisi SAS --auth-mode login oluştururken ve --as-user parameters gereklidir. Azure Depolama yapılan isteklerin --auth-mode Microsoft Entra kimlik bilgilerinizle yetkilendirilmesi için parametresi için oturum açma bilgilerini belirtin. Döndürülen SAS'nin --as-user bir kullanıcı temsilcisi SAS olması gerektiğini belirtmek için parametresini belirtin.

Kapsayıcı için kullanıcı temsilcisi SAS'i oluşturma

Azure CLI ile bir kapsayıcı için kullanıcı temsilcisi SAS oluşturmak için az storage container generate-sas komutunu çağırın.

Kapsayıcıdaki kullanıcı temsilcisi SAS'sine yönelik desteklenen izinler Ekle, Oluştur, Sil, Listele, Oku ve Yaz'dır. İzinler tek tek belirtilebilir veya birleştirilebilir. Bu izinler hakkında daha fazla bilgi için bkz . Kullanıcı temsilcisi SAS'ı oluşturma.

Aşağıdaki örnek, bir kapsayıcı için kullanıcı temsilcisi SAS belirteci döndürür. Köşeli ayraç içindeki yer tutucu değerlerini kendi değerlerinizle değiştirmeyi unutmayın:

az storage container generate-sas \
    --account-name <storage-account> \
    --name <container> \
    --permissions acdlrw \
    --expiry <date-time> \
    --auth-mode login \
    --as-user

Döndürülen kullanıcı temsilcisi SAS belirteci şuna benzer olacaktır:

se=2019-07-27&sp=r&sv=2018-11-09&sr=c&skoid=<skoid>&sktid=<sktid>&skt=2019-07-26T18%3A01%3A22Z&ske=2019-07-27T00%3A00%3A00Z&sks=b&skv=2018-11-09&sig=<signature>

Dekont

Blob Depolama tarafından döndürülen SAS belirteci, URL sorgu dizesi için sınırlayıcı karakterini ('?') içermez. SAS belirtecini bir kaynak URL'sine ekliyorsanız sınırlayıcı karakterini de eklemeyi unutmayın.

Blob için kullanıcı temsilcisi SAS'i oluşturma

Azure CLI ile bir blob için kullanıcı temsilcisi SAS oluşturmak için az storage blob generate-sas komutunu çağırın.

Blob üzerinde kullanıcı temsilcisi SAS'sine yönelik desteklenen izinler Ekle, Oluştur, Sil, Oku ve Yaz'dır. İzinler tek tek belirtilebilir veya birleştirilebilir. Bu izinler hakkında daha fazla bilgi için bkz . Kullanıcı temsilcisi SAS'ı oluşturma.

Aşağıdaki söz dizimi, blob için kullanıcı temsilcisi SAS'sini döndürür. Örnek, SAS belirtecinin --full-uri eklendiği blob URI'sini döndüren parametresini belirtir. Köşeli ayraç içindeki yer tutucu değerlerini kendi değerlerinizle değiştirmeyi unutmayın:

az storage blob generate-sas \
    --account-name <storage-account> \
    --container-name <container> \
    --name <blob> \
    --permissions acdrw \
    --expiry <date-time> \
    --auth-mode login \
    --as-user \
    --full-uri

Döndürülen kullanıcı temsilcisi SAS URI'si şuna benzer olacaktır:

https://storagesamples.blob.core.windows.net/sample-container/blob1.txt?se=2019-08-03&sp=rw&sv=2018-11-09&sr=b&skoid=<skoid>&sktid=<sktid>&skt=2019-08-02T2
2%3A32%3A01Z&ske=2019-08-03T00%3A00%3A00Z&sks=b&skv=2018-11-09&sig=<signature>

Dekont

Azure CLI tarafından döndürülen SAS belirteci, URL sorgu dizesi için sınırlayıcı karakterini ('?') içermez. SAS belirtecini bir kaynak URL'sine ekliıyorsanız, SAS belirtecini eklemeden önce sınırlayıcı karakterini kaynak URL'sine eklemeyi unutmayın.

Kullanıcı temsilcisi SAS'i, depolanan erişim ilkesiyle izin tanımlamayı desteklemez.

Kullanıcı temsilcisi SAS'sini iptal etme

Azure CLI'dan kullanıcı temsilcisi SAS'sini iptal etmek için az storage account revoke-delegation-keys komutunu çağırın. Bu komut, belirtilen depolama hesabıyla ilişkili tüm kullanıcı temsilcisi anahtarlarını iptal eder. Bu anahtarlarla ilişkili tüm paylaşılan erişim imzaları geçersiz kılındı.

Köşeli ayraçlardaki yer tutucu değerleri kendi değerlerinizle değiştirmeyi unutmayın:

az storage account revoke-delegation-keys \
    --name <storage-account> \
    --resource-group <resource-group>

Önemli

Hem kullanıcı temsilcisi anahtarı hem de Azure rol atamaları Azure Depolama tarafından önbelleğe alınır, bu nedenle iptal işlemini başlatmanız ile mevcut kullanıcı temsilcisi SAS'sinin geçersiz hale gelmesi arasında bir gecikme olabilir.

Sonraki adımlar