DevSecOps pada Layanan Kubernetes Azure (AKS)

DevSecOps, juga disebut Secure DevOps, dibangun berdasarkan praktik DevOps dengan menggabungkan keamanan pada berbagai tahap siklus hidup DevOps tradisional. Bangun keamanan ke dalam praktik DevOps untuk:

  • Membuat aplikasi dan sistem Anda lebih aman, memberikan visibilitas ke dalam ancaman keamanan, dan mencegah kerentanan menjangkau lingkungan yang disebarkan.

  • Tingkatkan kesadaran keamanan di antara tim pengembangan dan operasi Anda.

  • Masukkan proses keamanan otomatis ke dalam siklus hidup pengembangan perangkat lunak (SDLC) Anda.

  • Kurangi biaya remediasi dengan menemukan masalah keamanan di awal tahap pengembangan dan desain.

Saat Anda menerapkan DevSecOps ke Azure Kubernetes Service (AKS), setiap peran organisasi memiliki pertimbangan keamanan tertentu:

  • Pengembang membangun aplikasi aman yang berjalan di AKS.

  • Teknisi cloud membangun infrastruktur AKS yang aman.

  • Tim operasi mungkin mengatur kluster atau memantau masalah keamanan.

Artikel ini mengatur panduan berdasarkan tahap siklus hidup DevOps dan memberikan rekomendasi untuk kontrol keamanan dan praktik terbaik. Ini mencakup proses dan alat umum untuk integrasi berkelanjutan dan alur pengiriman berkelanjutan (CI/CD), dengan fokus pada alat bawaan.

Aliran proses

Diagram arsitektur yang menunjukkan cara menerapkan praktik DevSecOps di lingkungan AKS.

Unduh sebuah file Visio dari arsitektur ini.

Note

Artikel ini mereferensikan AKS dan GitHub, tetapi Anda dapat menerapkan rekomendasi ini ke orkestrasi kontainer atau platform CI/CD apa pun. Detail implementasi mungkin bervariasi, tetapi sebagian besar konsep dan praktik untuk setiap tahap masih berlaku.

  1. Microsoft Entra ID dikonfigurasi sebagai penyedia identitas untuk GitHub. Konfigurasikan autentikasi multifaktor (MFA) untuk membantu memberikan keamanan autentikasi tambahan.

  2. Pengembang menggunakan Visual Studio Code atau Visual Studio dengan ekstensi keamanan yang diaktifkan untuk menganalisis kode mereka secara proaktif untuk kerentanan keamanan.

  3. Pengembang menerapkan kode aplikasi ke repositori GitHub Enterprise milik perusahaan dan yang diatur.

  4. GitHub Enterprise mengintegrasikan pemindaian keamanan dan dependensi otomatis melalui GitHub Advanced Security.

  5. Permintaan pull memicu build integrasi berkelanjutan (CI) dan pengujian otomatis melalui GitHub Actions.

  6. Alur kerja build CI melalui GitHub Actions menghasilkan gambar kontainer Docker dan menyimpannya di Azure Container Registry.

  7. Anda dapat menambahkan persetujuan manual untuk penyebaran ke lingkungan tertentu, seperti produksi, sebagai bagian dari alur kerja pengiriman berkelanjutan (CD) di GitHub Actions.

  8. GitHub Actions mengaktifkan CD ke AKS. Gunakan GitHub Advanced Security untuk mendeteksi rahasia, kredensial, dan informasi sensitif lainnya di sumber aplikasi dan file konfigurasi Anda.

  9. Pertahanan Microsoft memindai Container Registry, kluster AKS, dan Azure Key Vault untuk kerentanan keamanan.

    1. Pertahanan Microsoft untuk Kontainer memindai gambar kontainer untuk kerentanan keamanan yang diketahui saat GitHub Actions mengunggahnya ke Container Registry.

    2. Defender untuk Kontainer juga dapat memindai lingkungan AKS Anda dan memberikan perlindungan ancaman runtime untuk kluster AKS Anda.

    3. Microsoft Defender untuk Key Vault mendeteksi upaya yang tidak biasa dan mencurigakan untuk mengakses akun Key Vault.

  10. Anda dapat menerapkan Azure Policy ke Container Registry dan AKS untuk menerapkan kepatuhan kebijakan. Azure Policy mencakup kebijakan keamanan bawaan untuk Container Registry dan AKS.

  11. Key Vault dengan aman menyuntikkan rahasia dan kredensial ke dalam aplikasi saat runtime tanpa mengeksposnya ke pengembang.

  12. Mesin kebijakan jaringan AKS dikonfigurasi untuk membantu mengamankan lalu lintas antar pod aplikasi dengan menggunakan kebijakan jaringan Kubernetes. Kami merekomendasikan Azure CNI Powered by Cilium sebagai mesin kebijakan jaringan. Ini menyediakan penegakan berbasis Filter Paket Berkeley (eBPF) yang diperluas, kebijakan lapisan-7, dan pemfilteran nama domain yang sepenuhnya memenuhi syarat (FQDN).

  13. Anda dapat menyiapkan pemantauan berkelanjutan kluster AKS dengan menggunakan Azure Monitor untuk mengumpulkan metrik Prometheus, log kontainer, dan peristiwa Kubernetes. Gunakan dasbor Azure Managed Grafana untuk visualisasi dan Analitik Log untuk pemberitahuan berbasis kueri.

    1. Azure Monitor mengumpulkan metrik performa melalui Prometheus Terkelola dan log aplikasi dan kluster melalui pengumpulan log kontainer.

    2. Ruang kerja Analitik Log menyimpan log diagnostik dan aplikasi untuk menjalankan kueri log.

  14. Gunakan Microsoft Sentinel sebagai informasi keamanan terpusat dan manajemen peristiwa (SIEM) untuk menghubungkan telemetri AKS dengan sinyal dari Pertahanan Microsoft untuk Cloud, ID Microsoft Entra, dan sumber daya jaringan. Microsoft Sentinel menyediakan deteksi, investigasi, dan respons otomatis terhadap insiden keamanan di seluruh lingkungan AKS.

  15. Alat sumber terbuka seperti Zed Attack Proxy (ZAP) dapat melakukan pengujian penetrasi untuk aplikasi dan layanan web.

  16. Defender untuk DevOps, layanan yang tersedia di Defender for Cloud, memberdayakan tim keamanan untuk mengelola keamanan DevOps di seluruh lingkungan multipipeline, termasuk GitHub dan Azure DevOps.

