Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
AWS Tanda Tangan Versi 4 untuk permintaan API
penting
Jika Anda menggunakan alat AWS SDK (lihat Kode Sam pel dan Perpustakaan
Di Wilayah yang mendukung beberapa versi tanda tangan, permintaan penandatanganan secara manual berarti Anda harus menentukan versi tanda tangan mana yang akan digunakan. Saat Anda memberikan permintaan ke Multi-Region Access Points, SDK dan CLI secara otomatis beralih menggunakan Signature Version 4A tanpa konfigurasi tambahan.
Informasi otentikasi yang Anda kirim dalam permintaan harus menyertakan tanda tangan. AWS Signature Version 4 (SIGv4) adalah protokol pen AWS andatanganan untuk menambahkan informasi otentikasi ke permintaan AWS API.
Anda tidak menggunakan kunci akses rahasia untuk menandatangani permintaan API. Sebagai gantinya, Anda menggunakan proses penandatanganan SIGv4. Permintaan penandatanganan melibatkan:
-
Membuat permintaan kanonik berdasarkan detail permintaan.
-
Menghitung tanda tangan menggunakan AWS kredensibilitas Anda.
-
Menambahkan tanda tangan ini ke permintaan sebagai header Otorisasi.
AWS kemudian mereplikasi proses ini dan memverifikasi tanda tangan, memberikan atau menolak akses yang sesuai.
SigV4 simetris mengharuskan Anda untuk mendapatkan kunci yang dicakup ke satu AWS layanan, dalam satu AWS wilayah, pada hari tertentu. Ini membuat kunci dan tanda tangan yang dihitung berbeda untuk setiap wilayah, yang berarti Anda harus mengetahui wilayah tujuan tanda tangan tersebut.
Asymmetric Signature Version 4 (SigV4a) adalah ekstensi yang mendukung penandatanganan dengan algoritma baru, dan menghasilkan tanda tangan individu yang dapat diverifikasi di lebih dari satu wilayah. AWS Dengan Sigv4a, Anda dapat menandatangani permintaan untuk beberapa wilayah, dengan perutean yang mulus dan failover antar wilayah. Saat Anda menggunakan AWS SDK atau AWS CLI untuk memanggil fungsionalitas yang memerlukan penandatanganan multi-wilayah, jenis tanda tangan secara otomatis diubah untuk menggunakan Sigv4a. Lihat perinciannya di Bagaimana AWS SigV4a berfungsi.
Bagaimana AWS SigV4 berfungsi
Langkah-langkah berikut menjelaskan proses umum menghitung tanda tangan dengan SIGv4:
-
String yang akan ditandatangani tergantung pada jenis permintaan. Misalnya, saat Anda menggunakan header Otorisasi HTTP atau parameter kueri untuk otentikasi, Anda menggunakan kombinasi elemen permintaan untuk membuat string yang akan ditandatangani. Untuk permintaan HTTP POST,
POSTkebijakan dalam permintaan adalah string yang Anda tandatangani. -
K unci penandatanganan adalah serangkaian perhitungan, dengan hasil dari setiap langkah dimasukkan ke langkah berikutnya. Langkah terakhir adalah kunci penandatanganan.
-
Ketika AWS layanan menerima permintaan yang diautentikasi, ia membuat ulang tanda tangan menggunakan informasi otentikasi yang terkandung dalam permintaan. Jika tanda tangan cocok, layanan memproses permintaan. Jika tidak, ia menolak permintaan tersebut.
Untuk informasi selengkapnya, lihat Elemen dari sebuah AWS Tanda tangan permintaan API.
Bagaimana AWS SigV4a berfungsi
Sigv4a menggunakan tanda tangan asimetris berdasarkan kriptografi kunci publik-swasta. SigV4a melalui proses derivasi kredenSIAL cakupan yang serupa dengan SIGv4, kecuali SigV4a menggunakan kunci yang sama untuk menandatangani semua permintaan tanpa perlu mendapatkan kunci penandatanganan yang berbeda berdasarkan tanggal, layanan, dan wilayah. Keypair Elliptic Curve Digital Signature Alg
Sistem menggunakan kriptografi asimetris untuk memverifikasi tanda tangan multi-wilayah, sehingga AWS hanya perlu menyimpan kunci publik Anda. Kunci publik tidak rahasia dan tidak dapat digunakan untuk menandatangani permintaan. Tanda tangan asimetris diperlukan untuk permintaan API multi-wilayah, seperti dengan Amazon S3 Multi-Region Access Points.
Langkah-langkah berikut menjelaskan proses umum komputasi tanda tangan dengan Sigv4a:
-
String yang akan ditandatangani tergantung pada jenis permintaan. Misalnya, saat Anda menggunakan header Otorisasi HTTP atau parameter kueri untuk otentikasi, Anda menggunakan kombinasi elemen permintaan untuk membuat string yang akan ditandatangani. Untuk permintaan HTTP POST,
POSTkebijakan dalam permintaan adalah string yang Anda tandatangani. -
K unci penandatanganan berasal dari kunci akses AWS rahasia melalui serangkaian perhitungan, dengan hasil dari setiap langkah dimasukkan ke langkah berikutnya. Langkah terakhir menghasilkan keypair.
-
Ketika AWS layanan menerima permintaan yang ditandatangani dengan SigV4a, AWS memverifikasi tanda tangan hanya menggunakan setengah publik dari pasangan kunci. Jika tanda tangan valid, permintaan diautentikasi dan layanan memproses permintaan. Permintaan dengan tanda tangan tidak valid ditolak.
Untuk informasi selengkapnya tentang Sigv4a untuk permintaan API Multi-wilayah, lihat proyek sigv4a- sig
Kapan menandatangani permintaan
Saat Anda menulis kode khusus yang mengirimkan permintaan API ke AWS, Anda harus menyertakan kode yang menandatangani permintaan. Anda dapat menulis kode khusus karena:
-
Anda bekerja dengan bahasa pemrograman yang tidak ada SDK AWS .
-
Anda perlu kontrol penuh atas bagaimana permintaan dikirim ke AWS.
Sementara permintaan API mengautentikasi akses dengan AWS SIGv4, AWS SDK dan mengo AWS CLI tentikasi permintaan Anda dengan menggunakan kunci akses yang Anda berikan. Untuk informasi selengkapnya tentang otentikasi dengan AWS SDK dan AWS CLI, lihat. Sumber daya tambahan
Mengapa permintaan ditandatangani
Proses penandatanganan membantu mengamankan permintaan dengan cara berikut:
-
Verifikasi identitas pemohon
Permintaan yang diautentikasi memerlukan tanda tangan yang Anda buat dengan menggunakan kunci akses Anda (ID kunci akses, kunci akses rahasia). Jika Anda menggunakan kredentif keamanan sementara, perhitungan tanda tangan juga memerlukan token keamanan. Untuk informasi selengkapnya, lihat akses terprogram kredensional AWS keamanan.
-
Lindungi data saat transit
Untuk mencegah gangguan pada permintaan saat sedang transit, beberapa elemen permintaan digunakan untuk menghitung hash (intisari) permintaan, dan nilai hash yang dihasilkan disertakan sebagai bagian dari permintaan. Ketika Layanan AWS menerima permintaan, ia menggunakan informasi yang sama untuk menghitung hash dan mencocokkannya dengan nilai hash dalam permintaan Anda. Jika nilainya tidak cocok, AWS tolak permintaan.
-
Melindungi dari potensi serangan replay
Dalam kebanyakan kasus, permintaan harus mencapai AWS dalam waktu lima menit dari cap waktu dalam permintaan. Jika tidak, AWS menolak permintaan tersebut.
AWS SIGv4 dapat dinyatakan dalam header Otorisasi HTTP atau sebagai string kueri di URL. Untuk informasi selengkapnya, lihat Metode autentikasi.
Sumber daya tambahan
-
Untuk informasi selengkapnya tentang proses penandatanganan SIGv4 untuk berbagai layanan, lihatMinta contoh tanda tangan.
-
Untuk mengonfigurasi kredenSIAL untuk akses terprogram untuk AWS CLI, lihat Oten tikasi dan kredenSIAL akses di Panduan Pengguna Antar AWS muka Baris Perintah.
-
SDK AWS menyertakan kode sumber GitHub untuk menandatangani permintaan AWS API. Untuk contoh kode, lihatContoh proyek di AWS repositori sampel.
-
AWS SDK for .NET – AWS4Signer.cs
-
AWS SDK for C++ – AWSAuthV4Signer.cpp
-
AWS SDK untuk Go - sigv4.go
-
AWS SDK for Java – BaseAws4Signer.java
-
AWS SDK for JavaScript — tanda tang an-v4
-
AWS SDK untuk PHP – SignatureV4.php
-
AWS SDK for Python (Boto) - signers.py
-
AWS SDK untuk Ruby — signatur.rb
-
-
Jika Anda mengalami kesalahan saat menandatangani permintaan, lihatMemecahkan masalah penandatanganan Tanda Tangan Versi 4 untuk AWS Permintaan API.