DevSecOps untuk infrastruktur sebagai kode (IaC)

Microsoft Sentinel
Azure Monitor
GitHub

Ide solusi

Artikel ini menjelaskan ide solusi. Arsitek cloud Anda dapat menggunakan panduan ini untuk membantu memvisualisasikan komponen utama untuk implementasi umum arsitektur ini. Gunakan artikel ini sebagai titik awal untuk merancang solusi yang dirancang dengan baik yang selaras dengan persyaratan spesifik beban kerja Anda.

Ide solusi ini menggambarkan alur DevSecOps yang menggunakan GitHub untuk infrastruktur sebagai kode (IaC). Ini juga menjelaskan cara mengatur alur kerja untuk keunggulan operasional, 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

Aliran data berikut sesuai dengan diagram sebelumnya:

  1. Pengembang menggunakan pengembangan berbasis pengujian untuk memeriksa perubahan kode untuk definisi infrastruktur, seperti templat IaC, ke repositori GitHub. Mereka mengembangkan pengujian unit, pengujian integrasi, dan kebijakan sebagai kode (PaC) secara bersamaan untuk menguji kualitas IaC.

  2. Permintaan pull memicu pengujian unit otomatis melalui GitHub Actions.

  3. Konfigurasikan proses alur kerja GitHub Actions untuk menguji IaC dengan menggunakan status dan rencana infrastruktur yang dihasilkan secara lokal.

  4. Konfigurasikan GitHub Actions untuk memindai kualitas kode dan masalah keamanan. Pindai menggunakan kueri GitHub CodeQL yang dibangun kustom oleh Anda sendiri atau alat keamanan lainnya untuk menganalisis templat IaC dan mendeteksi potensi kerentanan. 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 dengan 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, administrator yang ditunjuk meningkatkan akses mereka untuk melakukan modifikasi. Setelah modifikasi, akses yang ditinggikan akan dihapus. Anda juga harus mencatat Masalah GitHub untuk rekonsiliasi IaC. Langkah-langkah dan pendekatan 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 sistem mendeteksi anomali, sistem secara otomatis mencatat Masalah GitHub untuk resolusi.

Komponen

  • GitHub adalah platform hosting kode untuk kontrol dan kolaborasi versi. Dalam arsitektur ini, ia menyimpan templat IaC dan berfungsi sebagai repositori pusat untuk alur kerja pengembangan, pengujian, dan tata kelola.

  • GitHub Actions adalah alat otomatisasi integrasi berkelanjutan dan penyebaran berkelanjutan (CI/CD) yang memungkinkan alur kerja untuk membangun, menguji, dan menyebarkan kode langsung dari repositori GitHub. Dalam arsitektur ini, GitHub Actions mengotomatiskan pengujian unit, pemindaian keamanan, dan provisi infrastruktur untuk alur IaC.

  • GitHub Advanced Security adalah serangkaian fitur keamanan yang mencakup analisis statis dan deteksi kerentanan untuk kode yang disimpan di GitHub. Dalam arsitektur ini, ia meningkatkan keamanan IaC dengan memindai templat dan meningkatkan pemberitahuan tentang kesalahan konfigurasi atau risiko.

  • CodeQL adalah mesin analisis kode semantik yang memungkinkan kueri kustom mendeteksi kerentanan dan kesalahan konfigurasi dalam kode. Dalam arsitektur ini, CodeQL memindai artefak repositori untuk mengidentifikasi potensi masalah keamanan sebelum penyebaran.

    Nota

    CodeQL tidak secara asli mendukung pemindaian semua file IaC, seperti Terraform. Namun, Anda dapat menggunakan proyek komunitas CodeQL IaC Extractor atau alternatif yang disediakan vendor seperti Trivy Aqua Security.

  • Terraform adalah alat otomatisasi infrastruktur sumber terbuka yang dikembangkan oleh HashiCorp yang memungkinkan provisi deklaratif di seluruh lingkungan cloud. Dalam arsitektur ini, Terraform menyediakan dan memodifikasi sumber daya Azure berdasarkan definisi IaC dan mendukung alur kerja pengembangan berbasis pengujian.

  • Microsoft Defender for Cloud adalah platform manajemen keamanan yang menyediakan perlindungan ancaman di seluruh beban kerja cloud hibrid. Dalam arsitektur ini, ia terus memantau infrastruktur yang disebarkan untuk kerentanan.

  • Microsoft Sentinel adalah solusi manajemen peristiwa dan informasi keamanan asli cloud (SIEM) dan respons otomatis orkestrasi keamanan (SOAR) yang menggunakan AI dan analitik untuk mendeteksi dan merespons ancaman. Dalam arsitektur ini, Microsoft Sentinel memantau aktivitas infrastruktur dan menimbulkan pemberitahuan atau Masalah GitHub saat anomali terdeteksi.

  • Azure Policy adalah layanan tata kelola yang memberlakukan aturan dan kepatuhan di seluruh sumber daya Azure. Dalam arsitektur ini, Azure Policy memvalidasi penyebaran IaC terhadap standar organisasi dan beban kerja dan memblokir konfigurasi yang tidak patuh. Misalnya, jika proyek Anda akan menyebarkan komputer virtual yang memiliki SKU yang tidak dikenal, Azure Policy memberi tahu Anda dan menghentikan penyebaran.

  • Azure Monitor adalah platform telemetri dan pengamatan yang mengumpulkan metrik performa dan log aktivitas dari sumber daya Azure. Dalam arsitektur ini, Azure Monitor mendeteksi kondisi yang tidak teratur dalam infrastruktur dan memicu pemberitahuan sehingga triase dan remediasi dapat dimulai.

Detail skenario

DevSecOps untuk IaC secara konseptual mirip dengan DevSecOps untuk kode aplikasi di Azure Kubernetes Service (AKS). Namun, Anda memerlukan serangkaian alur dan alat yang berbeda untuk mengelola dan mengotomatiskan integrasi berkelanjutan dan pengiriman berkelanjutan 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 pengembangan berbasis pengujian. Status konfigurasi ini meniru penyebaran aktual. Anda dapat menjalankan pengujian integrasi untuk IaC pada penyebaran infrastruktur aktual dengan menggunakan REST API Azure Resource Graph.

PaC adalah metode penting lainnya 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 infrastruktur yang salah dikonfigurasi yang mengekspos titik untuk serangan setelah penyebaran. Anda dapat mengintegrasikan alat analisis kode statis seperti Snyk atau Aqua Security Trivy dengan GitHub Advanced Security untuk memindai kerentanan keamanan dalam kode infrastruktur. Proses ini mirip dengan pengujian keamanan aplikasi statis.

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 dilakukan. Anda harus mengonfigurasi Azure Monitor untuk memunculkan Masalah GitHub sehingga pengembang dapat mendamaikan perubahan. Hindari konfigurasi manual jika memungkinkan.

Penting untuk terus memantau lingkungan cloud untuk ancaman dan kerentanan untuk membantu mencegah insiden keamanan. Anda dapat menggunakan alat perlindungan ancaman dan SIEM untuk mendeteksi lalu lintas abnormal. Alat-alat ini secara otomatis memperingatkan administrator keamanan dan meningkatkan Masalah GitHub.

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 dengan menggunakan DevSecOps untuk IaC untuk membantu memastikan keamanan dan kualitas penyebaran. Anda juga ingin melacak dan mengaudit semua modifikasi pada infrastruktur.

Kontributor

Microsoft mempertahankan artikel ini. Kontributor berikut menulis artikel ini.

Penulis utama:

Untuk melihat profil LinkedIn nonpublik, masuk ke LinkedIn.

Langkah berikutnya