View a markdown version of this page

Mengamankan beban kerja dengan titik akhir publik - AWS Lambda

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Mengamankan beban kerja dengan titik akhir publik

Untuk beban kerja yang dapat diakses secara publik, AWS menyediakan sejumlah fitur dan layanan yang dapat membantu mengurangi risiko tertentu. Bagian ini mencakup otentikasi dan otorisasi pengguna aplikasi dan melindungi titik akhir API.

Autentikasi dan otorisasi

Otentikasi berkaitan dengan identitas dan otorisasi mengacu pada tindakan. Gunakan otentikasi untuk mengontrol siapa yang dapat memanggil fungsi Lambda, dan kemudian gunakan otorisasi untuk mengontrol apa yang dapat mereka lakukan. Untuk banyak aplikasi, IAM cukup untuk mengelola kedua mekanisme kontrol.

Untuk aplikasi dengan pengguna eksternal, seperti aplikasi web atau seluler, adalah umum untuk menggunakan Token Web JSON (JWT) untuk mengelola otentikasi dan otorisasi. Tidak seperti manajemen kata sandi berbasis server tradisional, JWT diteruskan dari klien pada setiap permintaan. Mereka adalah cara yang aman secara kriptografis untuk memverifikasi identitas dan klaim menggunakan data yang diteruskan dari klien. Untuk Lambda-based aplikasi, Anda dapat mengamankan setiap panggilan ke setiap titik akhir API tanpa mengandalkan server pusat untuk otentikasi.

Anda dapat menerapkan JWT dengan Amazon Cognito, layanan direktori pengguna yang dapat menangani pendaftaran, otentikasi, pemulihan akun, dan operasi manajemen akun umum lainnya. Amplify Framework menyediakan pustaka untuk menyederhanakan integrasi layanan ini ke dalam aplikasi frontend Anda. Anda juga dapat mempertimbangkan layanan mitra pihak ketiga seperti Auth0.

Mengingat peran keamanan penting dari layanan penyedia identitas, penting untuk menggunakan perkakas profesional untuk melindungi aplikasi Anda. Anda tidak disarankan untuk menulis layanan Anda sendiri untuk menangani otentikasi atau otorisasi. Kerentanan apa pun di pustaka khusus mungkin memiliki implikasi signifikan terhadap keamanan beban kerja Anda dan datanya.

Melindungi titik akhir API

Untuk aplikasi tanpa server, cara yang lebih disukai untuk melayani aplikasi backend secara publik adalah dengan menggunakan Amazon API Gateway. Ini dapat membantu Anda melindungi API dari pengguna jahat atau lonjakan lalu lintas.

API Gateway menawarkan dua tipe titik akhir untuk pengembang tanpa server: REST API dan HTTP API. Keduanya mendukung otorisasi menggunakan AWS Lambda, IAM, atau Amazon Cognito. Saat menggunakan IAM atau Amazon Cognito, permintaan masuk dievaluasi dan jika mereka kehilangan token yang diperlukan atau berisi otentikasi yang tidak valid, permintaan ditolak. Anda tidak dikenakan biaya untuk permintaan ini dan mereka tidak diperhitungkan dalam kuota pembatasan apa pun.

Rute API yang tidak diautentikasi dapat diakses oleh siapa saja di internet publik sehingga disarankan agar Anda membatasi penggunaan API yang tidak diautentikasi. Jika Anda harus menggunakan API yang tidak diautentikasi, penting untuk melindunginya dari risiko umum, seperti serangan denial-of-service (DoS). M AWS WAF enerapkan ke API ini dapat membantu melindungi aplikasi Anda dari serangan injeksi SQL dan skrip lintas situs (XSS). API Gateway juga mengimplementasikan throttling di AWS tingkat akun dan tingkat per-klien saat kunci API digunakan.

Dalam banyak kasus, fungsionalitas yang disediakan oleh API yang tidak diautentikasi dapat dicapai dengan pendekatan alternatif. Misalnya, aplikasi web mungkin menyediakan daftar toko ritel pelanggan dari tabel DynamoDB kepada pengguna yang tidak masuk. Permintaan ini mungkin berasal dari aplikasi web frontend atau dari sumber lain yang memanggil titik akhir URL. Diagram ini membandingkan tiga solusi:

Diagram menunjukkan keamanan fungsi Lambda dengan kontrol akses titik akhir publik dan batas jaringan.
  1. API yang tidak diautentikasi ini dapat dipanggil oleh siapa saja di internet. Dalam serangan penolakan layanan, dimungkinkan untuk menghabiskan batas pelambatan API, konkurensi Lambda, atau kapasitas baca yang disediakan DynamoDB pada tabel yang mendasarinya.

  2. Distri CloudFront busi di depan titik akhir API dengan konfigurasi time-to-live (TTL) yang sesuai akan menyerap sebagian besar lalu lintas dalam serangan DoS, tanpa mengubah solusi yang mendasari untuk mengambil data.

  3. Atau, untuk data statis yang jarang berubah, CloudFront distribusi dapat melayani data' dari bucket Amazon S3.