Membuat SAS layanan untuk kontainer atau blob dengan JavaScript
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 kredensial Microsoft Entra. SAS yang ditandatangani dengan kredensial Microsoft Entra adalah SAS delegasi pengguna. Klien yang membuat SAS delegasi pengguna harus diberi peran Azure RBAC yang menyertakan tindakan Microsoft.Storage /storageAccounts/blobServices/generateUserDelegationKey. Untuk mempelajari selengkapnya, lihat Membuat SAS delegasi pengguna.
- 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 ditetapkan izin microsoft.Storage/storageAccounts/listkeys/action. Untuk mempelajari selengkapnya, lihat Membuat layanan SAS atau Membuat SAS akun.
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 memperlihatkan cara menggunakan kunci akun penyimpanan untuk membuat SAS layanan untuk kontainer atau blob dengan pustaka klien Blob Storage untuk JavaScript.
Buat layanan SAS untuk kontainer blob
Contoh kode berikut membuat SAS untuk kontainer. Jika disediakan nama kebijakan akses tersimpan, kebijakan tersebut dikaitkan dengan SAS. Jika tidak disediakan kebijakan akses tersimpan, maka kode membuat SAS ad hoc pada kontainer.
Layanan SAS ditandatangani dengan kunci akses akun. Gunakan kelas StorageSharedKeyCredential untuk membuat kredensial yang digunakan untuk menandatangani SAS. Selanjutnya, panggil fungsi generateBlobSASQueryParameters yang menyediakan parameter yang diperlukan untuk mendapat string token SAS.
// Create a service SAS for a blob container
function getContainerSasUri(containerClient, sharedKeyCredential, storedPolicyName) {
const sasOptions = {
containerName: containerClient.containerName,
permissions: ContainerSASPermissions.parse("c")
};
if (storedPolicyName == null) {
sasOptions.startsOn = new Date();
sasOptions.expiresOn = new Date(new Date().valueOf() + 3600 * 1000);
} else {
sasOptions.identifier = storedPolicyName;
}
const sasToken = generateBlobSASQueryParameters(sasOptions, sharedKeyCredential).toString();
console.log(`SAS token for blob container is: ${sasToken}`);
return `${containerClient.url}?${sasToken}`;
}
Buat layanan SAS untuk blob
Contoh kode berikut membuat SAS pada blob. Jika disediakan nama kebijakan akses tersimpan, kebijakan tersebut dikaitkan dengan SAS. Jika tidak disediakan kebijakan akses tersimpan, maka kode membuat SAS ad hoc pada blob.
Untuk membuat layanan SAS pada blob, panggil fungsi generateBlobSASQueryParameters yang menyediakan parameter yang diperlukan.
// Create a service SAS for a blob
function getBlobSasUri(containerClient, blobName, sharedKeyCredential, storedPolicyName) {
const sasOptions = {
containerName: containerClient.containerName,
blobName: blobName
};
if (storedPolicyName == null) {
sasOptions.startsOn = new Date();
sasOptions.expiresOn = new Date(new Date().valueOf() + 3600 * 1000);
sasOptions.permissions = BlobSASPermissions.parse("r");
} else {
sasOptions.identifier = storedPolicyName;
}
const sasToken = generateBlobSASQueryParameters(sasOptions, sharedKeyCredential).toString();
console.log(`SAS token for blob is: ${sasToken}`);
return `${containerClient.getBlockBlobClient(blobName).url}?${sasToken}`;
}
Sumber daya untuk pengembangan dengan JavaScript
Tautan di bawah ini menyediakan sumber daya yang bermanfaat bagi pengembang yang menggunakan pustaka klien Azure Storage untuk JavaScript
API penyimpanan blob
- Pustaka klien Azure Storage Blob untuk JavaScript
- Kode sumber pustaka
- Paket (npm)
- Dokumentasi referensi API