Membuat SAS layanan

Tanda tangan akses bersama layanan (SAS) mendelegasikan akses ke sumber daya hanya di salah satu layanan penyimpanan: Azure Blob Storage, Azure Queue Storage, Azure Table Storage, atau Azure Files. URI untuk SAS tingkat layanan terdiri dari URI ke sumber daya tempat SAS akan mendelegasikan akses, diikuti oleh token SAS.

Token SAS adalah string kueri yang menyertakan semua informasi yang diperlukan untuk mengotorisasi permintaan. Token menentukan sumber daya yang dapat diakses klien, izin yang diberikan, dan periode waktu di mana tanda tangan valid.

SAS juga dapat menentukan alamat IP atau rentang alamat yang didukung dari mana permintaan dapat berasal, protokol yang didukung dengan permintaan yang dapat dibuat, atau pengidentifikasi kebijakan akses opsional yang terkait dengan permintaan.

Akhirnya, setiap token SAS menyertakan tanda tangan.

Perhatian

Tanda tangan akses bersama adalah kunci yang memberikan izin ke sumber daya penyimpanan, dan Anda harus melindunginya sama seperti Anda akan melindungi kunci akun. Penting untuk melindungi SAS dari penggunaan berbahaya atau tidak diinginkan. Gunakan kebijaksanaan dalam mendistribusikan SAS, dan memiliki rencana untuk mencabut SAS yang disusupi. Operasi yang menggunakan tanda tangan akses bersama harus dilakukan hanya melalui koneksi HTTPS, dan URI SAS harus didistribusikan hanya pada koneksi yang aman, seperti HTTPS.

Mengotorisasi LAYANAN SAS

Anda mengamankan SAS akun dengan menggunakan kunci akun penyimpanan. Saat Anda membuat SAS akun, aplikasi klien Anda harus memiliki kunci akun.

Untuk menggunakan kredensial Microsoft Entra untuk mengamankan SAS untuk kontainer atau blob, buat SAS delegasi pengguna.

Layanan SAS mendukung akses cakupan direktori

LAYANAN SAS mendukung cakupan direktori (sr=d) ketika versi otorisasi (sv) adalah 2020-02-10 atau yang lebih baru dan namespace hierarki diaktifkan. Semantik untuk cakupan direktori (sr=d) mirip dengan yang untuk cakupan kontainer (sr=c), kecuali bahwa akses dibatasi untuk direktori dan file dan subdirektori apa pun di dalamnya. Ketika sr=d ditentukan, sdd parameter kueri juga diperlukan.

Format string-to-sign untuk versi otorisasi 2020-02-10 tidak berubah.

Membangun SAS layanan

Gambar berikut mewakili bagian dari URI tanda tangan akses bersama. Bagian yang diperlukan muncul dengan warna oranye. Bidang yang membentuk token SAS dijelaskan di bagian berikutnya.

Diagram elemen parameter url tanda tangan akses bersama.

Bagian berikut menjelaskan cara menentukan parameter yang membentuk token SAS layanan.

Tentukan signedVersion bidang

Bidang signedVersion (sv) berisi versi layanan tanda tangan akses bersama. Nilai ini menentukan versi otorisasi Kunci Bersama yang digunakan oleh tanda tangan akses bersama ini (di signature bidang ). Nilai juga menentukan versi layanan untuk permintaan yang dibuat dengan tanda tangan akses bersama ini.

Untuk informasi tentang versi mana yang digunakan saat Anda menjalankan permintaan melalui tanda tangan akses bersama, lihat Penerapan versi untuk layanan Azure Storage.

Untuk informasi tentang bagaimana parameter ini memengaruhi otorisasi permintaan yang dibuat dengan tanda tangan akses bersama, lihat Mendelegasikan akses dengan tanda tangan akses bersama.

Nama bidang Parameter kueri Deskripsi
signedVersion sv Wajib diisi. Didukung dalam versi 2012-02-12 dan yang lebih baru. Versi layanan penyimpanan yang digunakan untuk mengotorisasi dan menangani permintaan yang Anda buat dengan tanda tangan akses bersama ini. Untuk informasi selengkapnya, lihat Penerapan versi untuk layanan Azure Storage.

Menentukan versi permintaan SAS warisan

Dalam skenario warisan di mana signedVersion tidak digunakan, Blob Storage menerapkan aturan untuk menentukan versi. Untuk informasi selengkapnya tentang aturan ini, lihat Penerapan versi untuk layanan Azure Storage.

Penting

Perangkat lunak klien mungkin mengalami perilaku protokol yang tidak terduga saat Anda menggunakan URI tanda tangan akses bersama yang menggunakan versi layanan penyimpanan yang lebih baru dari perangkat lunak klien. Kode yang membangun URI tanda tangan akses bersama harus mengandalkan versi yang dipahami oleh perangkat lunak klien yang membuat permintaan layanan penyimpanan.

Tentukan sumber daya yang ditandatangani (hanya Blob Storage)

Bidang (sr) yang diperlukan signedResource menentukan sumber daya mana yang dapat diakses melalui tanda tangan akses bersama. Tabel berikut menjelaskan cara merujuk ke sumber daya blob atau kontainer dalam token SAS.

