Penandatanganan V4 adalah proses yang dapat Anda gunakan guna membuat tanda tangan untuk autentikasi dalam permintaan API XML Cloud Storage. Halaman ini menjelaskan cara menggunakan library klien Google Cloud CLI dan Cloud Storage untuk membuat URL yang ditandatangani, menggunakan kredensial akun layanan. URL yang ditandatangani memberikan akses baca atau tulis dengan batas waktu ke resource Cloud Storage tertentu. Jika Anda ingin membuat program sendiri untuk membuat URL yang ditandatangani, baca Penandatanganan V4 dengan program Anda sendiri.
Sebelum memulai
Sebelum melakukan tugas di halaman ini, selesaikan langkah-langkah berikut:
Enable the Service Account Credentials API.
Membuat akun layanan. Jika sudah memiliki akun layanan yang ingin digunakan untuk menandatangani URL, Anda dapat melewati langkah ini.
Berikan izin yang cukup ke akun layanan sehingga dapat menjalankan permintaan yang akan dibuat oleh URL yang ditandatangani. Misalnya, jika URL yang ditandatangani akan mengizinkan pengguna membaca data objek, akun layanan itu sendiri harus memiliki izin untuk membaca data objek.
Untuk tugas yang dijelaskan dalam panduan ini, minta administrator Anda untuk memberikan salah satu peran IAM berikut ke akun layanan:
Storage Object User (
roles/storage.objectUser
): Gunakan peran ini untuk membuat URL yang ditandatangani untuk mengupload dan mendownload objek. Peran ini juga diperlukan jika URL yang ditandatangani dapat menimpa objek yang ada.Storage Object Viewer (
roles/storage.objectViewer
): Gunakan peran ini jika Anda hanya ingin membuat URL yang ditandatangani untuk mendownload objek.Storage Object Creator (
roles/storage.objectCreator
): Gunakan peran ini jika Anda hanya ingin membuat URL yang ditandatangani untuk mengupload objek dan objek yang diupload tidak akan menimpa objek yang ada di bucket.
Peran bawaan ini berisi izin yang diperlukan untuk membuat URL yang ditandatangani yang mendownload dan mengupload objek. Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:
Izin yang diperlukan
storage.objects.get
(tidak diperlukan jika Anda hanya ingin mengupload objek)storage.objects.create
(tidak diperlukan jika Anda hanya ingin mendownload objek)storage.objects.delete
(tidak diperlukan jika Anda tidak perlu menulis ulang objek saat mengupload)
Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran standar lainnya. Untuk mengetahui peran mana yang terkait dengan izin apa, lihat Peran IAM untuk Cloud Storage.
Memiliki izin yang memadai untuk menandatangani blob dengan akun layanan. Minta administrator untuk memberikan peran Service Account Token Creator (
roles/iam.serviceAccountTokenCreator
).Jika menggunakan kredensial pengguna untuk autentikasi, Anda harus menjadi prinsipal yang diberi peran ini, dan peran ini harus diberikan di akun layanan yang akan digunakan untuk membuat URL yang ditandatangani.
Jika Anda menggunakan akun layanan yang dilampirkan ke instance komputasi untuk autentikasi, akun layanan harus menjadi akun utama untuk peran ini agar dapat meniru identitasnya sendiri, dan peran ini harus diberikan di project yang berisi akun layanan.
Peran bawaan ini berisi izin yang diperlukan untuk menandatangani blob dengan akun layanan. Untuk melihat izin yang benar-benar diperlukan, perluas bagian Izin yang diperlukan:
Izin yang diperlukan
iam.serviceAccounts.signBlob
Anda mungkin juga bisa mendapatkan izin ini dengan peran khusus atau peran bawaan lainnya. Untuk mengetahui peran mana yang terkait dengan izin apa, lihat Peran IAM untuk Cloud Storage.
Untuk mengetahui petunjuk cara memberikan peran di project, lihat Mengelola akses ke project.
Membuat URL yang ditandatangani untuk mendownload objek
Untuk membuat URL yang ditandatangani yang bisa mendapatkan objek dari bucket, selesaikan langkah-langkah berikut:
Command line
Gunakan perintah
gcloud storage sign-url
. Misalnya, perintah berikut akan membuat URL yang ditandatangani yang memungkinkan pengguna mendownload objek selama 10 menit:gcloud storage sign-url gs://BUCKET_NAME/OBJECT_NAME --impersonate-service-account=SERVICE_ACCOUNT_EMAIL --duration=10m
Dengan keterangan:
BUCKET_NAME
adalah nama bucket tempat objek berada. Contoh,example-bucket
.OBJECT_NAME
adalah nama objek yang akan didownload. Contoh,cat.jpeg
.SERVICE_ACCOUNT_EMAIL
adalah alamat email akun layanan yang kuncinya akan melakukan penandatanganan. Contohnya,signed-url-account@my-project.iam.gserviceaccount.com
.
Jika berhasil, respons Anda akan terlihat seperti ini:
--- expiration: '2023-07-14 23:19:35' http_verb: GET resource: gs://example-bucket/cat.jpeg signed_url: https://storage.googleapis.com/example-bucket/cat.jpeg? x-goog-signature=11ae9c61ca84dd0bec319f7d52a38029e5873caa2eeced0568 ef96076258cfc1a925a9683cc907d210036b61af9e06a13bf4a15b15fab3916669b e2f4c9f66ea6be822bec5858af519a6da705415b5768721197be213103fa09b8a18 8a143be77a24351517ff208a2c62cfebb78040daf1f953907080bd98f9462739d11 1355b1d9bcf54705b862f37392c031fde0d52add1a4d3bbb98a22e8b7023f6a1623 2e0a2dd56e524d410624d28663e557fafaf4ba0a04290a1066f894713857b429258 d14f056066c7622baf114c124e645688e19b4df3c4a7925f580693c93fa9c1dae7f dff0edff7259c72f3f0eadc5a9f9f556c83c9c8dc02ee3af8d20ab634bad&x-goog -algorithm=GOOG4-RSA-SHA256&x-goog-credential=signed-url-account%40 my-project.iam.gserviceaccount.com%2F20230714%2Fus%2Fstorage%2Fgoog 4_request&x-goog-date=20230714T221935Z&x-goog-expires=600&x-goog-si gnedheaders=host
URL ini dapat digunakan oleh siapa saja untuk mengakses resource terkait (dalam hal ini
cat.jpeg
) selama durasi waktu yang ditentukan (dalam hal ini, 10 menit).
Library klien
C++
Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage C++ API.
Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
C#
Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage C# API.
Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Go
Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage Go API.
Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Java
Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage Java API.
Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Node.js
Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage Node.js API.
Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
PHP
Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage PHP API.
Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Python
Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage Python API.
Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Ruby
Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage Ruby API.
Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Membuat URL yang ditandatangani untuk mengupload objek
Untuk membuat URL yang ditandatangani yang dapat mengupload objek ke bucket, selesaikan langkah-langkah berikut:
Command line
Gunakan perintah
gcloud storage sign-url
. Misalnya, perintah berikut akan membuat URL yang ditandatangani yang memungkinkan pengguna mengupload file selama satu jam:gcloud storage sign-url gs://BUCKET_NAME/OBJECT_NAME --impersonate-service-account=SERVICE_ACCOUNT_EMAIL --http-verb=PUT --duration=1h --headers=content-type=CONTENT_TYPE
BUCKET_NAME
adalah nama bucket tempat objek diupload. Contoh,example-bucket
.OBJECT_NAME
adalah nama yang akan ditetapkan ke objek yang diupload. Contoh,cat.png
.SERVICE_ACCOUNT_EMAIL
adalah alamat email akun layanan yang kuncinya akan melakukan penandatanganan. Contohnya,signed-url-account@my-project.iam.gserviceaccount.com
.CONTENT_TYPE
adalah jenis konten objek yang diupload. Contoh,image/png
.
Jika berhasil, respons Anda akan terlihat seperti ini:
--- expiration: '2023-07-14 23:35:47' http_verb: PUT resource: gs://example-bucket/cat.png signed_url: https://storage.googleapis.com/example-bucket/cat.png? x-goog-signature=2f670a686102963e0574f3c1a3b4d29ee4aa406c1528d42d2 30195d17fef73834b254314de7d7990afd48538a84b66f20010e7ecd90a900490e 6119b7e56a912f71c8d64285c40e86f31b8fec51cf8c7a61ded81de3cedac9c1ca b92474b7371740fdac20b2d8d092b15396f79443bbde954a4174ed11aef6c2cf5f a4d72a84ff60fd6003ed0a505b0e40b6207ddbaec2a15778f715c3ec7537a1b14f b6661b2abaa5736f1670a412ca7e2555c830591f0595c01ff95af7f2206abe2e27 41948c16d4bd4c7cbb25f41277ece59236c06e00ca6c63ae2eb3efc22c216bb24c e1b8b3801d07fd3a7ed3f2df3db6e59c6fc3cc76a002335dd936efd0237cf584e3 6&x-goog-algorithm=GOOG4-RSA-SHA256&x-goog-credential=signed-url-a ccount%40my-project.iam.gserviceaccount.com%2F20230714%2Fus%2Fstor age%2Fgoog4_request&x-goog-date=20230714T223547Z&x-goog-expires=36 00&x-goog-signedheaders=content-type%3Bhost
URL ini dapat digunakan oleh siapa saja untuk mengupload resource (dalam hal ini
cat.png
) ke bucket Cloud Storage yang ditentukan selama durasi waktu yang ditentukan (dalam hal ini, 1 jam).
Library klien
C++
Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage C++ API.
Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
C#
Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage C# API.
Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Go
Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage Go API.
Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Java
Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage Java API.
Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Node.js
Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage Node.js API.
Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
PHP
Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage PHP API.
Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Python
Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage Python API.
Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Ruby
Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage Ruby API.
Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk informasi selengkapnya, lihat Menyiapkan autentikasi untuk library klien.
Langkah berikutnya
- Pelajari cara menandatangani URL dengan program Anda sendiri.
- Pelajari URL yang ditandatangani lebih lanjut.
- Pelajari cara mengupload objek dengan XML API.
- Pelajari cara mengupload objek.