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
Untuk membuat URL yang ditandatangani, selesaikan tugas di bagian berikut.
Mengaktifkan Service Account Credentials API
Enable the Service Account Credentials API.
Mendapatkan peran yang diperlukan
Untuk mendapatkan izin yang diperlukan guna membuat URL yang ditandatangani untuk mendownload dan mengupload objek, minta administrator untuk memberikan peran berikut:
Storage Object User (
roles/storage.objectUser
): peran ini diperlukan untuk mendownload, mengupload, dan menimpa objek. Peran ini harus diberikan ke akun layanan yang kuncinya akan digunakan untuk menandatangani URL.Jika Anda hanya ingin mendownload objek, minta administrator untuk memberi akun layanan peran Storage Object Viewer (
roles/storage.objectViewer
), bukan peran Storage Object User.Jika Anda hanya ingin mengupload objek (tanpa menimpa), minta administrator untuk memberi akun layanan peran Storage Object Creator (
roles/storage.objectCreator
), bukan peran Storage Object User.
Service Account Token Creator (
roles/iam.serviceAccountTokenCreator
): peran ini diperlukan untuk membuat kredensial jangka pendek untuk akun layanan saat file kunci pribadi tidak disediakan secara lokal. Peran ini harus diberikan kepada akun utama yang akan membuat URL yang ditandatangani.Jika Anda menggunakan kredensial pengguna untuk autentikasi, identitas pengguna Anda harus memiliki peran ini dan Anda harus mengubah perintah untuk meniru identitas akun layanan yang digunakan untuk menandatangani URL.
Jika Anda menggunakan akun layanan yang dilampirkan ke instance komputasi untuk autentikasi, akun layanan tersebut harus memiliki peran ini untuk meniru identitasnya sendiri dan Anda harus mengubah perintah untuk meniru identitas akun layanan yang digunakan untuk menandatangani URL.
Jika Anda menggunakan file kunci pribadi untuk autentikasi, peran ini tidak diperlukan.
Peran bawaan ini berisi izin yang diperlukan agar akun layanan dapat mendownload dan mengupload objek menggunakan URL yang ditandatangani. Untuk melihat izin yang benar-benar diperlukan, luaskan bagian Izin yang diperlukan:
Izin yang diperlukan
storage.objects.get
storage.objects.create
(tidak diperlukan jika Anda hanya ingin mendownload objek)storage.objects.delete
(tidak diperlukan jika Anda tidak perlu menimpa objek saat mengupload)iam.serviceAccounts.signBlob
(tidak diperlukan jika Anda berencana menyediakan kunci akun layanan secara lokal untuk membuat tanda tangan, yang tidak memerlukan pemanggilan metodesignBlob
)
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
Buat kunci pribadi baru, atau gunakan kunci pribadi yang ada untuk akun layanan. Kunci harus dalam format JSON.
Untuk mengetahui informasi selengkapnya tentang kunci pribadi dan akun layanan, lihat Akun Layanan.
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 --private-key-file=KEY_FILE --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
.KEY_FILE
adalah jalur ke file yang berisi kunci pribadi akun layanan Anda. Contoh,Desktop/private-key.json
.
Jika berhasil, respons Anda akan terlihat seperti:
--- 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=example%40example-pro ject.iam.gserviceaccount.com%2F20230714%2Fus%2Fstorage%2Fgoog4_requ est&x-goog-date=20230714T221935Z&x-goog-expires=600&x-goog-signedhe aders=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
Buat kunci pribadi baru, atau gunakan kunci pribadi yang ada untuk akun layanan. Kunci dapat menggunakan format JSON atau PKCS12.
Untuk mengetahui informasi selengkapnya tentang kunci pribadi dan akun layanan, lihat Akun Layanan.
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 --private-key-file=KEY_FILE --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
.KEY_FILE
adalah jalur ke file yang berisi kunci pribadi akun layanan Anda. Contoh,Desktop/private-key.json
.CONTENT_TYPE
adalah jenis konten objek yang diupload. Contoh,image/png
.
Jika berhasil, respons Anda akan terlihat seperti:
--- 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=example%40ex ample-project.iam.gserviceaccount.com%2F20230714%2Fus%2Fstorage%2F goog4_request&x-goog-date=20230714T223547Z&x-goog-expires=3600&x-g oog-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 selanjutnya
- 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.