URL yang Ditandatangani

Halaman ini menyediakan ringkasan untuk URL yang ditandatangani, yang memberikan akses berbatas waktu ke resource Cloud Storage tertentu. Siapa pun dengan URL yang ditandatangani dapat menggunakannya saat aktif, terlepas dari apakah mereka memiliki akun Google atau tidak. Untuk mempelajari cara membuat URL yang ditandatangani, lihat Proses Penandatanganan V4 dengan Alat Cloud Storage dan Proses Penandatanganan V4 dengan Program Anda Sendiri. Untuk mempelajari cara lain dalam mengontrol akses ke bucket dan objek, lihat Ringkasan Kontrol Akses.

Ringkasan

URL yang ditandatangani adalah URL yang memberikan izin berbatas waktu untuk membuat permintaan. URL yang ditandatangani berisi informasi autentikasi dalam string kuerinya, yang memungkinkan pengguna tanpa kredensial melakukan tindakan tertentu pada resource.

  • Saat membuat URL yang ditandatangani, Anda harus menentukan akun yang memiliki izin yang memadai untuk membuat permintaan yang akan dibuat oleh URL yang ditandatangani.

    • Biasanya, akun tersebut adalah akun layanan.

    • Jika Anda membuat program sendiri untuk membuat URL yang ditandatangani, Anda dapat menggunakan akun pengguna, jika akun tersebut memiliki kunci HMAC yang terkait.

Setelah Anda membuat URL yang ditandatangani, siapa saja yang memilikinya dapat menggunakan URL yang ditandatangani untuk melakukan tindakan tertentu, seperti membaca objek, dalam jangka waktu tertentu.

Kapan Anda harus menggunakan URL yang ditandatangani?

Dalam beberapa skenario, sebaiknya jangan mengharuskan pengguna memiliki akun Google untuk dapat mengakses Cloud Storage. Namun, sebaiknya tetap kontrol akses menggunakan logika khusus aplikasi. Cara umum untuk mengatasi kasus penggunaan ini adalah dengan memberikan URL yang ditandatangani kepada pengguna, sehingga pengguna tersebut dapat membaca, menulis, atau menghapus akses ke resource tersebut selama waktu yang terbatas. Anda perlu menentukan waktu habis masa berlaku saat membuat URL yang ditandatangani. Siapa saja yang memiliki URL ini dapat mengakses resource hingga waktu habis masa berlaku untuk URL tercapai atau kunci yang digunakan untuk menandatangani URL diputar.

Penggunaan URL yang ditandatangani paling umum adalah untuk mengupload dan mendownload, karena dalam permintaan semacam itu, data objek berpindah antara pemohon dan Cloud Storage. Dalam sebagian besar kasus lainnya, seperti menyalin objek, menulis objek, menghapus objek, atau mengedit metadata, pembuatan URL yang ditandatangani dan pemberiannya kepada seseorang untuk digunakan merupakan langkah tambahan yang tidak perlu dilakukan. Sebagai gantinya, Anda harus mempertimbangkan desain yang memungkinkan entity yang bertanggung jawab untuk membuat secara langsung URL yang ditandatangani membuat permintaan yang diinginkan ke Cloud Storage.

Opsi dalam membuat URL yang ditandatangani

Cloud Storage mendukung beberapa metode dalam membuat URL yang ditandatangani:

  • Penandatanganan V4 dengan autentikasi akun layanan: Penjelasan mekanisme penandatanganan ini ada di bawah.

  • Penandatanganan dengan autentikasi HMAC: Sebagai pengguna Amazon Simple Storage Service (Amazon S3), Anda dapat menggunakan alur kerja yang ada untuk membuat URL yang ditandatangani untuk Cloud Storage. Cukup tentukan resource Cloud Storage, arahkan kursor ke host storage.googleapis.com, dan gunakan kredensial HMAC Cloud Storage dalam proses membuat URL yang ditandatangani.

Contoh URL yang ditandatangani

Berikut ini adalah contoh URL yang ditandatangani dan dibuat setelah proses penandatanganan V4 dengan autentikasi akun layanan:

https://storage.googleapis.com/example-bucket/cat.jpeg?X-Goog-Algorithm=
GOOG4-RSA-SHA256&X-Goog-Credential=example%40example-project.iam.gserviceaccount.com
%2F20181026%2Fus-central1%2Fstorage%2Fgoog4_request&X-Goog-Date=20181026T18
1309Z&X-Goog-Expires=900&X-Goog-SignedHeaders=host&X-Goog-Signature=247a2aa45f16
9edf4d187d54e7cc46e4731b1e6273242c4f4c39a1d2507a0e58706e25e3a85a7dbb891d62afa849
6def8e260c1db863d9ace85ff0a184b894b117fe46d1225c82f2aa19efd52cf21d3e2022b3b868dc
c1aca2741951ed5bf3bb25a34f5e9316a2841e8ff4c530b22ceaa1c5ce09c7cbb5732631510c2058
0e61723f5594de3aea497f195456a2ff2bdd0d13bad47289d8611b6f9cfeef0c46c91a455b94e90a
66924f722292d21e24d31dcfb38ce0c0f353ffa5a9756fc2a9f2b40bc2113206a81e324fc4fd6823
a29163fa845c8ae7eca1fcf6e5bb48b3200983c56c5ca81fffb151cca7402beddfc4a76b13344703
2ea7abedc098d2eb14a7

