View a markdown version of this page

SEC06-BP02 Sediakan komputasi dari image yang di-hardening - AWS Well-Architected Framework

SEC06-BP02 Sediakan komputasi dari image yang di-hardening

Kurangi peluang untuk akses yang tidak diinginkan ke lingkungan runtime Anda dengan melakukan deployment-nya dari image yang di-hardening. Dapatkan dependensi runtime, seperti image kontainer dan pustaka aplikasi, hanya dari registri tepercaya dan verifikasikan tanda tangannya. Buat registri privat Anda sendiri untuk menyimpan image dan pustaka tepercaya yang akan digunakan dalam proses build dan deploy Anda.

Hasil yang diinginkan: Sumber daya komputasi Anda disediakan dari image acuan yang di-hardening. Anda mengambil dependensi eksternal, seperti image kontainer dan pustaka aplikasi, hanya dari registri tepercaya dan memverifikasi tanda tangannya. Image dan pustaka ini disimpan dalam registri privat untuk dirujuk oleh proses build dan deploy Anda. Anda memindai dan memperbarui image dan dependensi secara rutin untuk membantu melindungi terhadap kerentanan yang baru ditemukan.

Antipola umum:

  • Mendapatkan image dan pustaka dari registri tepercaya, tetapi tidak memverifikasi tanda tangannya atau melakukan pemindaian kerentanan sebelum menggunakannya.

  • Melakukan hardening image, tetapi tidak mengujinya secara rutin untuk menemukan kerentanan baru atau memperbaruinya ke versi terkini.

  • Menginstal atau tidak menghapus paket perangkat lunak yang tidak diperlukan selama siklus hidup image yang diharapkan.

  • Hanya mengandalkan patching untuk menjaga sumber daya komputasi produksi tetap terbaru. Patching saja masih dapat menyebabkan sumber daya komputasi menyimpang dari standar yang di-hardening dari waktu ke waktu. Patching juga dapat gagal menghapus malware yang mungkin telah diinstal oleh pelaku ancaman selama peristiwa keamanan.

Manfaat menjalankan praktik terbaik ini: Image hardening membantu mengurangi jumlah jalur yang tersedia di lingkungan runtime Anda yang memungkinkan akses yang tidak diinginkan oleh pengguna atau layanan yang tidak sah. Hal ini juga dapat mengurangi cakupan dampak jika ada akses yang tidak diinginkan terjadi.

Tingkat risiko yang terjadi jika praktik terbaik ini tidak dijalankan: Tinggi

Panduan implementasi

Untuk melakukan hardening terhadap sistem Anda, mulailah dari versi sistem operasi, image kontainer, dan pustaka aplikasi terbaru. Terapkan patch untuk masalah yang diketahui. Minimalkan sistem dengan menghapus aplikasi, layanan, driver perangkat, pengguna default, dan kredensial lainnya yang tidak diperlukan. Lakukan tindakan lainnya yang diperlukan, seperti menonaktifkan port untuk membuat lingkungan yang hanya memiliki sumber daya dan kemampuan yang dibutuhkan oleh beban kerja Anda. Dari acuan ini, Anda kemudian dapat menginstal perangkat lunak, agen, atau proses lain yang Anda butuhkan untuk berbagai tujuan, seperti pemantauan beban kerja atau manajemen kerentanan.

Anda dapat mengurangi beban system hardening menggunakan panduan yang disediakan sumber tepercaya, seperti Center for Internet Security (CIS), dan Security Technical Implementation Guides (STIGs) dari Defense Information Systems Agency (DISA) Sebaiknya Anda memulai dengan Amazon Machine Image (AMI) yang dipublikasikan oleh AWS atau partner APN, lalu menggunakan AWS EC2 Image Builder untuk mengotomatiskan konfigurasi sesuai dengan kombinasi kontrol CIS dan STIG yang sesuai.

Meskipun tersedia image yang di-hardening dan resep EC2 Image Builder yang menerapkan rekomendasi CIS atau STIG DISA, Anda mungkin mendapati bahwa konfigurasinya menyebabkan perangkat lunak Anda tidak dapat berjalan lancar. Dalam situasi ini, Anda dapat memulai dari image dasar yang tidak di-hardening, menginstal perangkat lunak Anda, lalu menerapkan kontrol CIS secara bertahap untuk menguji dampaknya. Untuk kontrol CIS apa pun yang menyebabkan perangkat lunak Anda tidak berjalan, uji apakah Anda dapat mengimplementasikan rekomendasi hardening yang terperinci di DISA. Pantau berbagai kontrol CIS dan konfigurasi STIG DISA yang dapat Anda terapkan dengan sukses. Gunakan hal tersebut untuk menentukan metode image hardening Anda di EC2 Image Builder sebagaimana diperlukan.

Untuk beban kerja terkontainerisasi, image yang di-hardening dari Docker tersedia di repositori publik Amazon Elastic Container Registry (ECR). Anda dapat menggunakan EC2 Image Builder untuk melakukan hardening terhadap image kontainer bersama AMI.

Mirip dengan sistem operasi dan image kontainer, Anda dapat memperoleh paket kode (atau pustaka) dari repositori publik, melalui alat seperti pip, npm, Maven, dan NuGet. Sebaiknya Anda mengelola paket kode dengan mengintegrasikan repositori privat, seperti dalam AWS CodeArtifact, dengan repositori publik tepercaya. Integrasi ini dapat menangani pengambilan, penyimpanan, dan pembaruan paket untuk Anda. Proses build aplikasi Anda kemudian dapat memperoleh dan menguji versi terbaru dari paket ini bersama aplikasi Anda, menggunakan teknik seperti Analisis Komposisi Perangkat Lunak (SCA), Pengujian Keamanan Aplikasi Statis (SAST), dan Pengujian Keamanan Aplikasi Dinamis (DAST).

Untuk beban kerja nirserver yang menggunakan AWS Lambda, sederhanakan pengelolaan dependensi paket menggunakan lapisan Lambda. Gunakan lapisan Lambda untuk mengonfigurasi sekumpulan dependensi standar yang ada di berbagai fungsi ke dalam arsip mandiri. Anda dapat membuat dan memelihara lapisan melalui proses build-nya sendiri, sehingga memberikan cara terpusat untuk terus memperbarui fungsi Anda.

Langkah implementasi

  • Lakukan hardening terhadap sistem operasi. Gunakan image dasar dari sumber tepercaya sebagai landasan untuk membuat AMI yang di-hardening. Gunakan EC2 Image Builder untuk membantu menyesuaikan perangkat lunak yang diinstal pada image Anda.

  • Lakukan hardening terhadap sumber daya terkontainerisasi. Konfigurasikan sumber daya terkontainerisasi untuk memenuhi praktik terbaik keamanan. Saat menggunakan kontainer, implementasikan Pemindaian Image ECR di pipeline build Anda dan secara rutin terhadap repositori image Anda untuk mencari CVE di kontainer Anda. 

  • Saat menggunakan implementasi nirserver dengan AWS Lambda, gunakan lapisan Lambda untuk memisahkan kode fungsi aplikasi dan pustaka dependen bersama. Konfigurasikan penandatanganan kode untuk Lambda guna memastikan bahwa hanya kode tepercaya yang berjalan di fungsi Lambda Anda.

Sumber daya

Praktik terbaik terkait:

Video terkait:

Contoh terkait: