Aracılığıyla paylaş


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, bir istemcinin erişmesine izin verilen Azure Depolama kaynakları, bu kaynaklar üzerinde sahip olduğu izinler ve SAS'nin ne kadar süre geçerli olduğu gibi sınırlamalarını belirtirsiniz.

Her bir 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. Azure RBAC rolü, kullanıcı yetkilendirme SAS’si oluşturan bir istemciye Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey eylemini içerecek şekilde atanmalıdır. Daha fazla bilgi edinmek için Kullanıcı temsilcisi SAS oluşturma konusuna bakın.
  • Depolama hesabı anahtarıyla. Hem hizmet SAS'i hem hesap SAS'i depolama hesabı anahtarıyla imzalanmıştır. Hizmet SAS'ini oluşturan istemci, ya hesap anahtarına doğrudan erişime sahip olmalıdır ya da Microsoft.Storage/storageAccounts/listkeys/action izni atanmış olmalıdır. Daha fazla bilgi edinmek için Hizmet SAS'i oluşturma veya Hesap SAS'ı oluşturma bölümüne bakın.

Uyarı

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

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. Microsoft Entra kimlik bilgileriyle güvenliği sağlanan bir SAS, SAS'yi imzalamak için kullanılan OAuth 2.0 belirteci kullanıcı adına istendiği için 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ı temsilci SAS'si hakkında daha fazla bilgi için, Kullanıcı temsilci SAS'si oluşturma konusuna bakın.

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ğıtırken dikkatli davranın ve tehlikeye girmiş bir SAS'yi iptal etmek için bir planınız olsun.

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'nın 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.Storage/storageAccounts/blobServices/generateUserDelegationKey eylemini içeren bir rol atanmalıdır. Bu izin, Microsoft Entra hesabının kullanıcı temsilcisi anahtarı istemesini sağlar. Kullanıcı yetkilendirme SAS'ini imzalamak için kullanıcı yetkilendirme anahtarı kullanılır. Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey eylemini sağlayan rol, 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.Storage/storageAccounts/blobServices/generateUserDelegationKey eylemini içeren Depolama Blob Verileri Katkı Sağlayıcısı rolünü atar. 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.Storage/storageAccounts/blobServices/generateUserDelegationKey eylemini içeren yerleşik roller hakkında daha fazla bilgi için 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 oluştururken --auth-mode login ve --as-user parameters gereklidir. Azure Depolama'ya 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 bir kullanıcı temsilcisi SAS olması gerektiğini belirtmek için --as-user parametresini ayarlayın.

Bir kapsayıcı için kullanıcı yetkilendirme SAS'si 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>

Uyarı

Blob Depolama tarafından döndürülen SAS belirteci, URL sorgu dizesi için sınırlayıcı karakteri ('?') 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, bir blob için kullanıcıya yetki veren bir SAS 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ı delegasyonu 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>

Uyarı

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ı yetkilendirme SAS'i, depolanan erişim ilkesi ile izin tanımlamayı desteklemez.

Kullanıcı temsilcisi SAS'ini iptal etme

Azure CLI'dan kullanıcı temsilcisi SAS'ini iptal etmek için az storage account revoke-delegation-keys komutunu çalıştı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