Membuat SAS akun dengan .NET

Tanda tangan akses bersama (SAS) memungkinkan Anda memberikan akses terbatas ke kontainer dan blob di akun penyimpanan Anda. Saat Anda membuat SAS, Anda menentukan batasannya, termasuk sumber daya Azure Storage mana yang diizinkan untuk diakses klien, izin apa yang mereka miliki pada sumber daya tersebut, dan berapa lama SAS valid.

Setiap SAS ditandatangani dengan kunci. Anda dapat menandatangani SAS dengan salah satu dari dua cara:

  • Dengan kunci yang dibuat menggunakan info masuk Azure Active Directory (Azure AD). SAS yang ditandatangani dengan info masuk Azure AD adalah SAS delegasi pengguna. Klien yang membuat SAS delegasi pengguna harus diberikan peran Azure RBAC yang meliputi tindakan Microsoft.Storage /storageAccounts/blobServices/generateUserDelegationKey. Untuk informasi selengkapnya, lihat Membuat delegasi pengguna SAS.
  • Dengan kunci akun penyimpanan. SAS layanan dan SAS akun ditandatangani dengan kunci akun penyimpanan. Klien yang membuat SAS layanan harus memiliki akses langsung ke kunci akun atau diberikan izin Microsoft.Storage/storageAccounts/listkeys/action.

Catatan

Delegasi pengguna SAS menawarkan keamanan yang unggul untuk SAS yang ditandatangani dengan kunci akun penyimpanan. Microsoft merekomendasikan menggunakan SAS delegasi pengguna jika memungkinkan. Untuk mengetahui informasi selengkapnya, lihat Memberikan akses terbatas ke data dengan tanda tangan akses bersama (SAS).

Artikel ini menunjukkan cara menggunakan kunci akun penyimpanan untuk membuat SAS akun dengan pustaka klien Azure Storage untuk .NET.

Membuat SAS akun

SAS akun ditandatangani dengan kunci akses akun. Gunakan kelas StorageSharedKeyCredential untuk membuat kredensial yang digunakan untuk menandatangani SAS. Selanjutnya, buat objek AccountSasBuilder baru dan panggil ToSasQueryParameters untuk mendapatkan untai (karakter) token SAS.


private static string GetAccountSASToken(StorageSharedKeyCredential key)
{
    // Create a SAS token that's valid for one hour.
    AccountSasBuilder sasBuilder = new AccountSasBuilder()
    {
        Services = AccountSasServices.Blobs | AccountSasServices.Files,
        ResourceTypes = AccountSasResourceTypes.Service,
        ExpiresOn = DateTimeOffset.UtcNow.AddHours(1),
        Protocol = SasProtocol.Https
    };

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

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

    Console.WriteLine("SAS token for the storage account is: {0}", sasToken);
    Console.WriteLine();

    return sasToken;
}

Menggunakan SAS akun dari klien

Untuk menggunakan SAS akun dalam mengakses API tingkat layanan untuk layanan Blob, buat objek klien Blob service dengan SAS dan titik akhir penyimpanan Blob untuk akun penyimpanan Anda.


private static void UseAccountSAS(Uri blobServiceUri, string sasToken)
{
    var blobServiceClient = new BlobServiceClient
        (new Uri($"{blobServiceUri}?{sasToken}"), null);

    BlobRetentionPolicy retentionPolicy = new BlobRetentionPolicy();
    retentionPolicy.Enabled = true;
    retentionPolicy.Days = 7;

    blobServiceClient.SetProperties(new BlobServiceProperties()
    {
        HourMetrics = new BlobMetrics()
        {
            RetentionPolicy = retentionPolicy,
            Version = "1.0"
        },
        MinuteMetrics = new BlobMetrics()
        {
            RetentionPolicy = retentionPolicy,
            Version = "1.0"
        },
        Logging = new BlobAnalyticsLogging()
        {
            Write = true,
            Read = true,
            Delete = true,
            RetentionPolicy = retentionPolicy,
            Version = "1.0"
        }
    });

    // The permissions granted by the account SAS also permit you to retrieve service properties.

    BlobServiceProperties serviceProperties = blobServiceClient.GetProperties().Value;
    Console.WriteLine(serviceProperties.HourMetrics.RetentionPolicy);
    Console.WriteLine(serviceProperties.HourMetrics.Version);
}

Langkah berikutnya