Gambaran umum dan tanggung jawab anggota tim

Pertimbangkan untuk mengelola kompleksitas DevSecOps pada penyebaran solusi berbasis Kubernetes dengan membagi tanggung jawab di antara tim. Bagian ini menjelaskan peran dan tanggung jawab pengembang, operator aplikasi seperti teknisi keandalan situs, operator kluster, dan tim keamanan.

Pengembang

Pengembang menulis kode aplikasi dan menerapkannya ke repositori yang ditunjuk. Mereka menulis dan menjalankan skrip untuk pengujian otomatis untuk memastikan bahwa kode mereka berfungsi seperti yang dimaksudkan dan terintegrasi dengan aplikasi lainnya. Pengembang juga mendefinisikan dan membuat skrip pembuatan gambar kontainer sebagai bagian dari alur otomatisasi.

Operator aplikasi (teknisi keandalan situs)

Membangun aplikasi dengan menggunakan kontainer dan Kubernetes dapat menyederhanakan pengembangan, penyebaran, dan skalabilitas aplikasi. Tetapi pendekatan pengembangan ini juga menciptakan lingkungan yang semakin terdistribusi yang mempersulit administrasi.

Teknisi keandalan situs membangun solusi yang mengotomatiskan cara tim mengawasi sistem perangkat lunak besar. Mereka berfungsi sebagai jembatan antara tim operator pengembangan dan kluster. Mereka membantu menetapkan dan memantau tujuan tingkat layanan (SLA) dan anggaran kesalahan. Teknisi keandalan situs juga membantu mengelola penyebaran aplikasi dan menulis file manifes Kubernetes (YAML).

Operator kluster

Operator kluster mengonfigurasi dan mengelola infrastruktur kluster. Mereka sering menggunakan praktik dan kerangka kerja terbaik infrastruktur sebagai kode (IaC) seperti GitOps untuk menyediakan dan memelihara kluster mereka. Mereka menggunakan alat pemantauan seperti layanan terkelola Azure Monitor untuk Prometheus dan Azure Managed Grafana untuk memantau kesehatan kluster secara keseluruhan. Mereka bertanggung jawab untuk patching, peningkatan kluster, izin, dan kontrol akses berbasis peran (RBAC) pada kluster. Di tim DevSecOps, operator kluster berkolaborasi dengan tim keamanan untuk menetapkan standar keamanan dan memastikan bahwa kluster memenuhi persyaratan tersebut.

Tim keamanan

