Pertimbangan keamanan untuk Azure Container Instances

Artikel ini memperkenalkan pertimbangan keamanan untuk menggunakan Azure Container Instances untuk menjalankan aplikasi kontainer. Topik meliputi:

  • Rekomendasi keamanan untuk mengelola gambar dan rahasia untuk Azure Container Instances
  • Pertimbangan untuk ekosistem kontainer di seluruh siklus hidup kontainer, untuk platform kontainer apa pun

Untuk rekomendasi komprehensif yang akan membantu Anda meningkatkan postur keamanan penyebaran Anda, lihat Garis besar keamanan Azure untuk Azure Container Instances.

Rekomendasi keamanan untuk Azure Container Instances

Menggunakan registri privat

Kontainer dibangun dari gambar yang disimpan di satu atau beberapa repositori. Repositori ini dapat masuk ke registri publik, seperti Docker Hub, atau ke registri privat. Contoh registri privat adalah Docker Trusted Registry, yang dapat diinstal secara lokal atau di cloud privat virtual. Anda juga dapat menggunakan layanan registri kontainer privat berbasis cloud, termasuk Azure Container Registry.

Gambar kontainer yang tersedia untuk umum tidak menjamin keamanan. Gambar kontainer terdiri dari beberapa lapisan perangkat lunak, dan tiap lapisan perangkat lunak mungkin memiliki kerentanan. Untuk membantu mengurangi ancaman serangan, Anda harus menyimpan dan mengambil gambar dari registri privat, seperti Azure Container Registry atau Docker Trusted Registry. Selain menyediakan registri privat terkelola, Azure Container Registry mendukung autentikasi berbasis perwakilan layanan melalui ID Microsoft Entra untuk alur autentikasi dasar. Autentikasi ini mencakup akses berbasis peran untuk izin baca-saja (tarik), tulis (dorong), dan izin lainnya.

Memantau dan memindai gambar kontainer

Manfaatkan solusi untuk memindai gambar kontainer dalam registri privat dan mengidentifikasi potensi kerentanan. Penting untuk memahami kedalaman deteksi ancaman yang disediakan oleh berbagai solusi yang berbeda.

Misalnya, Azure Container Registry secara opsional berintegrasi dengan Pertahanan Microsoft untuk Cloud untuk secara otomatis memindai semua gambar Linux yang didorong ke registri. Pemindai Qualys terintegrasi pada Pertahanan Microsoft untuk Cloud mendeteksi kerentanan gambar, mengklasifikasikannya, dan memberikan panduan remediasi.

Solusi pemantauan keamanan dan pemindaian gambar seperti Twistlock dan Aqua Security juga tersedia melalui Azure Marketplace.

Melindungi kredensial

Kontainer dapat tersebar di beberapa kluster dan wilayah Azure. Jadi, Anda harus mengamankan kredensial yang diperlukan untuk masuk atau akses API, seperti kata sandi atau token. Pastikan hanya pengguna istimewa yang dapat mengakses kontainer tersebut saat transit dan saat istirahat. Inventarisasikan semua rahasia kredensial, lalu wajibkan pengembang untuk menggunakan alat manajemen rahasia yang muncul yang dirancang untuk platform kontainer. Pastikan solusi Anda menyertakan database terenkripsi, enkripsi TLS untuk data rahasia saat transit, dan kontrol akses berbasis peran Azure (Azure RBAC) yang paling tidak istimewa. Azure Key Vault adalah layanan cloud yang melindungi kunci dan rahasia enkripsi (seperti sertifikat, string koneksi, dan kata sandi) untuk aplikasi dalam kontainer. Karena data ini sensitif dan penting bagi bisnis, amankan akses ke key vault Anda agar hanya mengizinkan aplikasi dan pengguna yang berwenang yang dapat mengaksesnya.

Pertimbangan untuk ekosistem kontainer

