Video: ep 2: How to secure your AWS Gateway API with API key (tutorial with screencast and test) 2024
Berikut adalah soalan yang jelas apabila berurusan dengan proksi pihak ketiga: Jika alat ini bertindak bagi pihak anda, bagaimana Perkhidmatan Web Amazon (AWS) tahu bahawa orang yang mewakili mereka bertindak sebenarnya anda? Dengan kata lain, bagaimanakah AWS dapat mengesahkan identiti anda untuk memastikan bahawa arahan yang diterima oleh anda adalah dari anda?
Malah, soalan yang sama adalah sah walaupun anda berinteraksi langsung dengan API AWS. Bagaimanakah AWS dapat mengesahkan identiti anda untuk memastikan ia melaksanakan perintah hanya untuk anda?
Suatu cara, tentu saja, adalah untuk anda memasukkan nama pengguna dan kata laluan akaun anda dalam panggilan API. Walaupun beberapa pembekal awan mengambil pendekatan ini, Amazon tidak.
Daripada bergantung pada nama pengguna dan kata laluan, ia bergantung kepada dua pengecam lain untuk mengesahkan panggilan perkhidmatan APInya: kunci akses dan kunci akses rahsia. Ia menggunakan kunci ini dalam panggilan perkhidmatan untuk melaksanakan keselamatan dengan cara yang lebih selamat daripada hanya menggunakan nama pengguna dan kata laluan anda.
Jadi bagaimana ia berfungsi? Apabila anda mendaftar untuk akaun dengan AWS, anda mempunyai peluang untuk membuat kunci akses dan mempunyai kunci akses rahsia yang dihantar kepada anda. Setiap satu adalah rentetan rentetan aksara yang panjang, dan kunci akses rahsia adalah lebih lama dari kedua-dua. Apabila anda memuat turun kunci akses rahsia, anda harus menyimpannya di tempat yang sangat selamat kerana ia adalah kunci (maaf - buruk pun) untuk melaksanakan panggilan perkhidmatan yang selamat.
Selepas anda melakukan ini, anda dan Amazon mempunyai salinan kekunci akses dan kunci akses rahsia. Mengekalkan salinan kunci akses rahsia adalah penting kerana ia digunakan untuk menyulitkan maklumat yang dihantar bolak-balik antara anda dan AWS, dan jika anda tidak mempunyai Kunci Akses Rahsia, anda tidak boleh melaksanakan sebarang panggilan perkhidmatan pada AWS.
Cara kedua-dua kekunci digunakan secara konseptual mudah, walaupun agak mencabar secara terperinci.
Pada asasnya, untuk setiap panggilan perkhidmatan yang anda mahu lakukan, anda (atau alat yang berfungsi untuk pihak anda) lakukan perkara berikut:
-
Buat muatan panggilan perkhidmatan.
Ini adalah data yang anda perlu hantar ke AWS. Ia mungkin merupakan objek yang anda mahu simpan dalam S3 atau pengenal imej imej yang anda mahu lancarkan. (Anda juga akan melampirkan maklumat lain ke muatan, tetapi kerana mereka berbeza-beza mengikut spesifikasi panggilan perkhidmatan, mereka tidak disenaraikan di sini. Salah satu data ialah masa semasa.)
-
Sulitkan muatan menggunakan kunci akses rahsia.
Melakukannya memastikan tiada siapa yang dapat memeriksa muatan dan mengetahui apa yang ada di dalamnya.
-
Secara digital menandatangani muatan yang disulitkan dengan menambah kunci akses rahsia kepada muatan yang disulitkan dan melaksanakan proses tandatangan digital menggunakan kunci akses rahsia.
Kekunci akses rahsia lebih lama dan lebih rawak daripada kata laluan pengguna biasa; kunci akses rahsia yang panjang menjadikan enkripsi dilakukan dengan lebih selamat daripada jika ia dilakukan dengan kata laluan pengguna biasa.
-
Hantar jumlah muatan yang disulitkan, bersama kunci akses anda, ke AWS melalui panggilan perkhidmatan.
Amazon menggunakan kekunci akses untuk mencari kunci akses rahsia anda, yang digunakan untuk mendekripsi muatan. Jika muatan yang disahsulit mewakili teks yang boleh dibaca yang boleh dilaksanakan, AWS melaksanakan panggilan perkhidmatan. Jika tidak, ia menyimpulkan bahawa sesuatu adalah salah dengan panggilan perkhidmatan (mungkin ia dipanggil oleh pelakon jahat) dan tidak melaksanakan panggilan perkhidmatan.
Sebagai tambahan kepada penyulitan yang diterangkan, AWS mempunyai dua kaedah lain yang digunakan untuk memastikan kesahihan panggilan perkhidmatan:
-
Yang pertama adalah berdasarkan maklumat tarikh yang disertakan dengan muatan panggilan perkhidmatan, yang digunakan untuk menentukan sama ada masa yang berkaitan dengan membuat panggilan perkhidmatan adalah sesuai; jika tarikh dalam panggilan perkhidmatan jauh berbeza daripada apa yang sepatutnya (lebih awal atau lebih awal dari masa sekarang, dengan kata lain), AWS menyimpulkan bahawa ia bukan panggilan perkhidmatan yang sah dan membuangnya.
-
Langkah keselamatan tambahan kedua melibatkan checksum yang anda kira untuk muatan. (A checksum adalah nombor yang mewakili kandungan mesej.) AWS mengira cek untuk muatan; jika pemeriksaannya tidak bersetuju dengan anda, ia tidak membenarkan panggilan perkhidmatan dan tidak melaksanakannya.
Pendekatan checksum ini memastikan bahawa tiada siapa yang merosakkan kandungan mesej dan menghalang seorang pelakon jahat dari memintas panggilan perkhidmatan yang sah dan mengubahnya untuk melakukan tindakan yang tidak dapat diterima. Sekiranya seseorang mengecewakan mesej tersebut, apabila AWS mengira cek, pengecas itu tidak lagi sepadan dengan yang termasuk dalam mesej, dan AWS enggan melaksanakan panggilan perkhidmatan.
Jika, seperti kebanyakan pengguna AWS, anda menggunakan kaedah proksi untuk berinteraksi dengan AWS - konsol pengurusan AWS, pustaka bahasa, atau alat pihak ketiga - anda perlu menyediakan kunci capaian dan kunci akses rahsia kepada proksi. Apabila proksi melaksanakan perkhidmatan AWS panggilan bagi pihak anda, ia termasuk kunci akses dalam panggilan dan menggunakan kunci akses rahsia untuk melakukan penyulitan muatan.
Oleh kerana peranan kritikal yang memenuhi kunci-kunci ini dalam AWS, anda harus berkongsi hanya dengan entiti yang anda percayai. Sekiranya anda ingin mencuba alat pihak ketiga yang baru dan anda tidak tahu banyak mengenai syarikat itu, buat akaun ujian AWS untuk perbicaraan dan bukannya menggunakan kelayakan akaun AWS pengeluaran anda.
Dengan cara itu, jika anda memutuskan untuk tidak meneruskan dengan alat ini, anda boleh menggugurkannya, menamatkan akaun AWS ujian, dan bergerak maju, tanpa peduli tentang kelemahan keselamatan yang potensial di dalam akaun pengeluaran utama anda. Sudah tentu, anda sentiasa boleh mencipta kunci akses baru dan kunci akses rahsia, tetapi menggunakan kunci pengeluaran anda untuk ujian dan kemudian mengubah kunci mencipta banyak kerja, kerana anda perlu mengemas kini setiap tempat yang merujuk kepada kunci yang ada.
Jika anda seperti banyak pengguna AWS lain, anda akan menggunakan beberapa alat dan perpustakaan, dan kembali kepada mereka untuk mengemas kini kunci anda adalah rasa sakit. Anda lebih baik menggunakan akaun bukan pengeluaran untuk menguji alat baru.