Tim keamanan mengembangkan dan memberlakukan standar keamanan. Beberapa tim mungkin membuat dan memilih definisi Azure Policy yang Anda tertibkan di seluruh langganan dan grup sumber daya yang berisi kluster. Tim keamanan memantau masalah keamanan dan bekerja sama dengan tim lain untuk memprioritaskan keamanan sepanjang proses DevSecOps.

Tahap siklus hidup DevSecOps

Setiap fase SDLC menerapkan kontrol keamanan. Kontrol keamanan ini penting dalam DevSecOps dan praktik shift-left dalam pengembangan perangkat lunak.

Diagram yang menunjukkan siklus hidup DevOps berkelanjutan yang mengintegrasikan keamanan di semua tahap.

Unduh sebuah file Visio dari arsitektur ini.

Fase rencana

Fase rencana biasanya memiliki jumlah otomatisasi paling sedikit, tetapi memiliki implikasi keamanan penting yang memengaruhi tahap siklus hidup DevOps nanti. Fase ini melibatkan kolaborasi antara tim keamanan, pengembangan, dan operasi. Untuk memastikan bahwa Anda memperhitungkan atau mengurangi persyaratan keamanan dan masalah keamanan, sertakan pemangku kepentingan keamanan dalam fase ini.

Praktik terbaik: Merancang platform aplikasi yang aman

Untuk membangun beban kerja yang dihosting AKS yang aman, Anda harus memasukkan keamanan ke dalam sistem di setiap lapisan, dimulai dengan platform itu sendiri. Platform ini dapat mencakup komponen internal ke kluster, seperti agen keamanan dan kebijakan runtime, dan komponen di luar AKS, seperti firewall jaringan dan registri kontainer.

Praktik terbaik: Membangun pemodelan ancaman ke dalam proses Anda

Pemodelan ancaman biasanya merupakan aktivitas manual yang melibatkan tim keamanan dan pengembangan. Anda dapat memodelkan dan menemukan ancaman dalam sistem untuk mengatasi kerentanan sebelum mengembangkan kode atau membuat perubahan. Teams melakukan pemodelan ancaman sebagai respons terhadap perubahan perangkat lunak yang signifikan, perubahan arsitektur solusi, atau insiden keamanan.

Kami merekomendasikan model ancaman STRIDE. Metodologi ini dimulai dengan diagram aliran data dan mengategorikan ancaman dengan menggunakan mnemonic STRIDE: Spoofing, Tampering, Repudiation, Info Disclosure, Denial of Service, dan Elevation of Privilege. Teams menggunakan kategori ini untuk mengidentifikasi, mengurangi, dan memvalidasi risiko. Alat pemodelan membantu memberi tahu dan memvisualisasikan komponen sistem, aliran data, dan batas keamanan.

Membangun pemodelan ancaman ke dalam SDLC Anda menambah beban proses dan mengharuskan Anda mempertahankan model ancaman yang diperbarui. Namun, ini membahas keamanan di awal pengembangan, yang mengurangi biaya perbaikan masalah yang ditemukan kemudian.

Praktik terbaik: Menerapkan Azure Well-Architected Framework

  • Terapkan praktik terbaik Keamanan yang memberikan panduan untuk manajemen identitas, keamanan aplikasi, perlindungan infrastruktur, keamanan data, dan DevOps seperti yang berlaku untuk lingkungan cloud-native.

  • Terapkan praktik terbaik Keunggulan Operasional karena berlaku untuk DevSecOps dan pemantauan lingkungan produksi Anda.

Fase pengembangan

Shifting left adalah prinsip utama dari pola pikir DevSecOps. Proses ini dimulai sebelum Anda menerapkan kode ke dalam repositori dan menyebarkannya melalui alur. Untuk mengatasi masalah keamanan sebelumnya dalam siklus hidup pengembangan, adopsi praktik terbaik pengodean yang aman dan gunakan alat dan plugin lingkungan pengembangan terintegrasi (IDE) untuk analisis kode selama fase pengembangan.

Praktik terbaik: Menerapkan standar pengodean yang aman

  • Gunakan praktik terbaik dan daftar periksa pengodean aman yang mapan untuk membantu melindungi kode Anda dari kerentanan umum seperti injeksi dan desain yang tidak aman. Yayasan Open Worldwide Application Security Project (OWASP) menerbitkan rekomendasi pengodean aman standar industri yang harus Anda adopsi saat menulis kode. Pedoman ini sangat penting ketika Anda mengembangkan aplikasi atau layanan web yang menghadap publik.

  • Tinjau praktik pengkodian aman untuk runtime bahasa pemrograman spesifik Anda, seperti Java dan .NET.

  • Terapkan standar pengelogan untuk melindungi informasi sensitif agar tidak bocor ke log aplikasi. Kerangka kerja pengelogan paling populer, seperti Apache Log4j dan Apache log4net, menyediakan filter dan plugin untuk menutupi informasi sensitif, seperti nomor akun atau data pribadi.

