Video: ep 2: How to secure your AWS Gateway API with API key (tutorial with screencast and test) 2024
Berikut adalah pertanyaan yang jelas saat berhadapan dengan proxy pihak ketiga: Jika alat ini bertindak atas nama Anda, bagaimana Amazon Web Services (AWS) mengetahui bahwa orang yang atas nama mereka bertindak sebenarnya kamu kamu? Dengan kata lain, bagaimana AWS mengautentikasi identitas Anda untuk memastikan bahwa perintah yang diterimanya berasal dari Anda?
Sebenarnya, pertanyaan yang sama berlaku bahkan jika Anda berinteraksi dengan API AWS secara langsung. Bagaimana AWS memvalidasi identitas Anda untuk memastikan bahwa ia menjalankan perintah hanya untuk Anda?
Salah satu cara, tentu saja, adalah agar Anda memasukkan nama pengguna dan kata sandi akun Anda ke dalam panggilan API. Meskipun beberapa penyedia awan mengambil pendekatan ini, Amazon tidak melakukannya. Dari pada mengandalkan username dan password, ini bergantung pada dua pengenal lainnya untuk mengotentikasi panggilan layanan API-nya: tombol akses dan kunci akses rahasia. Ini menggunakan tombol ini dalam panggilan layanan untuk menerapkan keamanan dengan cara yang jauh lebih aman daripada hanya menggunakan nama pengguna dan kata sandi Anda.
Cara kedua kunci itu digunakan secara konseptual sederhana, meski agak menantang secara rinci.
Pada dasarnya, untuk setiap panggilan layanan yang ingin Anda lakukan, Anda (atau alat yang beroperasi atas nama Anda) lakukan hal berikut:
Buat muatan layanan.
-
Ini adalah data yang perlu Anda kirim ke AWS. Ini mungkin objek yang ingin Anda simpan di S3 atau pengenal gambar dari gambar yang ingin Anda luncurkan. (Anda juga akan melampirkan informasi lain ke payload, tapi karena semuanya berbeda sesuai dengan spesifikasi layanan panggilan, mereka tidak tercantum di sini. Salah satu data adalah waktu saat ini.)
Mengenkripsi muatan menggunakan kunci akses rahasia.
-
Melakukannya memastikan tidak ada yang bisa memeriksa muatannya dan menemukan apa yang ada di dalamnya.
Secara digital menandatangani muatan terenkripsi dengan menambahkan kunci akses rahasia ke muatan terenkripsi dan melakukan proses tanda tangan digital dengan menggunakan tombol akses rahasia.
-
Tombol akses rahasia lebih panjang dan lebih acak daripada kata sandi pengguna biasa; kunci akses rahasia yang panjang membuat enkripsi dilakukan dengan lebih aman daripada jika dilakukan dengan kata kunci khas pengguna.
Kirimkan total muatan terenkripsi, beserta tombol akses Anda, ke AWS melalui layanan panggilan.
-
Amazon menggunakan tombol akses untuk mencari kunci akses rahasia Anda, yang digunakannya untuk mendekripsi muatannya. Jika muatan yang didekripsi mewakili teks yang dapat dibaca yang dapat dijalankan, AWS menjalankan panggilan layanan. Jika tidak, ini menyimpulkan bahwa ada sesuatu yang salah dengan panggilan layanan (mungkin itu disebut oleh aktor jahat) dan tidak melakukan panggilan layanan.
Selain enkripsi yang baru saja dijelaskan, AWS memiliki dua metode lain yang digunakan untuk memastikan legitimasi panggilan layanan:
Yang pertama didasarkan pada informasi tanggal yang disertakan dengan muatan layanan, yang digunakannya untuk menentukan apakah waktu yang terkait dengan pembuatan layanan panggilan sesuai; Jika tanggal dalam layanan panggilan jauh berbeda dari apa yang seharusnya (jauh lebih awal atau lebih lambat dari waktu sekarang, dengan kata lain), AWS menyimpulkan bahwa ini bukan panggilan layanan yang sah dan membuangnya.
-
Langkah keamanan tambahan kedua melibatkan checksum yang Anda hitung untuk muatannya. (A
-
checksum adalah nomor yang mewakili isi pesan.) AWS menghitung checksum untuk muatan; Jika checksumnya tidak sesuai dengan tagihan Anda, itu akan membatalkan panggilan layanan dan tidak menjalankannya. Pendekatan checksum ini memastikan bahwa tidak ada yang mengutak-atik isi pesan dan mencegah pelaku jahat untuk tidak mencegat layanan yang sah dan mengubahnya untuk melakukan tindakan yang tidak dapat diterima. Jika seseorang mengganggu pesan, saat AWS menghitung checksum, checksum itu tidak sesuai dengan yang ada di pesan, dan AWS menolak untuk melakukan panggilan layanan.
Jika, seperti kebanyakan pengguna AWS, Anda menggunakan metode proxy untuk berinteraksi dengan AWS - konsol manajemen AWS, perpustakaan bahasa, atau alat pihak ketiga - Anda perlu memberikan kunci akses dan kunci akses rahasia ke proxy. Ketika proxy menjalankan panggilan layanan AWS atas nama Anda, itu termasuk tombol akses dalam panggilan dan menggunakan kunci akses rahasia untuk melakukan enkripsi muatan.
Karena peran penting yang dimiliki kunci-kunci ini di AWS, Anda harus membaginya
hanya dengan entitas yang Anda percaya. Jika Anda ingin mencoba alat pihak ketiga yang baru dan Anda tidak tahu banyak tentang perusahaan, siapkan akun uji AWS untuk uji coba alih-alih menggunakan kredensial akun AWS produksi Anda. Dengan cara itu, jika Anda memutuskan untuk tidak maju dengan alat ini, Anda dapat menjatuhkannya, menghentikan tes AWS account, dan bergerak maju, tidak peduli tentang potensi kerentanan keamanan di akun produksi utama Anda. Tentu saja, Anda selalu dapat membuat tombol akses baru dan tombol akses rahasia, namun menggunakan kunci produksi untuk tes dan kemudian mengubah tombol menciptakan banyak pekerjaan, karena Anda perlu memperbarui setiap tempat yang merujuk ke kunci yang ada.
Jika Anda seperti banyak pengguna AWS lainnya, Anda akan menggunakan sejumlah alat dan perpustakaan, dan kembali ke mereka untuk memperbarui kunci Anda adalah rasa sakit. Anda lebih baik menggunakan akun nonproduksi untuk menguji alat baru.