Membuat SAS layanan untuk kontainer atau blob dengan Java
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 Java.
Tentang layanan SAS
Layanan SAS ditandatangani dengan kunci akses akun. Anda dapat menggunakan kelas StorageSharedKeyCredential untuk membuat kredensial yang digunakan untuk menandatangani layanan SAS.
Anda juga dapat menggunakan kebijakan akses tersimpan untuk menentukan izin dan durasi SAS. Jika disediakan nama kebijakan akses tersimpan, kebijakan tersebut dikaitkan dengan SAS. Untuk mempelajari selengkapnya tentang kebijakan akses tersimpan, lihat Menentukan kebijakan akses tersimpan. Jika tidak ada kebijakan akses tersimpan yang disediakan, contoh kode dalam artikel ini menunjukkan cara menentukan izin dan durasi untuk SAS.
Membuat SAS layanan
Anda dapat membuat SAS layanan untuk kontainer atau blob, berdasarkan kebutuhan aplikasi Anda.
Anda dapat membuat SAS layanan untuk mendelegasikan akses terbatas ke sumber daya kontainer menggunakan metode berikut:
Nilai tanda tangan SAS, seperti waktu kedaluwarsa dan izin yang ditandatangani, diteruskan ke metode sebagai bagian dari instans BlobServiceSasSignatureValues . Izin ditentukan sebagai instans BlobContainerSasPermission .
Contoh kode berikut menunjukkan cara membuat SAS layanan dengan izin baca untuk sumber daya kontainer:
public String createServiceSASContainer(BlobContainerClient containerClient) {
// Create a SAS token that's valid for 1 day, as an example
OffsetDateTime expiryTime = OffsetDateTime.now().plusDays(1);
// Assign read permissions to the SAS token
BlobContainerSasPermission sasPermission = new BlobContainerSasPermission()
.setReadPermission(true);
BlobServiceSasSignatureValues sasSignatureValues = new BlobServiceSasSignatureValues(expiryTime, sasPermission)
.setStartTime(OffsetDateTime.now().minusMinutes(5));
String sasToken = containerClient.generateSas(sasSignatureValues);
return sasToken;
}
Menggunakan SAS layanan untuk mengotorisasi objek klien
Anda dapat menggunakan SAS layanan untuk mengotorisasi objek klien untuk melakukan operasi pada kontainer atau blob berdasarkan izin yang diberikan oleh SAS.
Contoh kode berikut menunjukkan cara menggunakan SAS layanan untuk mengotorisasi objek BlobContainerClient . Objek klien ini dapat digunakan untuk melakukan operasi pada sumber daya kontainer berdasarkan izin yang diberikan oleh SAS.
Pertama, buat objek BlobServiceClient yang ditandatangani dengan kunci akses akun:
String accountName = "<account-name>";
String accountKey = "<account-key>";
StorageSharedKeyCredential credential = new StorageSharedKeyCredential(accountName, accountKey);
BlobServiceClient blobServiceClient = new BlobServiceClientBuilder()
.endpoint(String.format("https://%s.blob.core.windows.net/", accountName))
.credential(credential)
.buildClient();
Kemudian, hasilkan SAS layanan seperti yang ditunjukkan pada contoh sebelumnya dan gunakan SAS untuk mengotorisasi objek BlobContainerClient :
// Create a SAS token
BlobContainerClient containerClient = blobServiceClient
.getBlobContainerClient("sample-container");
String sasToken = createServiceSASContainer(containerClient);
// Create a new BlobContainerClient using the SAS token
BlobContainerClient sasContainerClient = new BlobContainerClientBuilder()
.endpoint(containerClient.getBlobContainerUrl())
.sasToken(sasToken)
.buildClient();
Sumber
Untuk mempelajari selengkapnya tentang menggunakan pustaka klien Azure Blob Storage untuk Java, lihat sumber daya berikut ini.