Aracılığıyla paylaş


.NET ile hesap 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ıyla (SAS) verilere sınırlı erişim verme konusuna bakın.

Bu makalede depolama hesabı anahtarını kullanarak .NET için Azure Depolama istemci kitaplığıyla bir hesap SAS'sinin nasıl oluşturulacağı gösterilmektedir.

Hesap SAS hakkında

Hesap SAS'si, depolama hesabı düzeyinde oluşturulur. Hesap SAS'sini oluşturarak şunları yapabilirsiniz:

SAS hesapları için depolanmış erişim ilkeleri desteklenmez.

SAS hesabı oluştur

Hesap SAS'i, hesap erişim anahtarı ile imzalanır. SAS'yi imzalamak için kullanılan kimlik bilgilerini oluşturmak için StorageSharedKeyCredential sınıfını kullanabilirsiniz.

Aşağıdaki kod örneği, hesap SAS belirteci dizesini almak için yeni bir AccountSasBuilder nesnesinin nasıl oluşturulacağını ve ToSasQueryParameters yönteminin nasıl çağrılacağını gösterir.

public static async Task<string> CreateAccountSAS(StorageSharedKeyCredential sharedKey)
{
    // Create a SAS token that's valid for one day
    AccountSasBuilder sasBuilder = new AccountSasBuilder()
    {
        Services = AccountSasServices.Blobs | AccountSasServices.Queues,
        ResourceTypes = AccountSasResourceTypes.Service,
        ExpiresOn = DateTimeOffset.UtcNow.AddDays(1),
        Protocol = SasProtocol.Https
    };

    sasBuilder.SetPermissions(AccountSasPermissions.Read |
        AccountSasPermissions.Write);

    // Use the key to get the SAS token
    string sasToken = sasBuilder.ToSasQueryParameters(sharedKey).ToString();

    return sasToken;
}

İstemci hesap SAS'ini kullanma

Blob hizmetinin hizmet düzeyi API'lerine erişmek üzere hesap SAS'sini kullanmak için, depolama hesabınızın SAS'sini ve Blob Depolama uç noktasını kullanarak bir BlobServiceClient nesnesi oluşturun.

string accountName = "<storage-account-name>";
string accountKey = "<storage-account-key>";
StorageSharedKeyCredential storageSharedKeyCredential =
    new(accountName, accountKey);

// Create a BlobServiceClient object with the account SAS appended
string blobServiceURI = $"https://{accountName}.blob.core.windows.net";
string sasToken = await CreateAccountSAS(storageSharedKeyCredential);
BlobServiceClient blobServiceClientAccountSAS = new BlobServiceClient(
    new Uri($"{blobServiceURI}?{sasToken}"));

Kaynaklar

.NET için Azure Blob Depolama istemci kitaplığını kullanarak hesap SAS'i oluşturma hakkında daha fazla bilgi edinmek için aşağıdaki kaynaklara bakın.

İstemci kütüphane kaynakları

Ayrıca bkz.