Bagikan melalui


Buat SAS delegasi pengguna untuk kontainer atau blob dengan Azure CLI

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 user delegation SAS. Pelanggan yang membuat SAS untuk delegasi pengguna harus diberi peran Azure RBAC yang menyertakan aksi Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey. Untuk mempelajari selengkapnya, lihat Membuat SAS Delegasi Pengguna.
  • Dengan kunci akun penyimpanan. SAS layanan dan SAS akun ditandatangani menggunakan kunci penyimpanan akun. Klien yang membuat SAS layanan harus memiliki akses langsung ke kunci akun atau diberikan izin Microsoft.Storage/storageAccounts/listkeys/action. Untuk mempelajari selengkapnya, lihat Membuat layanan SAS atau Membuat SAS akun.

Nota

SAS yang didelegasikan pengguna menawarkan keamanan yang lebih unggul dibandingkan SAS yang ditandatangani dengan kunci akun penyimpanan. Microsoft menyarankan agar 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 kredensial Microsoft Entra untuk membuat SAS delegasi pengguna untuk kontainer atau blob dengan Azure CLI.

Tentang pendelegasian hak pengguna SAS

Token SAS untuk akses ke kontainer atau blob dapat diamankan dengan menggunakan kredensial Microsoft Entra atau kunci akun. SAS yang diamankan dengan kredensial Microsoft Entra disebut SAS delegasi pengguna, karena token OAuth 2.0 yang digunakan untuk menandatangani SAS diminta atas nama pengguna.

Microsoft menyarankan agar Anda menggunakan kredensial Microsoft Entra jika memungkinkan sebagai praktik terbaik keamanan, daripada menggunakan kunci akun, yang dapat lebih mudah disusupi. Saat desain aplikasi Anda memerlukan tanda tangan akses bersama, gunakan kredensial Microsoft Entra untuk membuat SAS delegasi pengguna untuk keamanan yang unggul. Untuk informasi selengkapnya tentang delegasi pengguna SAS, lihat Membuat delegasi pengguna SAS.

Perhatian

Setiap klien yang memiliki SAS yang valid dapat mengakses data di akun penyimpanan Anda sebagaimana diizinkan oleh SAS tersebut. Penting untuk melindungi SAS dari penggunaan berbahaya atau tidak diinginkan. Gunakan kebijaksanaan dalam mendistribusikan SAS, dan siapkan rencana untuk mencabut SAS yang dikompromikan.

Untuk informasi selengkapnya tentang tanda tangan akses bersama, lihat Berikan akses terbatas ke sumber daya Azure Storage dengan menggunakan tanda tangan akses berbagi (SAS).

Menginstal versi terbaru Azure CLI

Untuk menggunakan Azure CLI untuk mengamankan SAS dengan kredensial Microsoft Entra, pertama-tama pastikan Anda telah menginstal versi terbaru Azure CLI. Untuk informasi selengkapnya tentang menginstal Azure CLI, lihat Menginstal Azure CLI.

Untuk membuat SAS delegasi pengguna menggunakan Azure CLI, pastikan Anda telah menginstal versi 2.0.78 atau yang lebih baru. Untuk memeriksa versi yang terinstal, gunakan az --version perintah .

Masuk dengan kredensial Microsoft Entra

Masuk ke Azure CLI dengan kredensial Microsoft Entra Anda. Untuk informasi selengkapnya, lihat Masuk dengan Azure CLI.

Menugaskan izin menggunakan Azure RBAC

Untuk membuat SAS delegasi pengguna dari Azure PowerShell, akun Microsoft Entra yang digunakan untuk masuk ke Azure CLI harus diberi peran yang menyertakan tindakan Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey . Izin ini memungkinkan akun Microsoft Entra untuk meminta kunci delegasi pengguna. Kunci delegasi pengguna digunakan untuk menandatangani delegasi SAS pengguna. Peran yang menyediakan tindakan Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey harus ditetapkan di tingkat akun penyimpanan, grup sumber daya, atau langganan.

Jika Anda tidak memiliki izin yang memadai untuk menetapkan peran Azure ke perwakilan keamanan Microsoft Entra, Anda mungkin perlu meminta pemilik atau administrator akun untuk menetapkan izin yang diperlukan.

Contoh berikut menetapkan peran Kontributor Data Blob Penyimpanan, yang mencakup tindakan Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey. Peran ini dibatasi pada tingkat akun penyimpanan.

Ingatlah untuk mengganti nilai placeholder dalam tanda kurung sudut dengan nilai Anda sendiri.

az role assignment create \
    --role "Storage Blob Data Contributor" \
    --assignee <email> \
    --scope "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Storage/storageAccounts/<storage-account>"

Untuk informasi selengkapnya tentang peran bawaan yang menyertakan tindakan Microsoft.Storage/storageAccounts/blobServices/generateUserDelegationKey , lihat Peran bawaan Azure.

Menggunakan kredensial Microsoft Entra untuk mengamankan SAS

Saat Anda membuat SAS delegasi pengguna dengan Azure CLI, kunci delegasi pengguna yang digunakan untuk menandatangani SAS dibuat untuk Anda secara implisit. Waktu mulai dan waktu kedaluwarsa yang Anda tentukan untuk SAS juga digunakan sebagai waktu mulai dan waktu kedaluwarsa untuk kunci delegasi pengguna.