Sumber daya Nilai parameter Versi yang didukung Deskripsi
Blob b Semua Memberikan akses ke konten dan metadata blob.
Versi blob Bv 2018-11-09 dan yang lebih baru Memberikan akses ke konten dan metadata versi blob, tetapi bukan blob dasar.
Snapshot blob bs 2018-11-09 dan yang lebih baru Memberikan akses ke konten dan metadata rekam jepret blob, tetapi bukan blob dasar.
Kontainer c Semua Memberikan akses ke konten dan metadata blob apa pun dalam kontainer, dan ke daftar blob dalam kontainer.
Directory d 2020-02-10 dan yang lebih baru Memberikan akses ke konten dan metadata blob apa pun di direktori, dan ke daftar blob di direktori, di akun penyimpanan dengan namespace hierarki diaktifkan. Jika direktori ditentukan untuk signedResource bidang , signedDirectoryDepth parameter (sdd) juga diperlukan. Direktori selalu disarangkan dalam kontainer.

Tentukan sumber daya yang ditandatangani (Azure Files)

SAS didukung untuk versi Azure Files 2015-02-21 dan yang lebih baru.

Bidang signedResource menentukan sumber daya mana yang dapat diakses melalui tanda tangan akses bersama. Tabel berikut ini menjelaskan cara merujuk ke file atau berbagi sumber daya di URI.

Nama bidang Parameter kueri Deskripsi
signedResource sr Wajib diisi.

Tentukan f apakah sumber daya bersama adalah file. Melakukannya memberikan akses ke konten dan metadata file.

Tentukan s apakah sumber daya bersama adalah berbagi. Melakukannya memberikan akses ke konten dan metadata file apa pun dalam berbagi, dan ke daftar direktori dan file dalam berbagi.

Tentukan parameter kueri untuk mengganti header respons (Blob Storage dan hanya Azure Files)

Untuk menentukan nilai header respons tertentu yang akan dikembalikan saat tanda tangan akses bersama digunakan dalam permintaan, Anda dapat menentukan header respons dalam parameter kueri. Fitur ini didukung pada versi 2013-08-15 untuk Blob Storage dan versi 2015-02-21 untuk Azure Files. Tanda tangan akses bersama yang menggunakan fitur ini harus menyertakan parameter yang sv diatur ke 2013-08-15 atau yang lebih baru untuk Blob Storage, atau ke 2015-02-21 atau yang lebih baru untuk Azure Files.

Header respons dan parameter kueri terkait tercantum dalam tabel berikut:

Nama header respons Parameter kueri SAS yang sesuai
Cache-Control rscc
Content-Disposition rscd
Content-Encoding rsce
Content-Language rscl
Content-Type rsct

Misalnya, jika Anda menentukan rsct=binary parameter kueri pada tanda tangan akses bersama yang dibuat dengan versi 2013-08-15 atau yang lebih baru, Content-Type header respons diatur ke binary. Nilai ini mengambil alih Content-Type nilai header yang disimpan untuk blob untuk permintaan yang hanya menggunakan tanda tangan akses bersama ini.

Jika Anda membuat tanda tangan akses bersama yang menentukan header respons sebagai parameter kueri, Anda harus menyertakannya dalam string-to-sign yang digunakan untuk membuat string tanda tangan. Untuk informasi selengkapnya, lihat bagian "Buat string tanda tangan" nanti di artikel ini. Untuk contoh tambahan, lihat Contoh SAS Layanan.

Tentukan nama tabel (hanya Penyimpanan Tabel)

Bidang tableName menentukan nama tabel yang akan dibagikan.

Nama bidang Parameter kueri Deskripsi
tableName tn Wajib diisi. Nama tabel yang akan dibagikan.

Tentukan kebijakan akses

Bagian kebijakan akses dari URI menunjukkan periode waktu di mana tanda tangan akses bersama valid dan izin yang akan diberikan kepada pengguna. Bagian URI yang membentuk kebijakan akses dijelaskan dalam tabel berikut:

Nama bidang Parameter kueri Deskripsi
signedStart st Opsional. Waktu ketika tanda tangan akses bersama menjadi valid, dinyatakan dalam salah satu format UTC ISO 8601 yang diterima. Jika parameter ini dihilangkan, waktu UTC saat ini digunakan sebagai waktu mulai.

Dalam versi yang lebih lama dari 2012-02-12, durasi antara signedStart dan signedExpiry tidak boleh melebihi satu jam kecuali kebijakan kontainer digunakan. Untuk informasi selengkapnya tentang format UTC yang diterima, lihat Memformat nilai tanggal/waktu.
signedExpiry se Wajib diisi. Waktu ketika tanda tangan akses bersama menjadi tidak valid, dinyatakan dalam salah satu format UTC ISO 8601 yang diterima. Anda harus menghilangkan bidang ini jika telah ditentukan dalam kebijakan akses tersimpan terkait. Untuk informasi selengkapnya tentang format UTC yang diterima, lihat Memformat nilai tanggal/waktu.
signedPermissions1 sp Wajib diisi. Izin yang terkait dengan tanda tangan akses bersama. Pengguna dibatasi untuk operasi yang diizinkan oleh izin. Anda harus menghilangkan bidang ini jika telah ditentukan dalam kebijakan akses tersimpan terkait.
startPk2

startRk2
spk

srk
Penyimpanan Tabel saja.

Opsional, tetapi startPk harus menyertai startRk. Partisi minimum dan kunci baris yang dapat diakses dengan tanda tangan akses bersama ini. Nilai kunci bersifat inklusif. Jika dihilangkan, tidak ada batas yang lebih rendah pada entitas tabel yang dapat diakses.
endPk2

endRk2
epk

erk
Penyimpanan Tabel saja.

Opsional, tetapi endPk harus menyertai endRk. Partisi maksimum dan kunci baris yang dapat diakses dengan tanda tangan akses bersama ini. Nilai kunci bersifat inklusif. Jika dihilangkan, tidak ada batas atas pada entitas tabel yang dapat diakses.

1 Bidang signedPermissions diperlukan pada URI kecuali ditentukan sebagai bagian dari kebijakan akses tersimpan.
2 Bidang startPk, startRk, endPk, dan endRk hanya dapat ditentukan pada sumber daya Table Storage.