Praktik terbaik: Gunakan alat dan plugin IDE untuk mengotomatiskan pemeriksaan keamanan

ID Paling populer, seperti Visual Studio, VS Code, IntelliJ IDEA, dan Eclipse, mendukung ekstensi yang dapat Anda gunakan untuk mendapatkan umpan balik dan rekomendasi segera untuk potensi masalah keamanan yang Anda perkenalkan saat Anda menulis kode aplikasi.

  • SonarQube untuk IDE adalah plugin IDE untuk bahasa dan lingkungan pengembang paling populer. SonarQube untuk IDE memberikan umpan balik dan secara otomatis memindai kode Anda untuk kesalahan pemrograman umum dan potensi masalah keamanan.

  • Plugin gratis dan komersial lainnya berfokus pada item khusus keamanan, seperti 10 kerentanan umum teratas OWASP. Plugin Snyk juga memindai sumber aplikasi dan dependensi eksternal Anda dan memberi tahu Anda jika menemukan kerentanan.

  • Plugin Static Analysis Results Interchange Format (SARIF) untuk Visual Studio dan VS Code memungkinkan Anda dengan mudah melihat kerentanan dari alat Static Application Security Testing (SAST) populer versus menginterpretasikan hasil dari file output JSON mentah.

Praktik terbaik: Membuat kontrol pada repositori kode sumber Anda

  • Buat metodologi percabangan untuk konsistensi di seluruh perusahaan Anda. Metodologi seperti Alur rilis dan alur GitHub memiliki panduan terstruktur tentang cara menggunakan cabang untuk mendukung tim dan pengembangan paralel. Metodologi ini dapat membantu tim menetapkan standar dan kontrol untuk penerapan kode dan penggabungan ke dalam alur kerja CI/CD Anda.

    Cabang tertentu, seperti utama, adalah cabang jangka panjang yang mempertahankan integritas kode sumber aplikasi Anda. Tetapkan kebijakan penggabungan untuk cabang-cabang ini sebelum Anda menerapkan atau menggabungkan perubahan. Misalnya, Anda dapat:

    • Cegah pengembang lain menerapkan kode langsung ke cabang utama Anda.

    • Buat proses tinjauan rekan dan memerlukan beberapa persetujuan minimum sebelum perubahan digabungkan ke cabang utama. Konfigurasikan dan terapkan kontrol ini dengan menggunakan GitHub. Gunakan GitHub untuk menunjuk grup pemberi persetujuan resmi jika perlu untuk lingkungan yang terjaga kelewat batasnya.

  • Gunakan prakomit hooks untuk memeriksa informasi sensitif dalam kode sumber aplikasi Anda dan memblokir commit saat mendeteksi masalah keamanan.

    • Gunakan kait prakomit bawaan yang disediakan GitHub. Konfigurasikan dengan mudah untuk proyek tertentu. Misalnya, beberapa kait bawaan memindai rahasia, kunci privat, dan kredensial dan memblokir penerapan jika menemukan masalah ini.
  • Terapkan RBAC dalam sistem kontrol versi Anda.

    • Buat peran yang terdefinisi dengan baik dengan menggunakan prinsip hak istimewa paling sedikit. Alur CI/CD berfungsi sebagai rantai pasokan Anda untuk penyebaran produksi.

    • Terapkan peran pengguna atau grup yang ditetapkan dalam organisasi Anda. Untuk mengelompokkan individu berdasarkan peran dan fungsi spesifik mereka dalam alur kerja CI/CD Anda, buat peran seperti Admin, Pengembang, Admin Keamanan, dan Operator.

  • Aktifkan audit alur kerja Anda untuk menambahkan transparansi dan keterlacakan untuk konfigurasi dan perubahan lain pada alur CI/CD Anda.

