Membuat definisi SAS dan ambil token tanda tangan akses bersama dalam kode (warisan)

Anda dapat mengelola akun penyimpanan Anda dengan token tanda tangan akses bersama (SAS) yang disimpan di brankas kunci Anda. Untuk informasi lebih lanjut, lihat Memberikan akses terbatas ke sumber daya Azure Storage menggunakan SAS.

Catatan

Sebaiknya gunakan kontrol akses berbasis peran Azure (Azure RBAC) untuk mengamankan akun penyimpanan Anda demi keamanan yang unggul dan kemudahan penggunaan melalui otorisasi Kunci Bersama.

Artikel ini menyediakan sampel kode .NET yang membuat definisi SAS dan mengambil token SAS. Lihat sampel ShareLink kami untuk detail selengkapnya termasuk klien yang dihasilkan untuk akun penyimpanan yang dikelola Key Vault. Untuk informasi tentang cara membuat dan menyimpan token SAS, lihat Mengelola kunci akun penyimpanan dengan Key Vault dan Azure CLI atau Mengelola kunci akun penyimpanan dengan Key Vault dan Azure PowerShell.

Sampel kode

Dalam contoh berikut ini kita akan membuat templat SAS:

private static string BuildSasDefinitionTemplate(bool readOnly) =>
    new StringBuilder("sv=2018-03-28")  // service version
        .Append("&spr=https")           // HTTPS only
        .Append("&ss=bf")               // blobs and files only
        .Append("&srt=o")               // applies to objects only
        .Append(readOnly ? "&sp=r" : "&sp=rw")  // read-only or read-write
        .ToString();

Menggunakan templat ini, kita dapat membuat definisi SAS menggunakan

string sasDefinitionName = BuildSasDefinitionName(Tag, readOnly, duration);
SasDefinitionAttributes sasDefinitionAttributes = new SasDefinitionAttributes
{
    Enabled = true,
};

Dictionary<string, string> tags = new Dictionary<string, string>
{
    [Tag] = "1",
};

SasDefinitionBundle createdSasDefinition = await storageClient.SetSasDefinitionAsync(
    storageAccountName,
    sasDefinitionName,
    sasTemplate,
    SasTokenType.Account,
    duration,
    sasDefinitionAttributes,
    tags,
    s_cancellationTokenSource.Token);

Setelah definisi SAS dibuat, Anda dapat mengambil token SAS seperti rahasia menggunakan SecretClient. Anda perlu mengawali nama rahasia dengan nama akun penyimpanan diikuti dengan tanda hubung:

// Build our SAS template, get an existing SAS definition, or create a new one.
string sasTemplate = BuildSasDefinitionTemplate(readOnly);
string sasDefinitionName = await GetOrCreateSasDefinitionAsync(storageClient, storageAccountName, sasTemplate, days, readOnly);

// Now we can create a SecretClient and generate a new SAS token from the storage account and SAS definition names.
SecretClient secretClient = new SecretClient(vaultUri, credential, options);
KeyVaultSecret sasToken = await secretClient.GetSecretAsync($"{storageAccountName}-{sasDefinitionName}", cancellationToken: s_cancellationTokenSource.Token);

Jika token tanda tangan akses bersama Anda akan kedaluwarsa, Anda dapat mengambil rahasia yang sama lagi untuk menghasilkan yang baru.

Untuk panduan tentang cara menggunakan yang diambil dari token Key Vault SAS untuk mengakses layanan Azure Storage, lihat Menggunakan SAS akun untuk mengakses Blob service

Catatan

Aplikasi Anda harus siap untuk refresh SAS jika mendapatkan 403 dari Storage sehingga Anda dapat menangani kasus di mana kunci disusupi dan Anda perlu memutarnya lebih cepat dari periode rotasi normal.

Langkah berikutnya