Langkah-langkah keamanan berikut, yang diterapkan dengan baik dan dikelola secara efektif, dapat membantu Anda mengamankan dan melindungi ekosistem kontainer Anda. Langkah-langkah ini berlaku di seluruh siklus hidup kontainer, mulai dari pengembangan melalui penyebaran produksi, dan ke berbagai orkestrator kontainer, host, dan platform.

Menggunakan manajemen kerentanan sebagai bagian dari siklus hidup pengembangan kontainer Anda

Dengan menggunakan manajemen kerentanan yang efektif di sepanjang siklus hidup pengembangan kontainer, Anda meningkatkan peluang identifikasi dan penyelesaian masalah keamanan sebelum menjadi masalah yang lebih serius.

Memindai kerentanan

Kerentanan baru ditemukan sepanjang waktu, sehingga memindai dan mengidentifikasi kerentanan adalah proses yang berkelanjutan. Gabungkan pemindaian kerentanan di seluruh siklus hidup kontainer:

  • Sebagai pemeriksaan akhir dalam alur pengembangan Anda, Anda harus melakukan pemindaian kerentanan pada kontainer sebelum mendorong gambar ke registri publik atau privat.
  • Terus pindai gambar kontainer di registri baik untuk mengidentifikasi kelemahan apa pun yang entah bagaimana terlewatkan selama pengembangan maupun untuk mengatasi kerentanan yang baru ditemukan yang mungkin ada dalam kode yang digunakan dalam gambar kontainer.

Memetakan kerentanan gambar ke kontainer yang sedang berjalan

Anda harus memiliki sarana untuk memetakan kerentanan yang diidentifikasi dalam gambar kontainer untuk menjalankan kontainer agar masalah keamanan dapat dimitigasi atau diselesaikan.

Memastikan hanya gambar yang disetujui yang digunakan di lingkungan Anda

Ada cukup banyak perubahan dan volatilitas dalam ekosistem kontainer tanpa mengizinkan kontainer yang tidak dikenal juga. Izinkan hanya gambar kontainer yang disetujui. Memiliki alat dan proses untuk memantau dan mencegah penggunaan gambar kontainer yang tidak disetujui.

Cara efektif untuk mengurangi permukaan serangan dan mencegah pengembang membuat kesalahan keamanan kritis adalah dengan mengontrol aliran gambar kontainer ke lingkungan pengembangan Anda. Misalnya, Anda mungkin menyetujui satu distribusi Linux sebagai gambar dasar, sebaiknya yang ramping (Alpine atau CoreOS daripada Ubuntu), untuk meminimalkan permukaan serangan potensial.

Tanda tangan atau sidik jari gambar dapat memberikan rantai penjagaan yang memungkinkan Anda memverifikasi integritas kontainer. Misalnya, Azure Container Registry mendukung model kepercayaan konten Docker, yang memungkinkan penerbit gambar menandatangani gambar yang didorong ke registri, dan konsumen gambar hanya menarik gambar yang ditandatangani.

Mengizinkan hanya registri yang disetujui

Ekstensi untuk memastikan lingkungan Anda hanya menggunakan gambar yang disetujui adalah untuk mengizinkan hanya penggunaan registri kontainer yang disetujui. Mengharuskan penggunaan registri kontainer yang disetujui mengurangi paparan Anda terhadap risiko dengan membatasi potensi pengenalan kerentanan atau masalah keamanan yang tidak diketahui.

Memastikan integritas gambar sepanjang siklus hidup

Bagian dari mengelola keamanan di seluruh siklus hidup kontainer adalah memastikan integritas gambar kontainer dalam registri dan saat gambar diubah atau disebarkan ke dalam produksi.

  • Gambar dengan kerentanan, meskipun kecil, tidak boleh diizinkan berjalan di lingkungan produksi. Idealnya, semua gambar yang disebarkan dalam produksi harus disimpan dalam registri privat yang dapat diakses oleh beberapa gambar terpilih. Jaga jumlah gambar produksi tetap kecil agar dapat dikelola secara efektif.

  • Karena sulit untuk menentukan asal perangkat lunak dari gambar kontainer yang tersedia untuk umum, bangun gambar dari sumber untuk memastikan pengetahuan tentang asal lapisan. Ketika kerentanan muncul dalam gambar kontainer buatan sendiri, pelanggan dapat menemukan jalur yang lebih cepat ke resolusi. Dengan gambar publik, pelanggan perlu menemukan akar gambar publik untuk memperbaikinya atau mendapatkan gambar aman lainnya dari penerbit.

  • Gambar yang dipindai secara menyeluruh yang disebarkan dalam produksi tidak dijamin akan diperbarui selama masa pakai aplikasi. Kerentanan keamanan mungkin dilaporkan untuk lapisan gambar yang sebelumnya tidak diketahui atau diperkenalkan setelah penyebaran produksi.

    Audit gambar yang disebarkan dalam produksi secara berkala untuk mengidentifikasi gambar yang sudah kedaluwarsa atau belum diperbarui dalam beberapa saat. Anda dapat menggunakan metodologi penyebaran biru-hijau dan mekanisme peningkatan bergulir untuk memperbarui gambar kontainer tanpa waktu henti. Anda dapat memindai gambar menggunakan alat yang dijelaskan di bagian sebelumnya.

  • Gunakan alur integrasi berkelanjutan (CI) dengan pemindaian keamanan terintegrasi untuk membangun gambar yang aman dan mendorongnya ke registri privat Anda. Pemindaian kerentanan yang dibangun ke dalam solusi CI memastikan gambar yang lulus semua pengujian didorong ke registri privat tempat beban kerja produksi disebarkan.

    Kegagalan alur CI memastikan gambar yang rentan tidak didorong ke registri privat yang digunakan untuk penyebaran beban kerja produksi. Ini juga mengotomatiskan pemindaian keamanan gambar jika jumlah gambar signifikan. Sebaliknya, mengaudit gambar secara manual untuk kerentanan keamanan dapat sangat melelahkan dan rawan kesalahan.

Menerapkan hak istimewa terkecil dalam runtime

Konsep hak istimewa terkecil adalah praktik terbaik keamanan dasar yang juga berlaku untuk kontainer. Ketika kerentanan dieksploitasi, umumnya memberi penyerang akses dan hak istimewa yang sama dengan aplikasi atau proses yang disusupi. Memastikan kontainer beroperasi dengan hak istimewa dan akses terendah yang diperlukan untuk menyelesaikan pekerjaan mengurangi paparan risiko Anda.

Mengurangi permukaan serangan kontainer dengan menghapus hak istimewa yang tidak diperlukan

Anda juga dapat memperkecil potensi permukaan serangan dengan menghapus proses atau hak istimewa yang tidak digunakan atau tidak perlu dari runtime kontainer. Eksekusi kontainer istimewa sebagai akar. Jika pengguna atau beban kerja berbahaya lolos dalam kontainer istimewa, kontainer selanjutnya akan berjalan sebagai akar di sistem tersebut.

Menyetujui terlebih dahulu file dan executable yang boleh diakses atau dijalankan kontainer

Mengurangi jumlah variabel atau yang tidak diketahui membantu Anda mempertahankan lingkungan yang stabil dan andal. Membatasi kontainer sehingga mereka dapat mengakses atau menjalankan hanya file dan executable yang telah disetujui sebelumnya atau terdaftar dengan aman adalah metode yang terbukti untuk membatasi paparan terhadap risiko.

Jauh lebih mudah untuk mengelola daftar aman ketika diimplementasikan dari awal. Daftar aman menyediakan ukuran kontrol dan pengelolaan saat Anda mempelajari file dan executable apa yang diperlukan agar aplikasi berfungsi dengan benar.

Daftar aman tidak hanya mengurangi permukaan serangan tetapi juga dapat memberikan garis besar untuk anomali dan mencegah kasus penggunaan "tetangga yang berisik" dan skenario pelarian kontainer.