Praktik terbaik: Mengamankan gambar kontainer Anda

  • Gunakan gambar ringan yang memiliki jejak OS minimal untuk mengurangi permukaan serangan secara keseluruhan. Pertimbangkan gambar minimal seperti Alpine atau gambar tanpa distribusi yang hanya berisi aplikasi Anda dan runtime yang terkait.

  • Gunakan hanya gambar dasar tepercaya saat Anda membangun kontainer Anda. Ambil gambar dasar ini dari registri privat yang Anda sering pindai untuk kerentanan.

  • Gunakan alat pengembang untuk mengevaluasi kerentanan gambar secara lokal. Trivy adalah alat sumber terbuka yang menganalisis kerentanan keamanan dalam gambar kontainer Anda.

  • Mencegah akses atau konteks pengguna root untuk gambar. Secara default, kontainer berjalan sebagai root.

    Untuk kontainer yang membutuhkan keamanan yang ditingkatkan, pertimbangkan untuk menggunakan profil AppArmor atau seccomp dalam kluster Kubernetes Anda untuk lebih membantu menegakkan keamanan untuk kontainer yang sedang berjalan.

Fase pembangunan

Selama fase build, pengembang bekerja dengan teknisi keandalan situs dan tim keamanan untuk mengintegrasikan pemindaian otomatis sumber aplikasi mereka dalam alur build CI mereka. Teams mengonfigurasi jalur pengiriman untuk mendukung praktik keamanan dengan menggunakan alat dan ekstensi keamanan dari platform CI/CD. Praktik ini termasuk SAST, analisis komposisi perangkat lunak (SCA), dan pemindaian rahasia.

Praktik terbaik: Lakukan SAST untuk menemukan potensi kerentanan dalam kode sumber aplikasi Anda

  • Gunakan kemampuan pemindaian Keamanan Tingkat Lanjut GitHub untuk pemindaian kode dan CodeQL.

    • Pemindaian kode adalah fitur yang menganalisis kode dalam repositori GitHub untuk menemukan kerentanan keamanan dan kesalahan pengodean. Ini menampilkan masalah di GitHub Enterprise Cloud.

    • Jika pemindaian kode menemukan potensi kerentanan atau kesalahan dalam kode Anda, GitHub menampilkan pemberitahuan di repositori.

    • Anda dapat mengonfigurasi aturan cabang untuk pemeriksaan status yang diperlukan. Misalnya, Anda dapat mengharuskan cabang fitur diperbarui dengan cabang dasar sebelum Anda menggabungkan kode baru. Persyaratan ini memastikan bahwa Anda menguji cabang Anda dengan kode terbaru.

    • Aktifkan Copilot Autofix untuk menerima saran perbaikan yang dihasilkan AI untuk pemberitahuan pemindaian kode. Copilot Autofix mengusulkan remediasi langsung dalam permintaan pull, yang membantu pengembang menyelesaikan temuan keamanan dengan cepat.

  • Gunakan alat seperti kube-score untuk menganalisis objek penyebaran Kubernetes Anda. Alat ini melakukan analisis kode statis dari definisi objek Kubernetes Anda. Ini menghasilkan daftar rekomendasi untuk membuat aplikasi Anda lebih aman dan tangguh.

Praktik terbaik: Gunakan pemindaian rahasia untuk mendeteksi rahasia yang diterapkan secara tidak sengaja

  • Saat Anda mengaktifkan pemindaian rahasia untuk repositori, GitHub memindai kode untuk pola yang cocok dengan rahasia yang digunakan banyak penyedia layanan.

  • GitHub secara berkala menjalankan pemindaian lengkap riwayat git dari konten yang ada di repositori dan mengirim pemberitahuan.

    • Untuk Azure DevOps, Defender for Cloud menggunakan pemindaian rahasia untuk mendeteksi kredensial, rahasia, sertifikat, dan konten sensitif lainnya dalam kode sumber dan output build Anda.

    • Anda dapat menjalankan pemindaian rahasia sebagai bagian dari ekstensi Microsoft Security DevOps untuk Azure DevOps.

Praktik terbaik: Gunakan alat SCA untuk melacak komponen sumber terbuka di basis kode dan mendeteksi kerentanan dalam dependensi

  • Tinjauan dependensi memungkinkan Anda menangkap dependensi yang tidak aman sebelum memperkenalkannya ke lingkungan Anda. Ini juga menyediakan informasi tentang lisensi, ketergantungan, dan usia ketergantungan. Ini menampilkan perubahan dependensi melalui diff kaya pada tab File yang diubah dari permintaan pull.

  • Dependabot melakukan pemindaian untuk mendeteksi dependensi yang tidak aman dan mengirim pemberitahuan Dependabot saat saran baru ditambahkan ke Database Penasihat GitHub atau ketika grafik dependensi untuk repositori berubah.