Menentukan izin

Izin yang ditentukan untuk signedPermissions bidang (sp) pada token SAS menunjukkan operasi mana yang dapat dilakukan klien pada sumber daya.

Anda dapat menggabungkan izin untuk mengizinkan klien melakukan beberapa operasi dengan SAS yang sama. Saat membuat SAS, Anda harus menyertakan izin dalam urutan berikut:

racwdxltmeop

Contoh pengaturan izin yang valid untuk kontainer meliputi rw, , rd, rlwd, wl, dan rl. Contoh pengaturan yang tidak valid meliputi wr, , drlr, dan dw. Anda tidak dapat menentukan penandaan izin lebih dari sekali.

LAYANAN SAS tidak dapat memberikan akses ke operasi tertentu:

  • Kontainer, antrean, dan tabel tidak dapat dibuat, dihapus, atau dicantumkan.
  • Metadata dan properti kontainer tidak dapat dibaca atau ditulis.
  • Antrean tidak dapat dibersihkan, dan metadatanya tidak dapat ditulis.
  • Kontainer tidak dapat disewa.

Untuk membuat SAS yang memberikan akses ke operasi ini, gunakan SAS akun. Untuk informasi selengkapnya, lihat Membuat akun SAS.

Penting

Tanda tangan akses bersama adalah kunci yang memberikan izin ke sumber daya penyimpanan, dan Anda harus melindunginya sama seperti Anda akan melindungi kunci akun. Lakukan operasi yang menggunakan tanda tangan akses bersama hanya melalui koneksi HTTPS, dan distribusikan URI tanda tangan akses bersama hanya pada koneksi yang aman, seperti HTTPS.

Izin yang didukung untuk setiap jenis sumber daya dijelaskan di bagian berikut.

Izin untuk direktori, kontainer, atau blob

Izin yang didukung untuk setiap jenis sumber daya dijelaskan dalam tabel berikut:

Izin Simbol URI Sumber daya Dukungan versi Operasi yang diizinkan
Baca r Kontainer
Direktori
Blob
Semua Baca konten, daftar blokir, properti, dan metadata blob apa pun dalam kontainer atau direktori. Gunakan blob sebagai sumber operasi salin.
Menambahkan a Kontainer
Direktori
Blob
Semua Tambahkan blok ke blob penambahan.
Buat c Kontainer
Direktori
Blob
Semua Tulis blob baru, rekam jepret blob, atau salin blob ke blob baru.
Tulis w Kontainer
Direktori
Blob
Semua Membuat atau menulis konten, properti, metadata, atau daftar blokir. Rekam jepret atau sewa blob. Mengubah ukuran blob (blob halaman saja). Gunakan blob sebagai tujuan operasi salin.
Hapus d Kontainer
Direktori
Blob
Semua Hapus blob. Untuk versi 2017-07-29 dan yang lebih baru, izin Hapus juga memungkinkan melanggar sewa pada blob. Untuk informasi selengkapnya, lihat operasi Sewa Blob .
Hapus versi x Kontainer
Blob
2019-12-12 dan yang lebih baru Menghapus versi blob.
Menghapus permanen y Blob 2020-02-10 dan yang lebih baru Hapus salinan bayangan atau versi blob secara permanen.
Daftar l Kontainer
Direktori
Semua Mencantumkan blob secara non-rekursif.
Tag t Blob 2019-12-12 dan yang lebih baru Membaca atau menulis tag pada blob.
Cari f Kontainer 2019-12-12 dan yang lebih baru Temukan blob dengan tag indeks.
Move m Kontainer
Direktori
Blob
2020-02-10 dan yang lebih baru Pindahkan blob atau direktori dan isinya ke lokasi baru. Operasi ini secara opsional dapat dibatasi untuk pemilik blob anak, direktori, atau direktori induk jika saoid parameter disertakan pada token SAS dan bit lengket diatur pada direktori induk.
Jalankan e Kontainer
Direktori
Blob
2020-02-10 dan yang lebih baru Dapatkan properti sistem dan, jika namespace hierarki diaktifkan untuk akun penyimpanan, dapatkan POSIX ACL blob. Jika namespace hierarki diaktifkan dan pemanggil adalah pemilik blob, izin ini memberikan kemampuan untuk mengatur grup pemilik, izin POSIX, dan POSIX ACL dari blob. tidak mengizinkan pemanggil untuk membaca metadata yang ditentukan pengguna.
Kepemilikan o Kontainer
Direktori
Blob
2020-02-10 dan yang lebih baru Ketika namespace hierarki diaktifkan, izin ini memungkinkan pemanggil untuk mengatur pemilik atau grup pemilik, atau untuk bertindak sebagai pemilik saat mengganti nama atau menghapus direktori atau blob dalam direktori yang memiliki set bit lengket.
Izin p Kontainer
Direktori
Blob
2020-02-10 dan yang lebih baru Ketika namespace hierarki diaktifkan, izin ini memungkinkan pemanggil untuk mengatur izin dan ACL POSIX pada direktori dan blob.
Mengatur Kebijakan Imutabilitas i Kontainer
Blob
2020-06-12 dan yang lebih baru Atur atau hapus kebijakan imutabilitas atau penahanan legal pada blob.

Izin untuk file

Izin Simbol URI Operasi yang diizinkan
Baca r Baca konten, properti, metadata. Gunakan file sebagai sumber operasi salin.
Buat c Buat file baru atau salin file ke file baru.
Tulis w Membuat atau menulis konten, properti, metadata. Mengubah ukuran file. Gunakan file sebagai tujuan operasi salin.
Hapus d Menghapus file.