URL yang ditandatangani ini memberikan akses untuk membaca objek cat.jpeg di bucket example-bucket. Parameter kueri yang membuatnya menjadi URL yang ditandatangani antara lain:

  • X-Goog-Algorithm: Algoritme yang digunakan untuk menandatangani URL.

  • X-Goog-Credential: Informasi tentang kredensial yang digunakan untuk membuat URL yang ditandatangani.

  • X-Goog-Date: Tanggal dan waktu sebelum URL yang ditandatangani dapat digunakan, dalam format dasar ISO 8601 YYYYMMDD'T'HHMMSS'Z'.

  • X-Goog-Expires: Durasi URL yang ditandatangani tetap valid, diukur dalam hitungan detik dari nilai yang ada di X-Goog-Date. Dalam contoh ini, masa berlaku URL yang Ditandatangani akan berakhir dalam 15 menit. Nilai habis masa berlaku terpanjang adalah 604800 detik (7 hari).

  • X-Goog-SignedHeaders: Header yang harus disertakan sebagai bagian dari semua permintaan yang menggunakan URL yang ditandatangani.

  • X-Goog-Signature: String autentikasi yang mengizinkan permintaan menggunakan URL yang ditandatangani ini untuk mengakses cat.jpeg.

Menggunakan URL yang ditandatangani dengan operasi upload yang dapat dilanjutkan

Umumnya, membuat URL yang ditandatangani untuk upload yang dapat dilanjutkan tidak diperlukan, karena setelah permintaan untuk memulai upload, permintaan PUT berikutnya untuk mengupload data objek menggunakan URI sesi, yang bertindak sebagai token autentikasi. Artinya, permintaan PUT tidak menggunakan URL apa pun yang ditandatangani.

Meskipun Anda dapat membuat dan menggunakan URL yang ditandatangani untuk permintaan POST awal guna memulai upload, dalam sebagian besar kasus, server dapat memulai upload yang dapat dilanjutkan. Server kemudian mengirimkan URI sesi ke klien untuk melakukan upload. Hal ini menghindari kerumitan saat server membuat URL yang ditandatangani, serta kerumitan saat klien menangani URL yang ditandatangani dan memulai upload yang dapat dilanjutkan.

Seperti URL yang ditandatangani, URI sesi dapat digunakan oleh siapa saja yang memilikinya untuk mengupload data. Pastikan untuk mengirimkan URI sesi melalui HTTPS saat memberikannya kepada klien.

Pertimbangan URL yang ditandatangani

Saat menggunakan URL yang ditandatangani, perhatikan hal-hal berikut:

  • URL yang ditandatangani hanya dapat digunakan untuk mengakses resource Cloud Storage melalui endpoint XML API.

  • URL yang ditandatangani umumnya dapat dibuat untuk semua permintaan XML API. Namun, ada dua pengecualian:

    • URL yang ditandatangani dan menggunakan tanda tangan V4 tidak dapat digunakan dalam permintaan yang isinya menggunakan potongan encoding.

    • Library Klien Cloud Storage Node.js saat ini hanya dapat membuat URL yang ditandatangani untuk setiap objek. Misalnya, kode ini tidak dapat digunakan untuk membuat URL yang ditandatangani guna mencantumkan objek dalam bucket.

  • Saat menentukan kredensial, sebaiknya Anda mengidentifikasi akun layanan menggunakan alamat emailnya. Namun, Anda juga dapat menggunakan ID akun layanan.

  • Pastikan untuk tidak menyertakan header otorisasi dari permintaan apa pun yang menggunakan URL yang ditandatangani. Jika keduanya digunakan, Cloud Storage dapat melakukan autentikasi terhadap kredensial yang diberikan di header, bukan pada URL yang ditandatangani. Tindakan ini akan memungkinkan lebih banyak akses ke resource daripada yang ditujukan.

Permintaan kanonis

URL yang ditandatangani menggunakan permintaan kanonis sebagai bagian dari informasi yang dienkode dalam parameter string kueri X-Goog-Signature terkait. Saat Anda membuat URL yang ditandatangani dengan alat Cloud Storage, permintaan kanonis yang diperlukan akan dibuat dan digabungkan secara otomatis. Namun, saat membuat URL yang ditandatangani dengan program milik sendiri, Anda harus menentukan sendiri permintaan kanonis dan menggunakannya untuk membuat tanda tangan.

Cakupan kredensial

Cakupan kredensial muncul di string-to-sign dan parameter string kueri X-Goog-Credential.

Langkah berikutnya