DevSecOps untuk infrastruktur sebagai kode (IaC)

Microsoft Sentinel
Azure Monitor
GitHub

Ide solusi

Artikel ini adalah ide solusi. Jika Anda ingin kami memperluas konten dengan informasi lebih lanjut, seperti potensi kasus penggunaan, layanan alternatif, pertimbangan implementasi, atau panduan harga, beri tahu kami dengan memberikan umpan balik GitHub.

Ide solusi ini menggambarkan alur DevSecOps menggunakan GitHub untuk IaC dan cara mengatur alur kerja untuk keunggulan operasi, keamanan, dan pengoptimalan biaya.

Terraform adalah merek dagang dari Hashicorp. Tidak ada dukungan yang tersirat oleh penggunaan tanda ini.

Sistem

Diagram yang memperlihatkan arsitektur untuk DevSecOps untuk IaC.

Unduh file Visio arsitektur ini.

Aliran data

  1. Dengan pengembangan berbasis pengujian, Anda memeriksa perubahan kode untuk definisi infrastruktur, seperti templat IaC, ke repositori GitHub. Anda mengembangkan pengujian unit, pengujian integrasi, dan PaC secara bersamaan untuk menguji kualitas IaC.
  2. Permintaan pull (PR) memicu pengujian unit otomatis melalui GitHub Actions.
  3. Anda mengonfigurasi proses alur kerja GitHub Actions untuk menguji IaC dengan status dan rencana infrastruktur yang disebarkan secara lokal.
  4. Anda mengonfigurasi GitHub Actions untuk memindai kualitas kode dan masalah keamanan. Anda kemudian menggunakan alat pemindaian keamanan yang dibangun di CodeQL GitHub untuk memindai kerentanan keamanan pada IaC. Jika kerentanan terdeteksi, GitHub mengirimkan pemberitahuan ke organisasi atau ke pemilik dan pengelola repositori.
  5. Alat IaC menyediakan dan memodifikasi sumber daya untuk setiap lingkungan, menyesuaikan ukuran, jumlah instans, dan properti lainnya. Anda dapat menjalankan pengujian integrasi otomatis untuk IaC pada sumber daya yang disediakan.
  6. Ketika pembaruan manual untuk infrastruktur diperlukan, akses administrator yang ditunjuk ditinggikan untuk melakukan modifikasi. Setelah modifikasi, akses yang ditinggikan dihapus, dan masalah harus dicatat ke GitHub untuk rekonsiliasi IaC. Langkah-langkah dan kemungkinan rekonsiliasi bergantung pada alat IaC tertentu.
  7. SecOps terus memantau dan melindungi dari ancaman dan kerentanan keamanan. Azure Policy memberlakukan tata kelola cloud.
  8. Ketika anomali terdeteksi, masalah harus dimunculkan secara otomatis di GitHub untuk diperbaiki.

Komponen

  • GitHub adalah platform hosting kode untuk kontrol dan kolaborasi versi. Repositori kontrol sumber GitHub berisi semua file proyek dan riwayat revisinya. Pengembang dapat bekerja sama untuk berkontribusi, berdiskusi, dan mengelola kode di repositori.
  • GitHub Actions menyediakan serangkaian alur kerja build dan rilis yang mencakup integrasi berkelanjutan (CI), pengujian otomatis, dan penyebaran kontainer.
  • GitHub Advanced Security menyediakan fitur untuk mengamankan IaC Anda. Ini membutuhkan lisensi lain.
  • CodeQL menyediakan alat pemindaian keamanan yang berjalan pada kode statis untuk mendeteksi kesalahan konfigurasi infrastruktur.
  • Terraform adalah produk mitra yang dikembangkan oleh HashiCorp yang memungkinkan otomatisasi infrastruktur di Azure dan lingkungan lainnya.
  • Pertahanan Microsoft untuk Cloud menyediakan pengelolaan keamanan terpadu dan perlindungan terhadap ancaman tingkat lanjut di seluruh beban kerja cloud hibrida.
  • Microsoft Sentinel adalah solusi SIEM asli cloud dan respons otomatis orkestrasi keamanan (SOAR). Ini menggunakan AI tingkat lanjut dan analitik keamanan untuk membantu Anda mendeteksi dan merespons ancaman di seluruh perusahaan Anda.
  • Azure Policy membantu tim mengelola dan mencegah masalah TI melalui definisi kebijakan yang dapat menerapkan aturan untuk sumber daya cloud. Misalnya, jika proyek Anda akan menyebarkan komputer virtual dengan SKU yang tidak dikenal, Azure Policy memberi tahu Anda tentang masalah tersebut dan menghentikan penyebaran.
  • Azure Monitor mengumpulkan dan menganalisis telemetri aplikasi, seperti metrik performa dan log aktivitas. Ketika layanan ini mengidentifikasi kondisi tidak teratur, maka akan memberi tahu aplikasi dan personel.