Praktik terbaik: Hasilkan SBOM untuk gambar kontainer Anda

  • Daftar bahan perangkat lunak (SBOM) menyediakan inventaris lengkap komponen, pustaka, dan dependensi yang membentuk citra kontainer Anda. Gunakan alat generasi SBOM seperti Microsoft sbom-tool atau Syft selama build CI untuk menghasilkan manifes SPDX atau CycloneDX.

  • Lampirkan SBOM ke gambar kontainer Anda yang disimpan di Container Registry untuk mengaktifkan pemindaian kerentanan hilir dan pelacakan kepatuhan lisensi di seluruh rantai pasokan.

Praktik terbaik: Memindai templat IaC untuk mendeteksi kesalahan konfigurasi sebelum penyebaran

  • Pantau konfigurasi sumber daya cloud secara proaktif sepanjang siklus hidup pengembangan.

  • Pertahanan Microsoft untuk DevOps mendukung repositori GitHub dan Azure DevOps dan dapat memindai templat IaC untuk mengidentifikasi kerentanan IaC.

Praktik terbaik: Memindai gambar beban kerja Anda di registri kontainer untuk mengidentifikasi kerentanan yang diketahui

  • Defender for Containers memindai kontainer di Container Registry dan Amazon Elastic Container Registry (ECR) untuk memberi tahu Anda tentang kerentanan yang diketahui dalam gambar Anda.

  • Anda dapat mengaktifkan Azure Policy untuk melakukan penilaian kerentanan pada gambar yang disimpan di Container Registry dan memberikan informasi terperinci tentang setiap temuan.

Praktik terbaik: Membangun gambar baru pada pembaruan gambar dasar secara otomatis

  • Tugas Container Registry secara dinamis menemukan dependensi gambar dasar saat membangun gambar kontainer. Saat mendeteksi pembaruan pada gambar dasar gambar aplikasi, Anda dapat mengonfigurasi tugas build untuk membangun ulang gambar aplikasi secara otomatis yang mereferensikan gambar dasar tersebut.

Praktik terbaik: Gunakan Container Registry, Key Vault, dan notasi untuk menandatangani gambar kontainer Anda secara digital dan mengonfigurasi kluster AKS untuk hanya mengizinkan gambar yang divalidasi

  • Key Vault menyimpan kunci penandatanganan yang digunakan alat notasi . Plugin Notasi Key Vault (azure-kv) mengakses kunci-kunci ini untuk menandatangani dan memverifikasi image kontainer dan artefak lainnya. Anda dapat melampirkan tanda tangan ini ke gambar Container Registry dengan menggunakan perintah Azure CLI.

  • Kontainer yang ditandatangani memastikan bahwa penyebaran berasal dari sumber tepercaya dan artefak tersebut tidak dirusak setelah pembuatan. Artefak yang ditandatangani memastikan integritas dan keaslian sebelum pengguna menarik artefak ke lingkungan apa pun, yang membantu menghindari serangan.

    • Ratify memverifikasi metadata keamanan artefak dan memberlakukan kebijakan penerimaan sebelum penyebaran ke kluster Kubernetes. Integritas Gambar AKS menggunakan Ratify sebagai pemverifikasi bawaan untuk memvalidasi tanda tangan gambar dan pengesahan SBOM sebelum pod dimasukkan ke kluster.

Fase penyebaran

Selama fase penyebaran, pengembang, operator aplikasi, dan tim operator kluster bekerja sama untuk membangun kontrol keamanan yang tepat untuk alur CD. Kontrol ini membantu menyebarkan kode ke lingkungan produksi dengan cara yang aman dan otomatis.

Praktik terbaik: Mengontrol akses dan alur kerja alur penyebaran

  • Anda dapat melindungi cabang penting dengan mengatur aturan perlindungan cabang. Aturan ini menentukan apakah kolaborator dapat menghapus atau memaksa push ke cabang. Mereka juga menetapkan persyaratan untuk pendorongan ke cabang, seperti melewati pemeriksaan status atau riwayat penerapan linier.

  • Gunakan lingkungan untuk mengonfigurasi aturan perlindungan dan rahasia saat penyebaran.

  • Gunakan fitur persetujuan dan gerbang untuk mengontrol alur kerja alur penyebaran. Misalnya, Anda dapat memerlukan persetujuan manual dari tim keamanan atau operasi sebelum menyebarkan ke lingkungan produksi.