Menerapkan segmentasi jaringan pada kontainer yang sedang berjalan

Untuk membantu melindungi kontainer dalam satu subnet dari risiko keamanan di subnet lain, pertahankan segmentasi jaringan (atau segmentasi nano) atau pemisahan di antara kontainer yang sedang berjalan. Mempertahankan segmentasi jaringan mungkin juga diperlukan untuk menggunakan kontainer dalam industri yang diperlukan untuk memenuhi mandat kepatuhan.

Misalnya, alat mitra Aqua menyediakan pendekatan otomatis untuk segmentasi nano. Aqua memantau aktivitas jaringan kontainer dalam runtime. Alat ini mengidentifikasi semua koneksi jaringan masuk dan keluar ke/dari kontainer, layanan, alamat IP, dan internet publik lain. Segmentasi nano secara otomatis dibuat berdasarkan lalu lintas yang dipantau.

Memantau aktivitas kontainer dan akses pengguna

Seperti halnya lingkungan IT, Anda harus secara konsisten memantau aktivitas dan akses pengguna ke ekosistem kontainer Anda untuk mengidentifikasi aktivitas yang mencurigakan atau berbahaya dengan cepat. Azure menyediakan solusi pemantauan kontainer termasuk:

  • Azure Monitor for containers memantau performa beban kerja Anda yang disebarkan ke lingkungan Kubernetes yang dihost di Azure Kubernetes Service (AKS). Azure Monitor for containers memberikan visibilitas performa dengan mengumpulkan metrik memori dan prosesor dari pengontrol, node, dan kontainer yang tersedia di Kubernetes melalui API Metrics.

  • Solusi Azure Container Monitoring membantu Anda melihat dan mengelola host kontainer Docker dan Windows lainnya dalam satu lokasi. Contohnya:

    • Lihat informasi audit terperinci yang memperlihatkan perintah yang digunakan dengan kontainer.
    • Pecahkan masalah kontainer dengan melihat dan mencari log terpusat tanpa harus melihat host Docker atau Windows dari jarak jauh.
    • Temukan kontainer yang mungkin berisik dan mengonsumsi sumber daya berlebih pada host.
    • Lihat CPU terpusat, memori, penyimpanan, dan informasi penggunaan serta performa jaringan untuk kontainer.

    Solusi mendukung orkestrator kontainer termasuk Docker Swarm, DC/OS, Kubernetes yang tidak dikelola, Service Fabric, dan Red Hat OpenShift.

Memantau aktivitas sumber daya kontainer

Pantau aktivitas sumber daya Anda, seperti file, jaringan, dan sumber daya lain yang diakses oleh kontainer Anda. Memantau aktivitas dan konsumsi sumber daya bermanfaat untuk pemantauan performa dan sebagai langkah keamanan.

Azure Monitor memungkinkan pemantauan inti untuk layanan Azure dengan mengizinkan pengumpulan metrik, log aktivitas, dan log diagnostik. Misalnya, log aktivitas memberi tahu Anda kapan sumber daya baru dibuat atau dimodifikasi.

Metrik tersedia yang menyediakan statistik performa untuk sumber daya yang berbeda dan bahkan sistem operasi di dalam komputer virtual. Anda dapat melihat data ini dengan salah satu penjelajah di portal Microsoft Azure dan membuat pemberitahuan berdasarkan metrik ini. Azure Monitor menyediakan alur metrik tercepat (5 menit hingga 1 menit), jadi, Anda harus menggunakannya untuk pemberitahuan dan notifikasi waktu penting.

Mencatat semua akses pengguna administratif kontainer untuk audit

Pertahankan jejak audit akses administratif yang akurat ke ekosistem kontainer Anda, termasuk kluster Kubernetes, kontainer registri, dan gambar kontainer. Log ini mungkin diperlukan untuk tujuan audit dan akan berguna sebagai bukti forensik setelah insiden keamanan apa pun. Solusi Azure meliputi:

Langkah berikutnya