Karena interval maksimum di mana kunci delegasi pengguna valid adalah 7 hari sejak tanggal mulai, Anda harus menentukan waktu kedaluwarsa untuk SAS yang dalam waktu 7 hari sejak waktu mulai. SAS tidak valid setelah kunci delegasi pengguna kedaluwarsa, sehingga SAS dengan waktu kedaluwarsa lebih dari 7 hari masih hanya akan berlaku selama 7 hari.

Saat membuat SAS delegasi pengguna, --auth-mode login dan --as-user parameters diperlukan. Tentukan login untuk --auth-mode parameter sehingga permintaan yang dibuat ke Azure Storage diotorisasi dengan kredensial Microsoft Entra Anda. Tentukan --as-user parameter untuk menunjukkan bahwa SAS yang dikembalikan merupakan SAS delegasi pengguna.

Membuat SAS delegasi pengguna untuk kontainer

Untuk membuat SAS delegasi pengguna untuk kontainer dengan Azure CLI, panggil perintah az storage container generate-sas .

Izin yang didukung untuk SAS delegasi pengguna pada kontainer termasuk Tambahkan, Buat, Hapus, Daftar, Baca, dan Tulis. Izin dapat ditentukan secara tunggal atau digabungkan. Untuk informasi selengkapnya tentang izin ini, lihat Cara membuat SAS delegasi pengguna.

Contoh berikut mengembalikan token SAS delegasi pengguna untuk kontainer. Ingatlah untuk mengganti nilai pada tanda kurung dengan nilai Anda sendiri:

az storage container generate-sas \
    --account-name <storage-account> \
    --name <container> \
    --permissions acdlrw \
    --expiry <date-time> \
    --auth-mode login \
    --as-user

Token SAS untuk delegasi pengguna yang dikembalikan akan mirip dengan:

se=2019-07-27&sp=r&sv=2018-11-09&sr=c&skoid=<skoid>&sktid=<sktid>&skt=2019-07-26T18%3A01%3A22Z&ske=2019-07-27T00%3A00%3A00Z&sks=b&skv=2018-11-09&sig=<signature>

Nota

Token SAS yang dikembalikan oleh Blob Storage tidak menyertakan karakter pemisah ('?') untuk string kueri URL. Jika Anda menambahkan token SAS ke URL sumber daya, ingatlah untuk juga menambahkan karakter pemisah.

Membuat SAS delegasi pengguna untuk sebuah blob

Untuk membuat SAS delegasi pengguna untuk blob dengan Azure CLI, panggil perintah az storage blob generate-sas .

Izin yang didukung untuk SAS delegasi pengguna pada blob termasuk Tambahkan, Buat, Hapus, Baca, dan Tulis. Izin dapat ditentukan secara individual atau digabungkan. Untuk informasi selengkapnya tentang izin ini, lihat Buat SAS Delegasi Pengguna.

Sintaks berikut menghasilkan SAS delegasi pengguna untuk blob. Contoh menentukan --full-uri parameter, yang mengembalikan URI blob dengan token SAS ditambahkan. Ingatlah untuk mengganti nilai pada tanda kurung dengan nilai Anda sendiri:

az storage blob generate-sas \
    --account-name <storage-account> \
    --container-name <container> \
    --name <blob> \
    --permissions acdrw \
    --expiry <date-time> \
    --auth-mode login \
    --as-user \
    --full-uri

URI SAS untuk delegasi pengguna yang dikembalikan akan mirip dengan:

https://storagesamples.blob.core.windows.net/sample-container/blob1.txt?se=2019-08-03&sp=rw&sv=2018-11-09&sr=b&skoid=<skoid>&sktid=<sktid>&skt=2019-08-02T2
2%3A32%3A01Z&ske=2019-08-03T00%3A00%3A00Z&sks=b&skv=2018-11-09&sig=<signature>

Nota

Token SAS yang dikembalikan oleh Azure CLI tidak menyertakan karakter pemisah ('?') untuk string kueri URL. Jika Anda menambahkan token SAS ke URL sumber daya, ingatlah untuk menambahkan karakter pemisah ke URL sumber daya sebelum menambahkan token SAS.

Delegasi pengguna SAS tidak mendukung penetapan izin menggunakan kebijakan akses yang disimpan.

Mencabut SAS Delegasi Pengguna

Dari Azure CLI, untuk mencabut delegasi pengguna SAS, panggil perintah az storage account revoke-delegation-keys. Perintah ini mencabut semua kunci delegasi pengguna yang terkait dengan akun penyimpanan yang ditentukan. Setiap tanda tangan akses bersama yang terkait dengan kunci tersebut tidak valid.

Ingatlah untuk mengganti nilai placeholder dalam tanda kurung sudut dengan nilai Anda sendiri.

az storage account revoke-delegation-keys \
    --name <storage-account> \
    --resource-group <resource-group>

Penting

Kunci delegasi pengguna dan penetapan peran Azure di-cache oleh Azure Storage, sehingga mungkin ada penundaan antara saat Anda memulai proses pencabutan dan ketika SAS delegasi pengguna yang ada menjadi tidak valid.

Langkah berikutnya