Praktik terbaik: Kredensial penyebaran yang aman

  • OpenID Connect (OIDC) memungkinkan alur kerja GitHub Action Anda mengakses sumber daya di Azure tanpa perlu menyimpan kredensial Azure sebagai rahasia GitHub berumur panjang.

  • Gunakan pendekatan berbasis pull untuk CI/CD dengan GitOps untuk mengalihkan kredensial keamanan ke kluster Kubernetes Anda. Pendekatan ini mengurangi permukaan keamanan dan risiko dengan menghapus kredensial dari alat CI eksternal Anda. Anda juga dapat mengurangi koneksi masuk yang diizinkan dan membatasi akses tingkat admin ke kluster Kubernetes Anda.

Praktik terbaik: Jalankan DAST untuk menemukan kerentanan dalam aplikasi Anda yang sedang berjalan

  • Gunakan GitHub Actions dalam alur kerja penyebaran untuk menjalankan pengujian keamanan aplikasi dinamis (DAST).

  • Gunakan alat sumber terbuka seperti ZAP untuk melakukan pengujian penetrasi untuk kerentanan aplikasi web umum.

Praktik terbaik: Sebarkan gambar kontainer hanya dari registri tepercaya

  • Gunakan Defender untuk Kontainer untuk mengaktifkan add-on Azure Policy untuk Kubernetes.

  • Konfigurasikan Azure Policy untuk Kubernetes untuk membatasi penyebaran gambar kontainer ke registri tepercaya.

Fase operasi

Selama fase ini, lakukan tugas pemantauan operasi dan pemantauan keamanan untuk memantau, menganalisis, dan memperingatkan potensi insiden keamanan secara proaktif. Gunakan alat pengamatan produksi seperti Azure Monitor dan Microsoft Sentinel untuk memantau dan memastikan kepatuhan terhadap standar keamanan perusahaan.

Praktik terbaik: Gunakan Defender for Cloud untuk memindai dan memantau konfigurasi produksi Anda secara otomatis

  • Jalankan pemindaian berkelanjutan untuk mendeteksi penyimpangan dalam status kerentanan aplikasi Anda dan terapkan proses untuk menambal dan mengganti gambar yang rentan.

  • Terapkan pemantauan konfigurasi otomatis untuk sistem operasi.

    • Gunakan rekomendasi kontainer di Defender for Cloud (di bawah Komputasi dan aplikasi) untuk melakukan pemindaian dasar untuk kluster AKS Anda. Defender for Cloud menampilkan masalah atau kerentanan konfigurasi apa pun di dasbornya.

    • Gunakan Defender untuk Cloud dan ikuti rekomendasi perlindungan jaringannya untuk membantu mengamankan sumber daya jaringan kluster AKS Anda.

  • Lakukan penilaian kerentanan untuk gambar yang disimpan di Container Registry.

    • Terapkan pemindaian berkelanjutan untuk menjalankan gambar di Container Registry dengan mengaktifkan Defender untuk Kontainer.

Praktik terbaik: Selalu perbarui kluster Kubernetes Anda

  • Kubernetes sering merilis versi baru. Pertahankan strategi manajemen siklus hidup untuk menjaga kluster Anda tetap didukung dan up-to-date. AKS menyediakan alat untuk mengelola peningkatan kluster. Gunakan fitur pemeliharaan terencana AKS untuk mengontrol kapan jendela pemeliharaan dan peningkatan terjadi.

  • Upgrade sering node pekerja AKS. Azure merilis pembaruan OS dan runtime mingguan. Terapkan pembaruan ini secara otomatis melalui mode tanpa pengawasan atau secara manual melalui Azure CLI untuk kontrol lebih lanjut.

Praktik terbaik: Gunakan Azure Policy untuk mengamankan dan mengatur kluster AKS Anda

  • Setelah menginstal add-on Azure Policy untuk AKS, Anda dapat menerapkan definisi kebijakan individual atau grup definisi kebijakan, yang disebut inisiatif atau set kebijakan, ke kluster Anda.

  • Gunakan kebijakan Azure bawaan untuk skenario umum seperti mencegah kontainer istimewa menjalankan atau membatasi alamat IP eksternal ke daftar yang diizinkan. Anda juga dapat membuat kebijakan kustom untuk kasus penggunaan tertentu.

  • Terapkan definisi kebijakan ke kluster Anda dan verifikasi bahwa Azure Policy memberlakukan penetapan tersebut.

  • Gunakan Gatekeeper untuk mengonfigurasi pengontrol penerimaan yang memungkinkan atau menolak penyebaran berdasarkan aturan yang ditentukan. Azure Policy memperluas Gatekeeper.

  • Amankan lalu lintas antar pod beban kerja dengan menggunakan kebijakan jaringan di AKS.

    • Gunakan Azure CNI Powered by Cilium sebagai mesin kebijakan jaringan. Cilium menggunakan sarana data berbasis eBPF dan mendukung kebijakan asli Kubernetes, kebijakan lapisan-7, dan pemfilteran FQDN.