Izin untuk berbagi

Izin Simbol URI Operasi yang diizinkan
Baca r Baca konten, properti, atau metadata file apa pun dalam berbagi. Gunakan file apa pun dalam berbagi sebagai sumber operasi salin.
Buat c Buat file baru di berbagi, atau salin file ke file baru di berbagi.
Tulis w Untuk file apa pun dalam berbagi, buat atau tulis konten, properti, atau metadata. Mengubah ukuran file. Gunakan file sebagai tujuan operasi salin. Catatan: Anda tidak dapat memberikan izin untuk membaca atau menulis properti berbagi atau metadata dengan menggunakan LAYANAN SAS. Gunakan akun SAS sebagai gantinya.
Hapus d Hapus file apa pun di berbagi. Catatan: Anda tidak dapat memberikan izin untuk menghapus berbagi dengan menggunakan layanan SAS. Gunakan akun SAS sebagai gantinya.
Daftar l Cantumkan file dan direktori dalam berbagi.

Izin untuk antrean

Izin Simbol URI Operasi yang diizinkan
Baca r Membaca metadata dan properti, termasuk jumlah pesan. Intip pada pesan.
Menambahkan a Tambahkan pesan ke antrean.
Pembaruan u Perbarui pesan dalam antrean. Catatan: Gunakan izin Proses dengan Pembaruan sehingga Anda bisa terlebih dahulu mendapatkan pesan yang ingin Anda perbarui.
Proses p Mendapatkan dan menghapus pesan dari antrean.

Izin untuk tabel

Izin Simbol URI Operasi yang diizinkan
Kueri r Mendapatkan entitas dan entitas kueri.
Menambahkan a Tambahkan entitas. Catatan: Izin Tambahkan dan Perbarui diperlukan untuk operasi upsert.
Pembaruan u Memperbarui entitas. Catatan: Izin Tambahkan dan Perbarui diperlukan untuk operasi upsert.
Hapus d Hapus entitas.

Tentukan alamat IP atau rentang IP

Pada versi 2015-04-05, bidang opsional signedIp (sip) menentukan alamat IP publik atau rentang alamat IP publik untuk menerima permintaan. Jika alamat IP tempat permintaan berasal tidak cocok dengan alamat IP atau rentang alamat yang ditentukan pada token SAS, permintaan tidak diotorisasi. Hanya alamat IPv4 yang didukung.

Saat Anda menentukan rentang alamat IP, perhatikan bahwa rentangnya inklusif. Misalnya, menentukan sip=168.1.5.65 atau sip=168.1.5.60-168.1.5.70 pada SAS membatasi permintaan ke alamat IP tersebut.

Tabel berikut menjelaskan apakah akan menyertakan signedIp bidang pada token SAS untuk skenario tertentu, berdasarkan lingkungan klien dan lokasi akun penyimpanan.

Lingkungan klien Lokasi akun penyimpanan Rekomendasi
Klien yang berjalan di Azure Di wilayah yang sama dengan klien SAS yang diberikan kepada klien dalam skenario ini tidak boleh menyertakan alamat IP keluar untuk bidang .signedIp Permintaan yang dibuat dari dalam wilayah yang sama yang menggunakan SAS dengan alamat IP keluar tertentu akan gagal.

Sebagai gantinya, gunakan jaringan virtual Azure untuk mengelola pembatasan keamanan jaringan. Permintaan ke Azure Storage dari dalam wilayah yang sama selalu berlangsung melalui alamat IP privat. Untuk informasi selengkapnya, lihat Mengonfigurasi firewall Azure Storage dan jaringan virtual.
Klien yang berjalan di Azure Di wilayah yang berbeda dari klien SAS yang diberikan kepada klien dalam skenario ini dapat mencakup alamat IP publik atau rentang alamat untuk bidang .signedIp Permintaan yang dibuat dengan SAS harus berasal dari alamat IP atau rentang alamat yang ditentukan.
Klien yang menjalankan lokal atau di lingkungan cloud yang berbeda Di wilayah Azure mana pun SAS yang diberikan kepada klien dalam skenario ini dapat mencakup alamat IP publik atau rentang alamat untuk bidang .signedIp Permintaan yang dibuat dengan SAS harus berasal dari alamat IP atau rentang alamat yang ditentukan.

Jika permintaan melewati proksi atau gateway, berikan alamat IP keluar publik proksi atau gateway tersebut untuk bidang tersebut signedIp .

Tentukan protokol HTTP

Pada versi 2015-04-05, bidang opsional signedProtocol (spr) menentukan protokol yang diizinkan untuk permintaan yang dibuat dengan SAS. Nilai yang mungkin adalah HTTPS dan HTTP (https,http) atau HTTPS saja (https). Nilai defaultnya adalah https,http. Perhatikan bahwa HTTP saja bukan nilai yang diizinkan.

Tentukan rentang akses tabel

Bidang startPk, startRk, endPk, dan endRk menentukan rentang entitas tabel yang terkait dengan tanda tangan akses bersama. Kueri tabel hanya mengembalikan hasil yang berada dalam rentang, dan upaya untuk menggunakan tanda tangan akses bersama untuk menambahkan, memperbarui, atau menghapus entitas di luar rentang ini akan gagal.

Jika startPk sama dengan endPk, tanda tangan akses bersama mengotorisasi akses ke entitas hanya dalam satu partisi dalam tabel.

Jika startPk sama dengan endPk dan startRk sama dengan endRk, tanda tangan akses bersama hanya dapat mengakses satu entitas dalam satu partisi.

Untuk memahami bagaimana bidang ini membatasi akses ke entitas dalam tabel, lihat tabel berikut ini:

Bidang yang ada Cakupan batasan
startPk partitionKey >= startPk
endPk partitionKey <= endPk
startPk, startRk (partitionKey >startPk) || (partitionKey == startPk && rowKey >= startRk)
endPk, endRk (partitionKey <endPk) || (partitionKey == endPk && rowKey <= endRk)

Tentukan kedalaman direktori

Saat namespace hierarki diaktifkan dan signedResource bidang menentukan direktori (sr=d), Anda juga harus menentukan signedDirectoryDepth bidang (sdd) untuk menunjukkan jumlah subdirektori di bawah direktori akar. Nilai bidang harus berupa bilangan sdd bulat non-negatif.

Misalnya, direktori https://{account}.blob.core.windows.net/{container}/ akar memiliki kedalaman 0. Setiap subdirektori dalam direktori akar menambah kedalaman sebesar 1. Direktori https://{account}.blob.core.windows.net/{container}/d1/d2 memiliki kedalaman 2.

Bidang ini didukung dengan versi 2020-02-10 atau yang lebih baru.

Tentukan pengidentifikasi yang ditandatangani

Saat Anda menentukan signedIdentifier bidang pada URI, Anda menghubungkan tanda tangan akses bersama yang ditentukan dengan kebijakan akses tersimpan yang sesuai. Kebijakan akses tersimpan menyediakan ukuran kontrol tambahan atas satu atau beberapa tanda tangan akses bersama, termasuk kemampuan untuk mencabut tanda tangan jika diperlukan. Setiap kontainer, antrean, tabel, atau berbagi dapat memiliki hingga lima kebijakan akses tersimpan.

Tabel berikut ini menjelaskan cara merujuk ke pengidentifikasi yang ditandatangani pada URI:

Nama bidang Parameter kueri Deskripsi
signedIdentifier si Opsional. Nilai unik hingga 64 karakter yang berkorelasi dengan kebijakan akses yang ditentukan untuk kontainer, antrean, atau tabel.

Kebijakan akses tersimpan mencakup pengidentifikasi yang ditandatangani, nilai hingga 64 karakter yang unik dalam sumber daya. Anda dapat menentukan nilai pengidentifikasi yang ditandatangani ini untuk signedidentifier bidang di URI untuk tanda tangan akses bersama. Saat Anda menentukan pengidentifikasi yang ditandatangani pada URI, Anda mengaitkan tanda tangan dengan kebijakan akses tersimpan. Untuk membuat kebijakan akses tingkat kontainer dengan menggunakan REST API, lihat Mendelegasikan akses dengan tanda tangan akses bersama.

Tentukan cakupan enkripsi

Dengan menggunakan signedEncryptionScope bidang pada URI, Anda dapat menentukan cakupan enkripsi yang dapat digunakan aplikasi klien. Ini memberlakukan enkripsi sisi server dengan cakupan enkripsi yang ditentukan saat Anda mengunggah blob (PUT) dengan token SAS. GET dan HEAD tidak akan dibatasi dan dilakukan seperti sebelumnya.

Tabel berikut ini menjelaskan cara merujuk ke cakupan enkripsi yang ditandatangani pada URI:

Nama bidang Parameter kueri Deskripsi
signedEncryptionScope ses Opsional. Menunjukkan cakupan enkripsi yang akan digunakan untuk mengenkripsi konten permintaan.

Bidang ini didukung dengan versi 2020-12-06 atau yang lebih baru. Jika Anda menambahkan sebelum versi yang ses didukung, layanan mengembalikan kode respons kesalahan 403 (Terlarang).

Jika Anda mengatur cakupan enkripsi default untuk kontainer atau sistem file, ses parameter kueri mematuhi kebijakan enkripsi kontainer. Jika ada ketidakcocokan antara ses parameter kueri dan x-ms-default-encryption-scope header, dan x-ms-deny-encryption-scope-override header diatur ke true, layanan mengembalikan kode respons kesalahan 403 (Terlarang).

Saat Anda memberikan x-ms-encryption-scope header dan ses parameter kueri dalam permintaan PUT, layanan mengembalikan kode respons kesalahan 400 (Permintaan Buruk) jika ada ketidakcocokan.

Tentukan tanda tangan

Anda menggunakan bagian tanda tangan URI untuk mengotorisasi permintaan yang dibuat dengan tanda tangan akses bersama. Azure Storage menggunakan skema otorisasi Kunci Bersama untuk mengotorisasi LAYANAN SAS.

Tabel berikut ini menjelaskan cara menentukan tanda tangan pada URI:

Nama bidang Parameter kueri Deskripsi
signature sig String-to-sign adalah string unik yang dibangun dari bidang dan yang harus diverifikasi untuk mengotorisasi permintaan. Tanda tangan adalah kode autentikasi pesan berbasis hash (HMAC) yang Anda komputasi melalui string-to-sign dan kunci dengan menggunakan algoritma SHA256, lalu mengodekan dengan menggunakan pengodean Base64.

Membuat string tanda tangan

Untuk membuat string tanda tangan tanda tangan tanda tangan akses bersama, pertama-tama buat string-to-sign dari bidang yang membentuk permintaan, kodekan string sebagai UTF-8, lalu komputasi tanda tangan dengan menggunakan algoritma HMAC-SHA256. Bidang yang disertakan dalam string-to-sign harus didekodekan URL.

Versi 2020-12-06 dan yang lebih baru

Versi 2020-12-06 menambahkan dukungan untuk bidang cakupan enkripsi yang ditandatangani. Untuk membuat string-to-sign untuk sumber daya Blob Storage, gunakan format berikut:

StringToSign = signedPermissions + "\n" +  
               signedStart + "\n" +  
               signedExpiry + "\n" +  
               canonicalizedResource + "\n" +  
               signedIdentifier + "\n" +  
               signedIP + "\n" +  
               signedProtocol + "\n" +  
               signedVersion + "\n" +  
               signedResource + "\n" +
               signedSnapshotTime + "\n" +
               signedEncryptionScope + "\n" +
               rscc + "\n" +  
               rscd + "\n" +  
               rsce + "\n" +  
               rscl + "\n" +  
Versi 2018-11-09 dan yang lebih baru

Versi 2018-11-09 menambahkan dukungan untuk sumber daya yang ditandatangani dan bidang waktu rekam jepret blob yang ditandatangani. Bidang-bidang ini harus disertakan dalam string-to-sign. Untuk membuat string-to-sign untuk sumber daya Blob Storage, gunakan format berikut:

StringToSign = signedPermissions + "\n" +  
               signedStart + "\n" +  
               signedExpiry + "\n" +  
               canonicalizedResource + "\n" +  
               signedIdentifier + "\n" +  
               signedIP + "\n" +  
               signedProtocol + "\n" +  
               signedVersion + "\n" +  
               signedResource + "\n"
               signedSnapshotTime + "\n" +
               rscc + "\n" +  
               rscd + "\n" +  
               rsce + "\n" +  
               rscl + "\n" +  
               rsct  
Versi 2015-04-05 dan yang lebih baru

Versi 2015-04-05 menambahkan dukungan untuk IP yang ditandatangani dan bidang protokol yang ditandatangani. Bidang-bidang ini harus disertakan dalam string-to-sign. Untuk membuat string-to-sign untuk Blob Storage atau sumber daya Azure Files, gunakan format berikut:

StringToSign = signedPermissions + "\n" +  
               signedStart + "\n" +  
               signedExpiry + "\n" +  
               canonicalizedResource + "\n" +  
               signedIdentifier + "\n" +  
               signedIP + "\n" +  
               signedProtocol + "\n" +  
               signedVersion + "\n" +  
               rscc + "\n" +  
               rscd + "\n" +  
               rsce + "\n" +  
               rscl + "\n" +  
               rsct  

Untuk membuat string-to-sign untuk sumber daya Table Storage, gunakan format berikut:

StringToSign = signedPermissions + "\n" +  
               signedStart + "\n" +  
               signedExpiry + "\n" +  
               canonicalizedResource + "\n" +  
               signedIdentifier + "\n" +  
               signedIP + "\n" +  
               signedProtocol + "\n" +  
               signedVersion + "\n" +  
               startingPartitionKey + "\n"  
               startingRowKey + "\n"  
               endingPartitionKey + "\n"  
               endingRowKey  
  

Untuk membuat string-to-sign untuk sumber daya Queue Storage, gunakan format berikut:

StringToSign = signedPermissions + "\n" +  
               signedStart + "\n" +  
               signedExpiry + "\n" +  
               canonicalizedResource + "\n" +  
               signedIdentifier + "\n" +  
               signedIP + "\n" +  
               signedProtocol + "\n" +  
               signedVersion  
  
Versi 2013-08-15 hingga 2015-02-21

Untuk membuat string-to-sign untuk Blob Storage atau Azure Files sumber daya dengan menggunakan versi 2013-08-15 hingga 2015-02-21, gunakan format berikut. Untuk Azure Files, SAS didukung pada versi 2015-02-21.

StringToSign = signedPermissions + "\n" +  
               signedStart + "\n" +  
               signedExpiry + "\n" +  
               canonicalizedResource + "\n" +  
               signedIdentifier + "\n" +  
               signedVersion + "\n" +  
               rscc + "\n" +  
               rscd + "\n" +  
               rsce + "\n" +  
               rscl + "\n" +  
               rsct  

Untuk membuat string-to-sign untuk tabel, gunakan format berikut:

StringToSign = signedPermissions + "\n" +  
               signedStart + "\n" +  
               signedExpiry + "\n" +  
               canonicalizedResource + "\n" +  
               signedIdentifier + "\n" +  
               signedVersion + "\n" +  
               startPk + "\n" +  
               startRk + "\n" +  
               endPk + "\n" +  
               endRk  
  

Untuk membuat string-to-sign untuk antrean, gunakan format berikut:

StringToSign = signedPermissions + "\n" +  
               signedStart + "\n" +  
               signedExpiry + "\n" +  
               canonicalizedResource + "\n" +  
               signedIdentifier + "\n" +  
               signedVersion 
Versi 2012-02-12

Untuk membuat string-to-sign untuk sumber daya Blob Storage untuk versi 2012-02-12, gunakan format berikut:

StringToSign = signedPermissions + "\n" +  
               signedStart + "\n" +  
               signedExpiry + "\n" +  
               canonicalizedResource + "\n" +  
               signedIdentifier + "\n" +  
               signedVersion  
Versi yang lebih lama dari 2012-02-12

Untuk membuat string-to-sign untuk sumber daya Blob Storage untuk versi yang lebih lama dari 2012-02-12, gunakan format berikut:

StringToSign = signedPermissions + "\n" +  
               signedStart + "\n" +  
               signedExpiry + "\n" +  
               canonicalizedResource + "\n" +  
               signedIdentifier  
  