Detail skenario

Secara konseptual, DevSecOps untuk infrastruktur sebagai kode (IaC) mirip dengan DevSecOps untuk kode aplikasi di AKS. Tetapi Anda memerlukan serangkaian alur dan alat yang berbeda untuk mengelola dan mengotomatiskan integrasi berkelanjutan dan pengiriman berkelanjutan (CI/CD) untuk IaC.

Saat Anda mengadopsi IaC, penting untuk membuat pengujian otomatisasi saat Anda mengembangkan kode. Pengujian ini mengurangi kompleksitas pengujian IaC saat beban kerja Anda diskalakan. Anda dapat menggunakan status konfigurasi infrastruktur lokal seperti status Terraform dan rencana untuk mengembangkan pengembangan berbasis pengujian (TDD) untuk IaC. Status konfigurasi ini meniru penyebaran aktual. Anda dapat menjalankan pengujian integrasi untuk IaC pada penyebaran infrastruktur aktual menggunakan REST API Azure Resource Graph.

Policy as Code (PaC) juga merupakan metode penting untuk memberikan infrastruktur yang sesuai dengan peraturan dan tata kelola perusahaan. Anda dapat menambahkan alur kerja PaC ke dalam alur Anda untuk mengotomatiskan tata kelola cloud.

Mengamankan infrastruktur di awal tahap pengembangan mengurangi risiko salah mengonfigurasi infrastruktur yang membuka titik untuk serangan setelah penyebaran. Anda dapat mengintegrasikan alat analisis kode statis untuk infrastruktur seperti Synk, atau Aquasecurity tfsec dengan menggunakan CodeQL GitHub, untuk memindai masalah keamanan dalam kode infrastruktur. Proses ini mirip dengan Static Application Security Testing (SAST).

Ketika infrastruktur disebarkan dan beroperasi, penyimpangan konfigurasi cloud dapat sulit diselesaikan, terutama di lingkungan produksi.

Siapkan perwakilan layanan khusus untuk menyebarkan atau memodifikasi infrastruktur cloud untuk lingkungan produksi. Kemudian hapus semua akses lain yang memungkinkan konfigurasi manual lingkungan. Jika Anda memerlukan konfigurasi manual, tingkatkan akses untuk administrator yang ditunjuk, lalu hapus akses yang ditinggikan setelah perubahan dimodifikasi. Anda harus mengonfigurasi Azure Monitor untuk menimbulkan masalah di GitHub bagi pengembang untuk mendamaikan perubahan. Namun, konfigurasi manual harus dihindari jika memungkinkan.

Penting untuk terus memantau lingkungan cloud untuk ancaman dan kerentanan untuk mencegah insiden keamanan. Anda dapat menggunakan alat Perlindungan ancaman dan informasi keamanan dan manajemen peristiwa (SIEM) untuk mendeteksi lalu lintas abnormal. Alat-alat ini secara otomatis memperingatkan administrator keamanan dan menimbulkan masalah di GitHub untuk mendapatkan perhatian.

Kemungkinan kasus penggunaan

Anda adalah bagian dari tim pusat pengembang IaC yang menggunakan strategi multicloud untuk perusahaan fiksi Contoso. Anda ingin menyebarkan infrastruktur cloud ke zona pendaratan Azure baru, menggunakan DevSecOps untuk IaC untuk memastikan keamanan dan kualitas penyebaran. Anda juga ingin melacak dan mengaudit semua modifikasi pada infrastruktur.

Kontributor

Artikel ini dikelola oleh Microsoft. Ini awalnya ditulis oleh kontributor berikut.

Penulis utama:

Langkah berikutnya