Kontrol Keamanan v3: Keamanan DevOps

Keamanan DevOps mencakup kontrol yang terkait dengan rekayasa keamanan dan operasi dalam proses DevOps, termasuk penerapan pemeriksaan keamanan penting (seperti pengujian keamanan aplikasi statis, manajemen kerentanan) sebelum fase penerapan untuk memastikan keamanan selama proses DevOps; itu juga mencakup topik umum seperti pemodelan ancaman dan keamanan pasokan perangkat lunak.

DS-1: Menjalankan pemodelan ancaman

ID CIS Controls v8 NIST SP 800-53 r4 ID(s) ID PCI-DSS v3.2.1
16.10, 16.14 SA-15 6.5, 12.2

Prinsip Keamanan: Melakukan pemodelan ancaman untuk mengidentifikasi potensi ancaman dan menyebutkan kontrol yang meringankan. Pastikan pemodelan ancaman Anda melayani tujuan berikut:

  • Amankan aplikasi dan layanan Anda dalam tahap runtime produksi.
  • Amankan artefak, alur CI/CD yang mendasarinya, dan lingkungan alat lainnya yang digunakan untuk build, uji, dan penyebaran.

Pemodelan ancaman setidaknya harus mencakup aspek berikut:

  • Tentukan persyaratan keamanan aplikasi. Pastikan persyaratan ini ditangani secara memadai dalam pemodelan ancaman.
  • Analisis komponen aplikasi dan koneksi serta hubungannya. Pastikan analisis ini juga mencakup koneksi upstram dan downstream di luar cakupan aplikasi Anda.
  • Cantumkan potensi ancaman dan vektor serangan tempat komponen aplikasi Anda, koneksi data, dan layanan upstram dan downstream mungkin terekspos.
  • Identifikasi kontrol keamanan yang berlaku yang dapat digunakan untuk mengurangi ancaman yang disebutkan dan mengidentifikasi celah kontrol (misalnya, kerentanan keamanan) yang mungkin memerlukan rencana perawatan tambahan.
  • Hitung dan rancang kontrol yang dapat mengurangi kerentanan yang diidentifikasi.

Panduan Azure: Menggunakan alat pemodelan ancaman seperti alat pemodelan ancaman Microsoft dengan templat model ancaman Azure yang disematkan untuk mendorong proses pemodelan ancaman Anda. Gunakan model STRIDE untuk menghitung ancaman dari internal dan eksternal dan mengidentifikasi kontrol yang berlaku. Pastikan proses pemodelan ancaman mencakup skenario ancaman dalam proses DevOps, seperti injeksi kode berbahaya melalui repositori artefak yang tidak aman dengan kebijakan kontrol akses yang salah dikonfigurasi.

Jika menggunakan alat pemodelan ancaman tidak berlaku, Anda harus, setidaknya, menggunakan proses pemodelan ancaman berbasis kuesioner untuk mengidentifikasi ancaman.

Pastikan pemodelan ancaman atau hasil analisis dicatat dan diperbarui saat ada perubahan dampak keamanan utama dalam aplikasi Anda atau dalam lanskap ancaman.

Implementasi dan konteks tambahan:

Pemangku Kepentingan Keamanan Pelanggan (Pelajari lebih lanjut):

DS-2: Memastikan keamanan rantai pasokan perangkat lunak

ID CIS Controls v8 NIST SP 800-53 r4 ID(s) ID PCI-DSS v3.2.1
16.4, 16.6, 16.11 SA-12, SA-15 6.3, 6.5

Prinsip Keamanan: Memastikan SDLC (Siklus Hidup Pengembangan Perangkat Lunak) atau proses perusahaan Anda mencakup serangkaian kontrol keamanan untuk mengatur komponen perangkat lunak internal dan pihak ketiga (termasuk perangkat lunak berpemilik dan sumber terbuka) tempat aplikasi Anda memiliki dependensi. Tentukan kriteria pembatasan untuk mencegah komponen yang rentan atau berbahaya diintegrasikan dan digunakan ke lingkungan.

Kontrol keamanan rantai pasokan perangkat lunak setidaknya harus mencakup aspek berikut:

  • Identifikasi dependensi upstram yang diperlukan pada tahap pengembangan, build, integrasi, dan penyebaran.
  • Inventariskan dan lacak komponen perangkat lunak internal dan pihak ketiga untuk mengetahui kerentanan umum ketika ada perbaikan yang tersedia di upstram.
  • Nilai kerentanan dan malware dalam komponen perangkat lunak menggunakan pengujian aplikasi statis dan dinamis untuk kerentanan yang tidak diketahui.
  • Pastikan kerentanan dan malware dikurangi menggunakan pendekatan yang tepat. Ini mungkin termasuk kode sumber perbaikan lokal atau upstram, pengecualian fitur dan/atau menerapkan kontrol kompensasi jika mitigasi langsung tidak tersedia.

Jika komponen pihak ketiga sumber tertutup digunakan di lingkungan produksi Anda, Anda mungkin memiliki visibilitas terbatas pada postur keamanannya. Anda harus mempertimbangkan kontrol tambahan seperti kontrol akses, isolasi jaringan, dan keamanan titik akhir untuk meminimalkan dampak jika ada aktivitas berbahaya atau kerentanan yang terkait dengan komponen.

Panduan Azure: Untuk platform GitHub, pastikan keamanan rantai pasokan perangkat lunak melalui kemampuan atau alat berikut dari GitHub Advanced Security atau fitur asli GitHub:

  • Gunakan Grafik Dependensi untuk memindai, menginventarisasi, dan mengidentifikasi semua dependensi proyek Anda dan kerentanan terkait melalui Database Penasihat.
  • Gunakan Dependabot untuk memastikan bahwa dependensi yang rentan dilacak dan diperbaiki, dan pastikan repositori Anda secara otomatis mengikuti rilis terbaru dari paket dan aplikasi yang bergantung padanya.
  • Gunakan kemampuan pemindaian kode GitHub asli untuk memindai kode sumber saat mencari kode dari eksternal.
  • Gunakan Azure Defender untuk Cloud untuk mengintegrasikan penilaian kerentanan untuk gambar kontainer Anda dalam alur kerja CI/CD.

Untuk Azure DevOps, Anda dapat menggunakan ekstensi pihak ketiga untuk menerapkan kontrol serupa untuk menginventarisasi, menganalisis, dan memulihkan komponen perangkat lunak pihak ketiga dan kerentanannya.

Implementasi dan konteks tambahan:

Pemangku Kepentingan Keamanan Pelanggan (Pelajari lebih lanjut):

DS-3: Infrastruktur DevOps yang Aman

ID CIS Controls v8 NIST SP 800-53 r4 ID(s) ID PCI-DSS v3.2.1
16.7 CM-2, CM-6, AC-2, AC-3, AC-6 2.2, 6.3, 7.1

Prinsip Keamanan: Memastikan infrastruktur dan alur DevOps mengikuti praktik terbaik keamanan di seluruh lingkungan termasuk tahap build, uji, dan produksi Anda. Ini biasanya mencakup kontrol keamanan untuk cakupan berikut:

  • Repositori artefak yang menyimpan kode sumber, paket dan gambar yang dibuat, artefak proyek, dan data bisnis.
  • Server, layanan, dan alat yang menghosting alur CI/CD.
  • Konfigurasi alur CI/CD.

Panduan Azure: Sebagai bagian dari penerapan Azure Security Benchmark ke kontrol keamanan infrastruktur DevOps Anda, prioritaskan kontrol berikut:

  • Lindungi artefak dan lingkungan yang mendasarinya untuk memastikan alur CI/CD tidak menjadi jalan untuk memasukkan kode berbahaya. Misalnya, tinjau alur CI/CD Anda untuk mengidentifikasi kesalahan konfigurasi di area inti Azure DevOps seperti Organisasi, Proyek, Pengguna, Alur (Build & Rilis), Koneksi, dan Agen Build untuk mengidentifikasi kesalahan konfigurasi seperti akses terbuka, autentikasi lemah, penyiapan koneksi yang tidak aman, dan sebagainya. Untuk GitHub, gunakan kontrol serupa untuk mengamankan tingkat izin Organisasi
  • Konfigurasi izin identitas/peran, dan kebijakan hak di Azure AD, layanan native, dan alat CI/CD di alur Anda untuk memastikan perubahan pada alur diotorisasi.
  • Hindari menyediakan akses istimewa "berdiri" permanen ke akun manusia seperti pengembang atau penguji dengan menggunakan fitur seperti identifikasi terkelola Azure, akses just-in-time.
  • Hapus kunci, info masuk, dan rahasia dari kode dan skrip yang digunakan dalam pekerjaan alur kerja CI/CD dan simpan di penyimpanan kunci atau Azure Key Vault.
  • Jika Anda menjalankan agen build/penyebaran yang dihosting sendiri, ikuti kontrol Azure Security Benchmark termasuk keamanan jaringan, postur, dan keamanan pengelolaan kerentanan, serta titik akhir untuk mengamankan lingkungan Anda.