Praktik terbaik: Menggunakan Azure Monitor untuk pemantauan dan pemberitahuan berkelanjutan

  • Gunakan Azure Monitor untuk mengumpulkan log dan metrik dari AKS. Kumpulkan metrik Prometheus melalui layanan terkelola Azure Monitor untuk Prometheus, kontainer kueri dan log platform di Log Analytics, dan visualisasikan kesehatan kluster melalui dasbor Azure Managed Grafana .

    • Azure Monitor memperluas pemantauan berkelanjutan ke pipeline rilis. Gunakan data pemantauan untuk menyetujui atau mengembalikan rilis. Azure Monitor juga menyerap log keamanan dan pemberitahuan tentang aktivitas yang mencurigakan.

    • Daftarkan instans AKS Anda ke Azure Monitor dan konfigurasikan pengaturan diagnostik untuk kluster Anda.

      Untuk informasi selengkapnya, lihat Garis besar keamanan Azure untuk AKS.

Praktik terbaik: Gunakan Defender for Cloud untuk pemantauan ancaman aktif

  • Defender for Cloud menyediakan pemantauan ancaman aktif untuk AKS di tingkat node (ancaman VM) dan beban kerja kluster.

  • Gunakan Defender untuk DevOps untuk mendapatkan visibilitas komprehensif di semua alur CI/CD. Ini menyediakan tim keamanan dan operator dengan dasbor terpusat. Anda mendapat manfaat terutama dari visibilitas terpusat ini ketika Anda menggunakan platform alur kerja ganda seperti Azure DevOps dan GitHub atau menjalankan alur di seluruh cloud publik.

  • Defender untuk Key Vault mendeteksi upaya yang tidak biasa dan mencurigakan untuk mengakses akun brankas kunci dan dapat mengirim pemberitahuan ke administrator berdasarkan konfigurasi.

  • Defender untuk Kontainer dapat memperingatkan kerentanan yang ditemukan dalam gambar kontainer Anda yang disimpan di Container Registry.

Praktik terbaik: Mengaktifkan pemantauan log terpusat dan menggunakan produk SIEM untuk memantau ancaman keamanan real time

  • Sambungkan log diagnostik AKS ke Microsoft Sentinel untuk pemantauan keamanan terpusat berdasarkan pola dan aturan. Microsoft Sentinel memungkinkan akses ini melalui konektor data.

Praktik terbaik: Mengaktifkan pengelogan audit untuk memantau aktivitas pada kluster produksi Anda

  • Gunakan log aktivitas untuk memantau tindakan pada sumber daya AKS untuk melihat semua aktivitas dan statusnya. Tentukan siapa yang melakukan operasi apa pada sumber daya.

  • Aktifkan pengelogan kueri Sistem Nama Domain (DNS) dengan menerapkan konfigurasi terdokumen di ConfigMap kustom CoreDNS Anda.

  • Memantau upaya untuk mengakses kredensial yang dinonaktifkan.

    Integrasikan autentikasi pengguna untuk AKS dengan Microsoft Entra ID. Buat pengaturan diagnostik untuk Microsoft Entra ID dan kirim log audit dan masuk ke ruang kerja Log Analytics. Dalam ruang kerja Analitik Log, konfigurasikan pemberitahuan untuk peristiwa keamanan, seperti upaya masuk dari akun yang dinonaktifkan.

Praktik terbaik: Mengaktifkan diagnostik pada sumber daya Azure Anda

  • Aktifkan diagnostik Azure di semua sumber daya beban kerja Anda untuk mengakses log platform yang menyediakan informasi diagnostik dan audit terperinci. Anda dapat menyerap log ini ke Log Analytics atau solusi SIEM seperti Microsoft Sentinel untuk pemantauan dan pemberitahuan keamanan.

Kontributor

Microsoft mempertahankan artikel ini. Kontributor berikut menulis artikel ini.

Penulis utama:

Kontributor lain:

Untuk melihat profil LinkedIn nonpublik, masuk ke LinkedIn.

Langkah berikutnya