Depolanan erişim ilkelerini keşfetme

Tamamlandı

Depolanan erişim ilkesi, sunucu tarafında hizmet düzeyinde paylaşılan erişim imzaları (SAS) üzerinde ek bir denetim düzeyi sağlar. Depolanan erişim ilkesi oluşturmak SAS'yi gruplar ve ilkeye bağlı imzalar için daha fazla kısıtlama sağlar. Bir imzanın başlangıç saatini, süre sonunu veya izinlerini değiştirmek veya verildikten sonra iptal etmek için depolanan erişim ilkesi kullanabilirsiniz.

Aşağıdaki depolama kaynakları, depolanan erişim ilkelerini destekler:

  • Blob kapsayıcıları
  • Dosya paylaşımları
  • Kuyruklar
  • Tablolar

Depolanan erişim ilkesi oluşturma

SAS için erişim ilkesi başlangıç saati, süre sonu süresi ve imzanın izinlerinden oluşur. Bu parametrelerin tümünü imza URI'sinde belirtebilir ve depolanmış erişim ilkesinde hiçbirini belirtemezsiniz; saklı erişim ilkesinde tümü ve URI'de yok; veya ikisinin bir bileşimi. Ancak, hem SAS belirtecinde hem de depolanmış erişim ilkesinde belirli bir parametre belirtemezsiniz.

Depolanan erişim ilkesi oluşturmak veya değiştirmek için, erişim ilkesinin Set ACL koşullarını belirten bir istek gövdesiyle kaynağın işlemini çağırın (bkz . Kapsayıcı ACL'sini Ayarlama, Kuyruk ACL'sini Ayarlama, Tablo ACL'sini Ayarlama veya Paylaşım ACL'sini Ayarlama). İsteğin gövdesi, seçtiğiniz benzersiz imzalı tanımlayıcıyı, en fazla 64 karakter uzunluğunda ve erişim ilkesinin isteğe bağlı parametrelerini aşağıda gösterildiği gibi içerir:

Not

Bir kapsayıcı, tablo, kuyruk veya paylaşımda depolanan erişim ilkesi oluşturduğunuzda, etkili olması 30 saniye kadar sürebilir. Bu süre boyunca, depolanan erişim ilkesiyle ilişkili bir SAS'ye yönelik istekler, erişim ilkesi etkin olana kadar durum kodu 403 (Yasak) ile başarısız olabilir. Tablo varlık aralığı kısıtlamaları (startpk, startrk, endpkve endrk) depolanan erişim ilkesinde belirtilemez.

Aşağıda, C# .NET ve Azure CLI kullanarak depolanmış erişim ilkesi oluşturma örnekleri verilmiştir.

BlobSignedIdentifier identifier = new BlobSignedIdentifier
{
    Id = "stored access policy identifier",
    AccessPolicy = new BlobAccessPolicy
    {
        ExpiresOn = DateTimeOffset.UtcNow.AddHours(1),
        Permissions = "rw"
    }
};

blobContainer.SetAccessPolicy(permissions: new BlobSignedIdentifier[] { identifier });
az storage container policy create \
    --name <stored access policy identifier> \
    --container-name <container name> \
    --start <start time UTC datetime> \
    --expiry <expiry time UTC datetime> \
    --permissions <(a)dd, (c)reate, (d)elete, (l)ist, (r)ead, or (w)rite> \
    --account-key <storage account key> \
    --account-name <storage account name> \

Depolanan erişim ilkesini değiştirme veya iptal etme

Depolanan erişim ilkesinin parametrelerini değiştirmek için kaynak türünün erişim denetimi listesi işlemini çağırarak mevcut ilkeyi değiştirebilirsiniz. Örneğin, mevcut ilkeniz bir kaynağa okuma ve yazma izinleri verirse, bunu gelecekteki tüm istekler için yalnızca okuma izinleri vermek üzere değiştirebilirsiniz.

Depolanan erişim ilkesini iptal etmek için ilkeyi silebilir, imzalı tanımlayıcıyı değiştirerek yeniden adlandırabilir veya süre sonu süresini geçmişteki bir değerle değiştirebilirsiniz. İmzalı tanımlayıcının değiştirilmesi, mevcut imzalarla depolanan erişim ilkesi arasındaki ilişkilendirmeleri bozar. Süre sonu süresinin geçmişteki bir değerle değiştirilmesi, ilişkili imzaların süresinin dolmasına neden olur. Depolanan erişim ilkesinin silinmesi veya değiştirilmesi, onunla ilişkilendirilmiş tüm SAS'yi hemen etkiler.

Tek bir erişim ilkesini kaldırmak için, kapsayıcıda tutmak istediğiniz imzalı tanımlayıcılar kümesini geçirerek kaynağın Set ACL işlemini çağırın. Kaynaktan tüm erişim ilkelerini kaldırmak için işlemi boş bir istek gövdesiyle çağırın Set ACL .