Teknologi Isolasi Lambda - Gambaran Umum Keamanan AWS Lambda

Teknologi Isolasi Lambda

Lambda menggunakan berbagai teknologi isolasi sumber terbuka dan eksklusif untuk melindungi Workers dan lingkungan eksekusi. Setiap lingkungan eksekusi berisi salinan khusus item berikut:

  • Kode versi fungsi tertentu

  • Lapisan AWS Lambda yang dipilih untuk versi fungsi Anda

  • Waktu aktif fungsi yang dipilih (misalnya, Java 11, NodeJS 12, Python 3.8, dan sebagainya) waktu aktif kustom fungsi

  • Sebuah direktori/tmp yang dapat ditulis

  • Ruang pengguna Linux minimal berdasarkan Amazon Linux 2

Lingkungan eksekusi diisolasi satu sama lain menggunakan beberapa teknologi seperti kontainer yang dibangun ke dalam kernel Linux, bersama dengan teknologi isolasi dari AWS. Teknologi ini meliputi:

  • cgroups– Digunakan untuk membatasi akses fungsi ke CPU dan memori.

  • namespaces – Setiap lingkungan eksekusi berjalan di namespace khusus. Kami melakukan ini dengan menyerahkan pengelolaan ID proses grup yang unik, ID pengguna, antarmuka jaringan, dan sumber daya lainnya ke kernel Linux.

  • seccomp-bpf – Untuk membatasi panggilan sistem (syscalls) yang dapat digunakan dari dalam lingkungan eksekusi.

  • iptables dan tabel perutean – Untuk mencegah komunikasi jaringan masuk dan untuk mengisolasi koneksi jaringan antarMVM.

  • chroot – Memberikan akses terbatas ke sistem file yang mendasarinya.

  • Konfigurasi Firecracker – Digunakan untuk menilai perangkat blok batas dan throughput perangkat jaringan.

  • Fitur keamanan Firecracker – Untuk informasi lebih lanjut tentang desain keamanan terbaru Firecracker, lihat dokumen desain terbaru Firecracker .

Bersama dengan teknologi isolasi dari AWS, mekanisme ini memberikan isolasi yang kuat antara lingkungan eksekusi.

Penyimpanan dan status

Lingkungan eksekusi tidak pernah digunakan kembali di berbagai versi fungsi atau pelanggan, tetapi satu lingkungan dapat digunakan kembali pada pemanggilan versi fungsi yang sama. Artinya, data dan status dapat bertahan di antara pemanggilan. Data dan/atau status dapat bertahan selama berjam-jam sebelum dihancurkan sebagai bagian dari pengelolaan siklus hidup lingkungan eksekusi normal. Demi performa, fungsi dapat memanfaatkan perilaku ini untuk meningkatkan efisiensi dengan mempertahankan dan menggunakan kembali cache lokal atau koneksi jangka panjang di antara pemanggilan. Di dalam lingkungan eksekusi, beberapa pemanggilan ini ditangani oleh satu proses, sehingga setiap status dalam proses (seperti status statis di Jawa) dapat tersedia untuk digunakan kembali untuk pemanggilan berikutnya, jika pemanggilan terjadi pada lingkungan eksekusi yang digunakan kembali.

Setiap lingkungan eksekusi Lambda juga mencakup filesystem yang dapat ditulis, yang tersedia di /tmp. Penyimpanan ini tidak dapat diakses atau dibagikan di antara lingkungan eksekusi. Seperti status proses, file yang ditulis ke /tmp tetap ada selama masa pakai lingkungan eksekusi. Hal ini memungkinkan operasi transfer yang mahal, seperti mengunduh model machine learning (ML), untuk diamortisasi di beberapa pemanggilan. Fungsi yang tidak ingin menyimpan data di antara pemanggilan sebaiknya tidak menulis ke /tmp, atau menghapus filenya dari /tmp di antara pemanggilan. /tmp Direktori didukung oleh Penyimpanan instans Amazon EC2 dan dienkripsi secara at-rest.

Pelanggan yang ingin menyimpan data ke sistem file di luar lingkungan eksekusi sebaiknya menggunakan integrasi Lambda dengan Amazon Elastic File System (Amazon EFS). Untuk informasi lebih lanjut, lihat Menggunakan Amazon EFS dengan AWS Lambda.

Jika pelanggan tidak ingin menyimpan data atau status seluruh pemanggilan, Lambda tidak menyarankan untuk menggunakan konteks eksekusi atau lingkungan eksekusi untuk menyimpan data atau status. Jika pelanggan ingin aktif mencegah data atau kebocoran status di seluruh pemanggilan, Lambda merekomendasikan untuk membuat fungsi yang berbeda untuk setiap status. Lambda tidak menyarankan untuk menggunakan atau menyimpan status sensitif keamanan ke dalam lingkungan eksekusi, karena dapat bermutasi antara pemanggilan. Sebagai gantinya, sebaiknya hitung ulang status pada setiap pemanggilan.