Saat Anda membuat string yang akan ditandatangani, ingatlah hal berikut:

  • Jika bidang bersifat opsional dan tidak disediakan sebagai bagian dari permintaan, tentukan string kosong untuk bidang tersebut. Pastikan untuk menyertakan karakter baris baru (\n) setelah string kosong.

  • String-to-sign untuk tabel harus menyertakan parameter tambahan, bahkan jika string kosong.

  • Bagian signedpermission string harus menyertakan penunjukan izin dalam urutan tetap yang khusus untuk setiap jenis sumber daya. Kombinasi apa pun dari izin ini dapat diterima, tetapi urutan huruf izin harus cocok dengan urutan dalam tabel berikut.

    Jenis Sumber Daya Urutan izin
    Blob racwd
    Kontainer racwdl
    Antrean raup
    File rcwd
    Bagikan rcwdl
    Tabel raud

    Misalnya, contoh pengaturan izin yang valid untuk kontainer meliputi rw, , rd, rl, wdwl, dan rl. Contoh pengaturan yang tidak valid meliputi wr, , drlr, dan dw. Menentukan penentuan izin lebih dari sekali tidak diizinkan.

  • Berikan nilai untuk signedIdentifier bagian string jika Anda mengaitkan permintaan dengan kebijakan akses tersimpan.

  • Tanda tangan akses bersama yang menentukan versi layanan penyimpanan yang lebih lama dari 2012-02-12 hanya dapat berbagi blob atau kontainer, dan harus menghilangkan signedVersion dan karakter baris baru sebelum itu.

  • Bagian canonicalizedResource string adalah jalur kanonis ke sumber daya yang ditandatangani. Ini harus mencakup nama layanan (Blob Storage, Table Storage, Queue Storage, atau Azure Files) untuk versi 2015-02-21 atau yang lebih baru, nama akun penyimpanan, dan nama sumber daya, dan harus didekodeKAN URL. Nama blob harus menyertakan kontainer blob. Nama tabel harus huruf kecil.

String sumber daya kanonis untuk kontainer, antrean, tabel, atau berbagi file harus menghilangkan garis miring berikutnya (/) untuk SAS yang menyediakan akses ke objek tersebut.

Contoh berikut menunjukkan cara membuat canonicalizedResource bagian string, tergantung pada jenis sumber daya.

Kontainer

Untuk versi 2015-02-21 dan yang lebih baru:

URL = https://myaccount.blob.core.windows.net/music  
canonicalizedResource = "/blob/myaccount/music"  

Untuk versi yang lebih lama dari 2015-02-21:

URL = https://myaccount.blob.core.windows.net/music
canonicalizedResource = "/myaccount/music"  

Blobs

Untuk versi 2015-02-21 dan yang lebih baru:

URL = https://myaccount.blob.core.windows.net/music/intro.mp3  
canonicalizedResource = "/blob/myaccount/music/intro.mp3"  

Untuk versi yang lebih lama dari 2015-02-21:

URL = https://myaccount.blob.core.windows.net/music/intro.mp3
canonicalizedResource = "/myaccount/music/intro.mp3"  

Berbagi File

URL = https://myaccount.file.core.windows.net/music
canonicalizedResource = "/file/myaccount/music"  

File

URL = https://myaccount.file.core.windows.net/music/intro.mp3
canonicalizedResource = "/file/myaccount/music/intro.mp3"  

Antrean

Untuk versi 2015-02-21 dan yang lebih baru:

URL = https://myaccount.queue.core.windows.net/thumbnails  
canonicalizedResource = "/queue/myaccount/thumbnails"  

Untuk versi yang lebih lama dari 2015-02-21:

URL = https://myaccount.queue.core.windows.net/thumbnails  
canonicalizedResource = "/myaccount/thumbnails"  

Tabel

Jika sumber daya yang ditandatangani adalah tabel, pastikan bahwa nama tabel dalam format kanonis.

Untuk versi 2015-02-21 dan yang lebih baru:

URL = https://myaccount.table.core.windows.net/Employees(PartitionKey='Jeff',RowKey='Price')  
canonicalizedResource = "/table/myaccount/employees"  

Untuk versi yang lebih lama dari 2015-02-21:

URL = https://myaccount.table.core.windows.net/Employees(PartitionKey='Jeff',RowKey='Price')  
canonicalizedResource = "/myaccount/employees"  

Masa pakai dan pencabutan tanda tangan akses bersama

Tanda tangan akses bersama memberi pengguna hak akses ke sumber daya akun penyimpanan. Saat Anda berencana menggunakan SAS, pikirkan tentang masa pakai SAS dan apakah aplikasi Anda mungkin perlu mencabut hak akses dalam keadaan tertentu.

Ad hoc SAS versus kebijakan akses tersimpan

SAS layanan dapat mengambil salah satu dari dua bentuk:

  • AD hoc SAS: Saat Anda membuat SAS ad hoc, waktu mulai, waktu kedaluwarsa, dan izin untuk SAS semuanya ditentukan dalam SAS URI (atau tersirat, jika waktu mulai dihilangkan). Semua jenis SAS bisa menjadi ad hoc SAS.

    Anda dapat mengelola masa pakai SAS ad hoc dengan menggunakan signedExpiry bidang . Jika Anda ingin terus memberikan akses klien ke sumber daya setelah waktu kedaluwarsa, Anda harus mengeluarkan tanda tangan baru. Kami menyarankan agar Anda menjaga masa pakai tanda tangan akses bersama tetap singkat. Sebelum versi 2012-02-12, tanda tangan akses bersama yang tidak terkait dengan kebijakan akses tersimpan tidak boleh memiliki periode aktif yang melebihi satu jam.

  • SAS dengan kebijakan akses tersimpan: Kebijakan akses tersimpan ditentukan pada kontainer sumber daya, yang dapat berupa kontainer blob, tabel, antrean, atau berbagi file. Anda dapat menggunakan kebijakan akses tersimpan untuk mengelola batasan untuk satu atau beberapa tanda tangan akses bersama. Saat Anda mengaitkan SAS dengan kebijakan akses tersimpan, SAS mewarisi batasan (yaitu, waktu mulai, waktu kedaluwarsa, dan izin) yang ditentukan untuk kebijakan akses tersimpan.

    Kebijakan akses tersimpan signedIdentifier diwakili oleh bidang pada URI. Kebijakan akses tersimpan menyediakan ukuran kontrol tambahan atas satu atau beberapa tanda tangan akses bersama, termasuk kemampuan untuk mencabut tanda tangan jika diperlukan.

