Keamanan rantai pasok perangkat lunak mengacu pada upaya memastikan keamanan perangkat lunak dan komponen terkaitnya sepanjang alur pengembangan, distribusi, dan penggunaan, serta mencegah penyusupan, penyebaran kode berbahaya, kerentanan, dan risiko keamanan lainnya. Topik ini menyediakan rekomendasi keamanan dari perspektif rantai pasok.
Informasi latar belakang
Rantai pasok perangkat lunak mencakup tahap build, deploy, dan runtime. Penyerang dapat melancarkan berbagai jenis serangan terhadap beban kerja Anda di tahap-tahap tersebut.
Tahap | Jenis serangan |
Build |
|
Deploy |
|
Runtime |
|
Keamanan artefak merupakan pertahanan pertama pada tahap build dan pengujian. Penyerang dapat mengeksploitasi gambar kontainer berbahaya untuk keluar dari kontainer dan mengambil alih kendali host. Akibatnya, penyerang dapat bergerak melalui jaringan untuk mengakses data sensitif atau aset bernilai lainnya menggunakan Akun Alibaba Cloud Anda. Mekanisme kontrol admission yang disediakan oleh Kubernetes open source dapat membantu Anda memverifikasi keamanan Pod yang dideploy. Setelah aplikasi diterapkan, Anda harus memantau waktu proses aplikasi secara real time agar dapat menangani event keamanan sesegera mungkin.
Saran keamanan kluster
Kami merekomendasikan agar Anda mengikuti saran berikut untuk mengamankan siklus hidup kluster ACK.
Create smaller container images
Hapus file biner yang tidak diperlukan dari gambar kontainer yang akan digunakan. Jika gambar kontainer diunduh dari Docker Hub, gunakan Dive untuk menganalisis gambarnya. Dive memungkinkan Anda menjelajahi isi setiap lapisan gambar. Untuk informasi selengkapnya, lihat Dive.
Anda juga dapat melihat isi setiap lapisan gambar di Konsol Container Registry setelah mendorong gambar ke Alibaba Cloud Container Registry. Hapus semua file biner yang memiliki bit
SETUIDdanSETGID, karena file-file tersebut dapat dieksploitasi untuk meningkatkan hak istimewa. Pertimbangkan pula untuk menghapus shell dan aplikasi yang dapat dieksploitasi oleh penyerang, sepertincdancurl. Jalankan perintah berikut untuk mencari file biner dengan bitSETUIDdanSETGID:find / -perm /6000 -type f -exec ls -ld {} \;Tambahkan perintah berikut ke gambar kontainer jika ingin menghapus izin dari file biner tersebut:
RUN find / -xdev -perm /6000 -type f -exec chmod a-s {} \; || trueUse multi-stage builds
Gunakan multi-stage builds untuk membuat gambar kontainer yang lebih kecil. Fitur ini dapat mengotomatiskan integrasi berkelanjutan dalam pipeline CI/CD. Multi-stage builds memungkinkan Anda menyertakan beberapa pernyataan FROM dalam
Dockerfile. Setiap pernyataan FROM dapat menggunakan citra dasar yang berbeda dan memulai tahap build baru. Dengan demikian, Anda dapat membangun gambar kontainer tepercaya dengan cepat sekaligus menjaga ukurannya tetap kecil. Untuk informasi selengkapnya, lihat Gunakan Dockerfile untuk membangun gambar aplikasi Java.Create RAM policies for Container Registry repositories
Banyak tim dalam suatu perusahaan mungkin menggunakan Akun Alibaba Cloud yang sama untuk mengelola sumber daya cloud. Jika tim-tim tersebut tidak ingin berbagi sumber daya, buat kebijakan Resource Access Management (RAM) untuk membatasi namespace atau repositori yang dapat diakses masing-masing tim. Misalnya,
cr:ListInstance*mencakup semua aksi yang dimulai dengancr:ListInstance. Anda dapat mengaturacs:cr:*:*:repository/$instanceid/$namespace/*menjadiacs:cr:cn-hangzhou:1234567:repository/cri-123456/ns/*untuk memberikan instans cri-123456 di wilayah cn-hangzhou izin mengkueri repositori dalam namespace tersebut. Instans ini milik Akun Alibaba Cloud 1234567.{ "Statement": [ { "Effect": "Allow", "Action": [ "cr:ListRepository", "cr:GetImageLayer", "cr:GetRepoTag" ], "Resource": "*" }, { "Action": [ "cr:List*" ], "Effect": "Allow", "Resource": [ "acs:cr:cn-hangzhou:1234567:repository/cri-123456/ns/*", ] } ], "Version": "1" }Untuk informasi selengkapnya tentang cara mengonfigurasi kebijakan RAM di Container Registry, lihat Aturan autentikasi RAM dan Berikan izin kepada peran RAM yang digunakan untuk mengakses bucket OSS kustom.
Use Container Registry Enterprise Edition
Container Registry Edisi Perusahaan memungkinkan Anda mengenkripsi artefak cloud-native yang disimpan di Container Registry. Layanan ini juga mendukung pemindaian gambar dan laporan kerentanan multidimensi untuk mengamankan penyimpanan dan kontennya. Anda dapat menerapkan kontrol akses pada gambar kontainer dan Helm chart serta melakukan audit aksi detail halus guna memastikan keamanan artefak. Kami merekomendasikan langkah-langkah berikut untuk meningkatkan keamanan: gunakan Container Registry Edisi Perusahaan di lingkungan produksi, atur repositori sebagai pribadi, gunakan titik akhir internal untuk mengakses instans Container Registry melalui virtual private cloud (VPC), nonaktifkan akses Internet, dan konfigurasikan daftar kontrol akses jaringan (ACL). Untuk informasi selengkapnya, lihat Buat instans Edisi Perusahaan.
Use the cloud-native application delivery chain provided by Container Registry
Container Registry menyediakan rantai distribusi aplikasi cloud-native yang memungkinkan Anda menyederhanakan tugas seperti pembuatan gambar, pemindaian gambar, sinkronisasi global gambar, dan distribusi gambar. Seluruh rantai distribusi bersifat observable, dapat dilacak, dan diamankan. Untuk informasi selengkapnya, lihat Buat rantai distribusi.
Setelah Anda mendorong gambar kontainer ke Container Registry, layanan ini secara otomatis memindainya. Anda juga dapat mengonfigurasi kebijakan keamanan agar Container Registry mengidentifikasi risiko keamanan dalam gambar kontainer dan memblokir gambar dengan tingkat keparahan tinggi. Hanya gambar yang memenuhi kebijakan keamanan yang didistribusikan dan diterapkan. Rantai distribusi ini menjamin pengiriman aman dan penerapan efisien aplikasi berbasis kontainer. Anda juga dapat mengintegrasikan operasi API pemindaian gambar ke dalam sistem Anda untuk menjadwalkan pemindaian gambar.
Periodically scan container images for vulnerabilities
Seperti halnya citra OS yang digunakan oleh mesin virtual, gambar kontainer mungkin berisi file biner atau aplikasi yang rentan, atau kerentanan dapat muncul setelah file biner atau aplikasi tersebut diperbarui. Oleh karena itu, kami merekomendasikan agar Anda memindai gambar kontainer secara berkala untuk mendeteksi kerentanan. Container Registry dapat secara otomatis memindai gambar kontainer yang baru diunggah dan gambar yang sudah ada setiap 24 jam. Jika gambar kontainer berisi kerentanan dengan tingkat keparahan
HIGHatauCRITICAL, hapus atau bangun ulang gambar tersebut. Jika kerentanan terdeteksi dalam gambar kontainer yang telah diterapkan, segera ganti kontainer terkait.Anda juga dapat memanggil
Kubernetes validating webhookuntuk mengidentifikasi kerentanan kritis dalam gambar kontainer. Panggilvalidating webhooksebelum memanggilKubernetes APIguna menolak permintaan yang tidak mematuhi kebijakan admission yang ditentukan dalamwebhook. Anda dapat memanggil operasi CreateRepoTagScanTask dari API Container Registry untuk memeriksa apakah gambar kontainer yang sedang ditarik oleh kluster berisi kerentanan kritis. Jika demikian, Container Registry melarang kluster menerapkan Pod dari gambar tersebut dan menghasilkan event yang berisi informasi kerentanan yang terdeteksi. Untuk informasi selengkapnya, lihat CreateRepoTagScanTask.Add the USER instruction to your Dockerfiles and run containers as a non-root user
Untuk memastikan keamanan Pod, hindari menjalankan kontainer sebagai pengguna root. Tambahkan instruksi USER ke PodSpec atau gunakan instruksi USER dalam Dockerfile sebagai praktik terbaik. Setelah instruksi USER ditambahkan, perintah RUN, ENTRYPOINT, dan CMD akan dieksekusi menggunakan akun pengguna yang ditentukan.
Download dependencies from trusted sources
Hindari menggunakan dependensi yang diunduh dari sumber tidak tepercaya pada tahap pengembangan perangkat lunak. Untuk informasi selengkapnya tentang gambar kontainer, artefak, atau dependensi yang dipercaya oleh Alibaba Cloud, lihat Alibaba Cloud images.
Anda dapat menggunakan Alibaba Cloud DevOps untuk membangun repositori sendiri. Alibaba Cloud DevOps Artifact Repository Packages adalah layanan repositori pribadi kelas perusahaan yang disediakan oleh Alibaba Cloud. Layanan ini memungkinkan perusahaan membangun repositori pribadi untuk mengelola paket dan repositori Maven, Gradle, dan npm, serta mengelola artefak Maven dan npm, membangun repositori jarak jauh, dan memigrasikan repositori hanya dengan beberapa klik. Alibaba Cloud DevOps Artifact Repository Packages mendukung isolasi penyewa, kontrol izin, dan penyimpanan berkelanjutan tinggi untuk mengamankan artefak Anda.
Use image signing and configure signature verification policies
Saat menerapkan aplikasi di kluster, verifikasi signature gambar kontainer untuk memastikan hanya gambar yang ditandatangani oleh otoritas tepercaya yang digunakan. Hal ini membantu mencegah anomali dan eksekusi kode berbahaya.
Container Registry Edisi Perusahaan mendukung penandatanganan gambar, yang mencegah serangan man-in-the-middle (MITM) serta pembaruan atau penerapan gambar yang tidak sah, sehingga menjamin konsistensi dan keamanan gambar dari distribusi hingga penerapan. Container Registry dapat secara otomatis menandatangani gambar dalam namespace tertentu sesuai aturan penandatanganan yang cocok, memastikan keandalan gambar kontainer Anda. Untuk informasi selengkapnya, lihat Tandatangani gambar kontainer.
Anda dapat menginstal komponen Kritis-validation-hook di kluster ACK untuk secara otomatis memverifikasi signature gambar kontainer yang ditandatangani oleh Key Management Service (KMS). Komponen ini dikembangkan berdasarkan Kritis open source dan dapat diintegrasikan secara mendalam dengan Container Registry. Untuk informasi selengkapnya, lihat Gunakan kritis-validation-hook untuk memverifikasi signature gambar kontainer secara otomatis, Kritis, dan Apa itu KMS?.
Setelah mengaktifkan penandatanganan gambar, Anda dapat mengonfigurasi kebijakan verifikasi signature. Hanya gambar tepercaya yang diverifikasi oleh kebijakan tersebut yang dapat diterapkan di kluster ACK. Anda juga dapat mengonfigurasi daftar putih verifikasi signature dan menambahkan gambar kontainer sidecar yang disuntikkan oleh komponen pihak ketiga ke daftar putih tersebut, sehingga sistem tidak memverifikasi signature gambar kontainer sidecar tersebut dan Pod dapat diterapkan sebagaimana mestinya. Untuk informasi selengkapnya, lihat Pengantar komponen kritis-validation-hook.
Use Alibaba Cloud Security Center
Gunakan Security Center untuk mendeteksi dan memblokir ancaman dalam waktu proses aplikasi cloud-native, sehingga mengamankan waktu proses setiap Pod. Security Center secara otomatis mengumpulkan informasi tentang ancaman dalam aplikasi cloud-native, menganalisis ancaman, mengidentifikasi sumbernya, menghasilkan respons yang sesuai, serta menanganinya. Layanan ini juga menghubungkan berbagai jenis log, menganalisis konteks, dan mendeteksi risiko secara real time—seperti eksekusi kode atau perintah berbahaya, injeksi SQL, dan pelanggaran data—untuk mencegah penyusupan dan mengidentifikasi kerentanan dalam sistem bisnis Anda. Berdasarkan log Kubernetes dan log operasi, Security Center dapat mengaudit aksi dan mengidentifikasi risiko secara real time, membantu mengurangi risiko escape kontainer, kebocoran AccessKey, dan akses tidak sah di ACK serta platform orkestrasi lainnya. Untuk informasi selengkapnya, lihat Apa itu Security Center.
Referensi
Container Registry Edisi Perusahaan memungkinkan Anda mengenkripsi artefak cloud-native yang disimpan di Container Registry. Container Registry Edisi Perusahaan juga mendukung pemindaian gambar dan laporan kerentanan multidimensi untuk membantu Anda mengamankan penyimpanan dan konten. Untuk informasi selengkapnya, lihat Buat instans Edisi Perusahaan.
Untuk informasi selengkapnya tentang gambar kontainer, artefak, atau dependensi yang dipercaya oleh Alibaba Cloud, lihat Alibaba Cloud images.