Membuat AKUN SAS 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 akun dengan pustaka klien Azure Storage untuk Java.

Tentang akun SAS

SAS akun dibuat pada tingkat akun penyimpanan, dan ditandatangani dengan kunci akses akun. Dengan membuat SAS akun, Anda dapat:

  • Delegasikan akses ke operasi tingkat layanan yang saat ini tidak tersedia dengan SAS khusus layanan, seperti Dapatkan Properti Blob Service, Atur Properti Blob Service, dan Dapatkan Statistik Layanan Blob.
  • Mendelegasikan akses ke lebih dari satu layanan di akun penyimpanan pada satu waktu. Misalnya, Anda dapat mendelegasikan akses ke sumber daya di Azure Blob Storage dan Azure Files dengan menggunakan SAS akun.

Kebijakan akses tersimpan tidak didukung untuk AKUN SAS.

Menyiapkan proyek Anda

Untuk bekerja dengan contoh kode dalam artikel ini, tambahkan direktif impor berikut:

import com.azure.storage.blob.*;
import com.azure.storage.blob.models.*;
import com.azure.storage.blob.sas.*;
import com.azure.storage.common.sas.AccountSasPermission;
import com.azure.storage.common.sas.AccountSasResourceType;
import com.azure.storage.common.sas.AccountSasService;
import com.azure.storage.common.sas.AccountSasSignatureValues;

Membuat SAS akun

Anda dapat membuat SAS akun untuk mendelegasikan akses terbatas ke sumber daya akun penyimpanan menggunakan metode berikut:

Untuk mengonfigurasi nilai tanda tangan untuk SAS akun, gunakan kelas pembantu berikut:

  • AccountSasPermission: Mewakili izin yang diizinkan oleh SAS. Dalam contoh kami, kami mengatur izin baca ke true.
  • AccountSasService: Mewakili layanan yang dapat diakses oleh SAS. Dalam contoh kami, kami mengizinkan akses ke layanan Blob.
  • AccountSasResourceType: Mewakili jenis sumber daya yang dapat diakses oleh SAS. Dalam contoh kami, kami mengizinkan akses ke API tingkat layanan.

Setelah kelas pembantu dikonfigurasi, Anda dapat menginisialisasi parameter untuk SAS dengan instans AccountSasSignatureValues .

Contoh kode berikut menunjukkan cara mengonfigurasi parameter SAS dan memanggil metode generateAccountSas untuk mendapatkan SAS akun:

public String createAccountSAS(BlobServiceClient blobServiceClient) {
    // Configure the SAS parameters
    OffsetDateTime expiryTime = OffsetDateTime.now().plusDays(1);
    AccountSasPermission accountSasPermission = new AccountSasPermission()
            .setReadPermission(true);
    AccountSasService services = new AccountSasService()
            .setBlobAccess(true);
    AccountSasResourceType resourceTypes = new AccountSasResourceType()
            .setService(true);

    // Generate the account SAS
    AccountSasSignatureValues accountSasValues = new AccountSasSignatureValues(
        expiryTime,
        accountSasPermission,
        services,
        resourceTypes);
    String sasToken = blobServiceClient.generateAccountSas(accountSasValues);

    return sasToken;
}

Menggunakan SAS akun dari klien

Contoh kode berikut menunjukkan cara menggunakan akun SAS yang dibuat dalam contoh sebelumnya untuk mengotorisasi objek BlobServiceClient . Objek klien ini kemudian dapat digunakan untuk mengakses API tingkat layanan 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, buat akun SAS seperti yang ditunjukkan dalam contoh sebelumnya dan gunakan SAS untuk mengotorisasi objek BlobServiceClient :

// Create a SAS token
String sasToken = createAccountSAS(blobServiceClient);

// Create a new BlobServiceClient using the SAS token
BlobServiceClient sasServiceClient = new BlobServiceClientBuilder()
        .endpoint(blobServiceClient.getAccountUrl())
        .sasToken(sasToken)
        .buildClient();

Anda juga dapat menggunakan SAS akun untuk mengotorisasi dan bekerja dengan objek BlobContainerClient atau objek BlobClient , jika jenis sumber daya tersebut diberikan akses sebagai bagian dari nilai tanda tangan.

Sumber

Untuk mempelajari selengkapnya tentang membuat SAS akun menggunakan pustaka klien Azure Blob Storage untuk Java, lihat sumber daya berikut ini.

Sampel kode

Sumber daya pustaka klien

Baca juga