Mencabut SAS

Karena SAS URI adalah URL, siapa pun yang mendapatkan SAS dapat menggunakannya, terlepas dari siapa yang awalnya membuatnya. Jika SAS diterbitkan secara publik, SAS dapat digunakan oleh siapa saja di dunia. SAS memberikan akses ke sumber daya kepada siapa pun yang memilikinya sampai salah satu dari empat hal terjadi:

  • Waktu kedaluwarsa yang ditentukan pada SAS ad hoc tercapai.

  • Waktu kedaluwarsa yang ditentukan pada kebijakan akses tersimpan yang direferensikan oleh SAS tercapai, jika kebijakan akses tersimpan direferensikan dan kebijakan akses menentukan waktu kedaluwarsa.

    Waktu kedaluwarsa dapat dicapai baik karena interval berlalu atau karena Anda telah memodifikasi kebijakan akses tersimpan untuk memiliki waktu kedaluwarsa di masa lalu, yang merupakan salah satu cara untuk mencabut SAS.

  • Kebijakan akses tersimpan yang direferensikan oleh SAS dihapus, yang mencabut SAS. Jika Azure Storage tidak dapat menemukan kebijakan akses tersimpan yang ditentukan dalam tanda tangan akses bersama, klien tidak dapat mengakses sumber daya yang ditunjukkan oleh URI.

    Jika Anda membuat ulang kebijakan akses tersimpan dengan nama yang sama persis dengan kebijakan yang dihapus, semua token SAS yang ada akan kembali valid, sesuai dengan izin yang terkait dengan kebijakan akses tersimpan tersebut. Ini mengasumsikan bahwa waktu kedaluwarsa pada SAS belum berlalu. Jika Anda ingin mencabut SAS, pastikan untuk menggunakan nama yang berbeda saat Anda membuat ulang kebijakan akses dengan waktu kedaluwarsa di masa mendatang.

  • Kunci akun yang digunakan untuk membuat SAS diregenerasi. Meregenerasi kunci akun menyebabkan semua komponen aplikasi yang menggunakan kunci tersebut gagal diotorisasi hingga diperbarui untuk menggunakan kunci akun lain yang valid atau kunci akun yang baru diregenerasi. Meregenerasi kunci akun adalah satu-satunya cara untuk segera mencabut SAS ad hoc.

Penting

URI tanda tangan akses bersama dikaitkan dengan kunci akun yang digunakan untuk membuat tanda tangan dan kebijakan akses tersimpan terkait, jika berlaku. Jika tidak ada kebijakan akses yang disimpan yang ditentukan, satu-satunya cara untuk mencabut tanda tangan akses bersama adalah dengan mengubah kunci akun.

Sebagai praktik terbaik, kami sarankan Anda menggunakan kebijakan akses tersimpan dengan LAYANAN SAS. Jika Anda memilih untuk tidak menggunakan kebijakan akses tersimpan, pastikan untuk menjaga periode di mana SAS ad hoc singkat. Untuk informasi selengkapnya tentang mengaitkan SAS layanan dengan kebijakan akses tersimpan, lihat Menentukan kebijakan akses tersimpan.

Contoh SAS layanan

Contoh berikut menunjukkan URI blob dengan token SAS layanan yang ditambahkan ke dalamnya. Token SAS layanan menyediakan izin baca dan tulis ke blob.

https://myaccount.blob.core.windows.net/sascontainer/blob1.txt?sp=rw&st=2023-05-24T01:13:55Z&se=2023-05-24T09:13:55Z&sip=168.1.5.60-168.1.5.70&spr=https&sv=2022-11-02&sr=b&sig=<signature>

Setiap bagian URI dijelaskan dalam tabel berikut:

Nama Bagian SAS Deskripsi
URI Sumber Daya https://myaccount.blob.core.windows.net/sascontainer/blob1.txt Alamat blob. Kami sangat menyarankan Anda menggunakan HTTPS.
Pembatas ? Pemisah yang mendahului string kueri. Pemisah bukan bagian dari token SAS.
Izin sp=rw Izin yang diberikan oleh SAS termasuk Baca (r) dan Tulis (w).
Waktu mulai st=2023-05-24T01:13:55Z Ditentukan dalam waktu UTC. Jika Anda ingin SAS untuk segera berlaku, hilangkan waktu mulai.
Waktu kedaluwarsa se=2023-05-24T09:13:55Z Ditentukan dalam waktu UTC.
Rentang IP sip=168.1.5.60-168.1.5.70 Rentang alamat IP tempat permintaan akan diterima.
Protokol spr=https Hanya permintaan yang menggunakan HTTPS yang diizinkan.
Versi Azure Storage sv=2023-05-24 Untuk Azure Storage versi 2012-02-12 dan yang lebih baru, parameter ini menunjukkan versi yang akan digunakan.
Sumber daya sr=b Sumber dayanya adalah blob.
Tanda Tangan sig=<signature> Digunakan untuk mengotorisasi akses ke blob. Tanda tangan adalah HMAC yang dihitung melalui string-to-sign dan kunci dengan menggunakan algoritma SHA256, lalu dikodekan dengan menggunakan pengodean Base64.

Lihat juga