Implementasi dan konteks tambahan:

Pemangku Kepentingan Keamanan Pelanggan (Pelajari lebih lanjut):

DS-4: Mengintegrasikan pengujian keamanan aplikasi statis ke dalam alur DevOps

ID CIS Controls v8 NIST SP 800-53 r4 ID(s) ID PCI-DSS v3.2.1
16.12 SA-11 6.3, 6.5

Prinsip Keamanan: Memastikan pengujian keamanan aplikasi statis (SAST) adalah bagian dari kontrol pembatasan dalam alur kerja CI/CD. Pembatasan dapat diatur berdasarkan hasil pengujian untuk mencegah paket rentan dari melakukan ke repositori, membangun ke dalam paket, atau menyebarkan ke dalam produksi.

Panduan Azure: Mengintegrasikan SAST ke dalam alur Anda sehingga kode sumber dapat dipindai secara otomatis di alur kerja CI/CD Anda. Azure DevOps Pipeline atau GitHub dapat mengintegrasikan alat di bawah ini dan alat SAST pihak ketiga ke dalam alur kerja.

  • GitHub CodeQL untuk analisis kode sumber.
  • Microsoft BinSkim Binary Analyzer untuk analisis biner Windows dan * nix.
  • Pemindai Info Masuk Azure DevOps dan pemindaian rahasia asli GitHub untuk pemindaian info masuk dalam kode sumber.

Implementasi dan konteks tambahan:

Pemangku Kepentingan Keamanan Pelanggan (Pelajari lebih lanjut):

DS-5: Mengintegrasikan pengujian keamanan aplikasi dinamis ke dalam alur DevOps

ID CIS Controls v8 NIST SP 800-53 r4 ID(s) ID PCI-DSS v3.2.1
16.12 SA-11 6.3, 6.5

Prinsip Keamanan: Memastikan pengujian keamanan aplikasi dinamis (DAST) adalah bagian dari kontrol pembatasan dalam alur kerja CI/CD. Pembatasan dapat diatur berdasarkan hasil pengujian untuk mencegah kerentanan ke dalam paket atau menyebarkan ke dalam produksi.

Panduan Azure: Mengintegrasikan DAST ke dalam alur Anda sehingga aplikasi runtime dapat diuji secara otomatis di alur kerja CI/CD Anda yang diatur dalam Azure DevOps atau GitHub. Uji penetrasi otomatis (dengan validasi bantuan manual) juga harus menjadi bagian dari DAST.

Alur atau GitHub Azure DevOps mendukung integrasi alat DAST pihak ketiga ke dalam alur kerja CI/CD.

Implementasi dan konteks tambahan:

Pemangku Kepentingan Keamanan Pelanggan (Pelajari lebih lanjut):

DS-6: Menegakkan keamanan beban kerja di seluruh siklus hidup DevOps

ID CIS Controls v8 NIST SP 800-53 r4 ID(s) ID PCI-DSS v3.2.1
7.5, 7.6, 7.7, 16.1, 16.7 CM-2, CM-6, AC-2, AC-3, AC-6 6.1, 6.2, 6.3

Prinsip Keamanan: Memastikan beban kerja aman di seluruh siklus hidup dalam tahap pengembangan, uji, dan penyebaran. Gunakan Azure Security Benchmark untuk mengevaluasi kontrol (seperti keamanan jaringan, manajemen identitas, akses istimewa, dan sebagainya) yang dapat ditetapkan sebagai pagar pembatas secara default atau bergeser ke kiri sebelum tahap penyebaran. Secara khusus, pastikan kontrol berikut ada dalam proses DevOps Anda:

  • Otomatiskan penyebaran dengan menggunakan Azure atau alat pihak ketiga dalam alur kerja CI/CD, manajemen infrastruktur (infrastruktur sebagai kode), dan pengujian untuk mengurangi kesalahan manusia dan permukaan serangan.
  • Pastikan VM, gambar kontainer, dan artefak lainnya aman dari manipulasi berbahaya.
  • Pindai artefak beban kerja (dengan kata lain, gambar kontainer, dependensi, pemindaian SAST, dan DAST) sebelum penyebaran dalam alur kerja CI/CD
  • Sebarkan penilaian kerentanan dan kemampuan deteksi ancaman ke lingkungan produksi dan terus gunakan kemampuan ini dalam waktu singkat.

Panduan Azure: Panduan untuk Azure VM:

  • Gunakan Azure Shared Image Gallery untuk berbagi dan mengontrol akses ke gambar Anda oleh pengguna, perwakilan layanan, atau grup AD yang berbeda dalam organisasi Anda. Gunakan kontrol akses berbasis peran Azure (Azure RBAC) untuk memastikan bahwa hanya pengguna yang berwenang yang dapat mengakses gambar kustom Anda.
  • Tentukan garis besar konfigurasi aman untuk VM untuk menghilangkan info masuk, izin, dan paket yang tidak perlu. Melalui gambar kustom, templat Azure Resource Manager, dan/atau konfigurasi tamu Azure Policy untuk menyebarkan dan menerapkan garis besar konfigurasi ini.

Panduan untuk layanan kontainer Azure:

  • Gunakan Azure Container Registry (ACR) untuk membuat registri kontainer privat Anda tempat akses granular dapat dibatasi melalui Azure RBAC, sehingga hanya layanan dan akun resmi yang dapat mengakses kontainer di registri pribadi.
  • Gunakan Defender untuk Azure Container Registry untuk penilaian kerentanan gambar di Azure Container Registry privat Anda. Selain itu, Anda dapat menggunakan Azure Defender untuk Cloud untuk memindai gambar kontainer ingrate sebagai bagian dari alur kerja CI/CD Anda.

Untuk layanan tanpa server Azure, adopsi kontrol serupa untuk memastikan kontrol keamanan bergeser ke kiri ke tahap sebelum penyebaran.

Implementasi dan konteks tambahan:

Pemangku Kepentingan Keamanan Pelanggan (Pelajari lebih lanjut):

DS-7: Mengaktifkan pengelogan dan pemantauan di DevOps

ID CIS Controls v8 NIST SP 800-53 r4 ID(s) ID PCI-DSS v3.2.1
8.2, 8.5, 8.9, 8.11 AU-3, AU-6, AU-12, SI-4 10.1, 10.2, 10.3, 10.6

Prinsip Keamanan: Memastikan cakupan pengelogan dan pemantauan Anda mencakup lingkungan non-produksi dan elemen alur kerja CI/CD yang digunakan dalam DevOps (dan proses pengembangan lainnya). Kerentanan dan ancaman yang menargetkan lingkungan ini dapat menimbulkan risiko signifikan terhadap lingkungan produksi Anda jika tidak dipantau dengan benar. Peristiwa dari alur kerja build, uji, dan penyebaran CI/CD juga harus dipantau untuk mengidentifikasi penyimpangan dalam pekerjaan alur kerja CI/CD.

Panduan Azure: Mengaktifkan dan mengonfigurasikan kemampuan pengelogan audit di lingkungan alat non-produksi dan CI/CD (seperti Azure DevOps dan GitHub) yang digunakan selama proses DevOps.

Peristiwa dari pekerjaan CI/CD Azure DevOps dan GitHub untuk pekerjaan build, uji, dan penyebaran juga harus dipantau untuk mengidentifikasi hasil pengecualian dalam pekerjaan CI/CD.

Serap log dan peristiwa di atas ke Azure Sentinel atau alat SIEM lainnya melalui alur pengelogan atau API untuk memastikan insiden keamanan dipantau dan ditriase dengan benar untuk penanganan.

Ikuti Azure Security Benchmark - Pengelogan dan Deteksi Ancaman sebagai pedoman untuk menerapkan kontrol pengelogan dan pemantauan Anda untuk beban kerja.

Implementasi dan konteks tambahan:

Pemangku Kepentingan Keamanan Pelanggan (Pelajari lebih lanjut):