DevSecOps di Azure Kubernetes Service (AKS)

Azure Boards
Azure DevOps
Azure Monitor
Azure Pipelines
Azure Policy

DevSecOps, juga disebut Secure DevOps, dibangun berdasarkan praktik DevOps dengan menggabungkan keamanan pada berbagai tahap siklus hidup DevOps tradisional. Beberapa manfaat membangun keamanan dalam praktik DevOps meliputi:

  • Membuat aplikasi dan sistem Anda lebih aman dengan memberikan visibilitas ke dalam ancaman keamanan dan mencegah kerentanan menjangkau lingkungan yang disebarkan
  • Meningkatkan kesadaran keamanan dengan tim pengembangan dan operasi Anda
  • Menggabungkan proses keamanan otomatis ke dalam siklus hidup pengembangan perangkat lunak Anda
  • Mengurangi biaya untuk diremediasi dengan menemukan masalah keamanan di awal tahap pengembangan dan desain

Ketika DevSecOps diterapkan ke Azure Kubernetes Service (AKS), peran organisasi yang berbeda dapat memiliki pertimbangan yang berbeda untuk menerapkan keamanan. Contoh peran organisasi yang berbeda ini adalah:

  • Pengembang membangun aplikasi aman yang berjalan di AKS
  • Teknisi Cloud membangun infrastruktur AKS yang aman
  • Berbagai tim Operasi yang mungkin mengatur kluster atau memantau masalah keamanan

Artikel ini dipecah menjadi tahap siklus hidup DevOps yang berbeda dengan pertimbangan dan rekomendasi untuk menyematkan kontrol keamanan dan praktik terbaik keamanan. Panduan ini mencakup proses dan alat umum untuk dimasukkan ke dalam alur integrasi berkelanjutan dan pengiriman berkelanjutan (CI/CD), memilih alat bawaan yang mudah digunakan jika tersedia.

Sebagai prasyarat untuk artikel ini, kami sarankan Anda meninjau Membangun dan menyebarkan aplikasi di AKS dengan menggunakan DevOps dan GitOps.

Aliran proses

Diagram arsitektur menunjukkan alur dari pengembang ke pengguna akhir dan tempat DevSecOps dapat digunakan, DevSecOps di AKS.

Unduh file Visio arsitektur ini.

Catatan

Meskipun artikel ini mereferensikan AKS dan GitHub, rekomendasi ini berlaku untuk orkestrasi kontainer atau platform CI/CD apa pun. Meskipun detail implementasi mungkin bervariasi, sebagian besar konsep dan praktik yang disebutkan di setiap tahap masih relevan dan berlaku.

  1. ID Microsoft Entra 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 yang disimpan ke Azure Container Registry.
  7. Anda dapat memperkenalkan persetujuan manual untuk penyebaran ke lingkungan tertentu, seperti produksi, sebagai bagian dari alur kerja pengiriman berkelanjutan (CD) di GitHub Actions.
  8. GitHub Actions memungkinkan 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 digunakan untuk memindai Azure Container Registry, kluster AKS, dan Azure Key Vault untuk kerentanan keamanan.
    1. Pertahanan Microsoft untuk Kontainer memindai gambar kontainer untuk kerentanan keamanan yang diketahui setelah mengunggahnya ke Container Registry.
    2. Anda juga dapat menggunakan Defender untuk Kontainer untuk melakukan pemindaian lingkungan AKS Anda dan memberikan perlindungan ancaman run-time untuk kluster AKS Anda.
    3. Microsoft Defender untuk Key Vault mendeteksi upaya mencurigakan yang berbahaya dan tidak biasa untuk mengakses akun brankas kunci.
  10. Azure Policy dapat diterapkan ke Container Registry dan Azure Kubernetes Service (AKS) untuk kepatuhan dan penegakan kebijakan. Kebijakan keamanan umum untuk Container Registry dan AKS dibangun untuk pengaktifan cepat.
  11. Azure Key Vault digunakan untuk memasukkan rahasia dan kredensial dengan aman ke dalam aplikasi saat runtime, memisahkan informasi sensitif dari pengembang.
  12. Mesin kebijakan jaringan AKS dikonfigurasi untuk membantu mengamankan lalu lintas antar pod aplikasi dengan menggunakan kebijakan jaringan Kubernetes.
  13. Pemantauan berkelanjutan kluster AKS dapat disiapkan dengan menggunakan wawasan Azure Monitor dan Kontainer untuk menyerap metrik performa dan menganalisis log aplikasi dan keamanan.
    1. Wawasan kontainer mengambil metrik performa dan log aplikasi dan kluster.
    2. Log diagnostik dan aplikasi ditarik ke ruang kerja Azure Log Analytics untuk menjalankan kueri log.
  14. Microsoft Sentinel, yang merupakan solusi manajemen informasi dan peristiwa keamanan (SIEM), dapat digunakan untuk menyerap dan menganalisis lebih lanjut log kluster AKS untuk setiap ancaman keamanan berdasarkan pola dan aturan yang ditentukan.
  15. Alat Sumber Terbuka seperti Zed Attack Proxy (ZAP) (ZAP) dapat digunakan untuk melakukan pengujian penetrasi untuk aplikasi dan layanan web.
  16. Defender untuk DevOps, layanan yang tersedia di Defender untuk Cloud, memberdayakan tim keamanan untuk mengelola keamanan DevOps di seluruh lingkungan multi-alur termasuk GitHub dan Azure DevOps.

Gambaran umum dan tanggung jawab anggota tim

Pertimbangkan untuk mengelola kompleksitas DevSecOps pada penyebaran solusi berbasis Kubernetes sebagai pemisahan kekhawatiran. Tim mana di lingkungan perusahaan yang harus memperhatikan setiap aspek penyebaran? Alat dan proses apa yang harus dipekerjakan tim untuk mencapai tujuan mereka dengan terbaik? Di bagian ini, kita membahas peran umum pengembang, operator aplikasi (teknisi keandalan situs), operator kluster, dan tim keamanan.

Pengembang

Pengembang bertanggung jawab untuk menulis kode aplikasi. Mereka juga bertanggung jawab untuk menerapkan kode mereka ke repositori yang ditunjuk. Salah satu tanggung jawab penting pengembang juga mencakup penulisan dan menjalankan skrip untuk pengujian otomatis untuk memastikan kode mereka berfungsi sebagaimana mestinya dan terintegrasi dengan mulus dengan aplikasi lainnya. Mereka juga mendefinisikan dan membuat skrip bangunan gambar kontainer sebagai bagian dari alur otomatisasi.

Operator aplikasi (teknisi keandalan situs)

Membangun aplikasi di cloud 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 untuk mengotomatiskan pengawasan sistem perangkat lunak besar. Mereka berfungsi sebagai jembatan antara tim operator pengembangan dan kluster dan membantu membangun dan memantau tujuan tingkat layanan dan anggaran kesalahan. Dengan cara ini, mereka membantu mengelola penyebaran aplikasi dan sering menulis file manifes Kubernetes (YAML).

Operator kluster

Operator kluster bertanggung jawab untuk 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 berbagai alat pemantauan seperti wawasan Kontainer Azure Monitor dan Prometheus/Grafana untuk memantau kesehatan kluster secara keseluruhan. Mereka bertanggung jawab untuk patching, peningkatan kluster, izin, dan kontrol akses berbasis peran pada kluster. Di tim DevSecOps, mereka memastikan bahwa kluster memenuhi persyaratan keamanan tim, dan mereka bekerja dengan tim keamanan untuk membuat standar tersebut.

Tim keamanan

Tim keamanan bertanggung jawab untuk mengembangkan standar keamanan dan menegakkannya. Beberapa tim mungkin bertanggung jawab untuk membuat dan memilih Azure Policy yang diberlakukan dalam langganan dan grup sumber daya yang memegang kluster. Mereka memantau masalah keamanan, dan bersama dengan tim lain, memastikan bahwa keamanan dibawa ke garis depan dari setiap langkah proses DevSecOps.

Tahap siklus hidup DevSecOps

Kontrol keamanan diterapkan di setiap fase siklus hidup pengembangan perangkat lunak (SDLC). Implementasi ini adalah bagian kunci dari strategi DevSecOps dan pendekatan shift-left.

Diagram arsitektur menunjukkan alur dari pengembang ke pengguna akhir dan tempat DevSecOps dapat digunakan, DevSecOps di AKS.

Unduh file Visio arsitektur ini.

Fase rencana

Fase rencana biasanya memiliki jumlah otomatisasi paling sedikit, tetapi memiliki implikasi keamanan penting yang secara signifikan berdampak pada tahap siklus hidup DevOps nanti. Fase ini melibatkan kolaborasi antara tim keamanan, pengembangan, dan operasi. Termasuk pemangku kepentingan keamanan dalam fase desain dan perencanaan ini memastikan persyaratan keamanan dan masalah keamanan diperhitungkan atau dimitigasi dengan tepat.

Praktik Terbaik - Merancang platform aplikasi yang lebih aman

Membangun platform yang dihosting AKS yang lebih aman adalah langkah penting untuk membantu memastikan keamanan dibangun ke dalam sistem di setiap lapisan, dimulai dengan platform itu sendiri. Platform ini dapat mencakup komponen baik internal ke kluster (seperti keamanan runtime dan agen kebijakan) dan komponen yang berada di luar AKS (seperti firewall jaringan dan registri kontainer). Untuk informasi selengkapnya, lihat Akselerator zona Landing AKS, yang mencakup area desain penting seperti keamanan, identitas, dan topologi jaringan.

Praktik Terbaik - Membangun pemodelan ancaman ke dalam proses Anda

  • Pemodelan ancaman biasanya merupakan aktivitas manual yang melibatkan tim keamanan dan pengembangan. Ini digunakan untuk memodelkan dan menemukan ancaman dalam sistem sehingga kerentanan dapat diatasi sebelum pengembangan kode atau perubahan pada sistem. Pemodelan ancaman dapat terjadi pada waktu yang berbeda, dipicu oleh peristiwa seperti perubahan perangkat lunak yang signifikan, perubahan arsitektur solusi, atau insiden keamanan.
  • Kami sarankan Anda menggunakan model ancaman STRIDE. Metodologi ini dimulai dengan diagram aliran data dan menggunakan kategori ancaman STRIDE mnemonic (Spoofing, Tampering, Info Disclosure, Repudiation, Denial of Service, dan Elevation of Privilege) untuk memberdayakan tim untuk mengidentifikasi, mengurangi, dan memvalidasi risiko. Ini juga termasuk alat pemodelan untuk mencatat dan memvisualisasikan komponen sistem, aliran data, dan batas keamanan. Membangun pemodelan ancaman ke dalam proses SDLC Anda memperkenalkan proses baru dan lebih banyak pekerjaan untuk mempertahankan model ancaman yang diperbarui. Tetapi ini membantu memastikan keamanan diberlakukan lebih awal, yang membantu mengurangi biaya potensial untuk menangani masalah keamanan yang ditemukan di tahap SDLC nanti.

Praktik Terbaik - Menerapkan Azure Well Architect Framework (WAF)

  • Terapkan praktik terbaik pilar keamanan WAF yang memberikan panduan untuk hal-hal seperti manajemen identitas, keamanan aplikasi, perlindungan infrastruktur, keamanan tanggal, dan DevOps seperti yang berlaku untuk lingkungan asli cloud.
  • Terapkan praktik terbaik operasional WAF karena berlaku untuk DevSecOps dan pemantauan lingkungan produksi Anda.

Fase pengembangan

"Bergeser ke kiri" adalah penyewa utama dari pola pikir DevSecOps. Proses ini dimulai sebelum kode bahkan diterapkan ke dalam repositori dan disebarkan melalui alur. Mengadopsi praktik terbaik pengodean yang aman dan menggunakan alat dan plugin IDE untuk analisis kode selama fase pengembangan dapat membantu mengatasi masalah keamanan sebelumnya dalam siklus hidup pengembangan ketika lebih mudah diperbaiki.

Praktik Terbaik - Menerapkan standar pengodean yang aman

  • Dengan menggunakan praktik terbaik dan daftar periksa pengodean aman yang mapan, Anda dapat membantu melindungi kode Anda dari kerentanan umum seperti injeksi dan desain yang tidak aman. Yayasan OWASP menerbitkan rekomendasi pengodean aman standar industri yang harus Anda adopsi saat menulis kode. Pedoman ini sangat penting saat mengembangkan aplikasi atau layanan web yang menghadap publik.
  • Selain praktik terbaik keamanan umum, Anda juga harus melihat praktik pengodean yang aman untuk runtime bahasa pemrograman spesifik Anda, seperti Java dan .NET.
  • Anda dapat menerapkan standar pengelogan untuk melindungi informasi sensitif agar tidak bocor ke log aplikasi. Kerangka kerja pengelogan paling populer, seperti log4j dan 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, Visual Studio Code, IntelliJ IDEA, dan Eclipse, mendukung ekstensi yang dapat Anda gunakan untuk mendapatkan umpan balik dan rekomendasi segera untuk potensi masalah keamanan yang mungkin telah Anda perkenalkan saat menulis kode aplikasi.

  • SonarLint adalah plugin IDE yang tersedia untuk bahasa dan lingkungan pengembang paling populer. SonarLint memberikan umpan balik yang berharga 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 Synk , misalnya, juga memindai sumber aplikasi Anda dan dependensi pihak ketiga dan memberi tahu Anda jika ada kerentanan yang ditemukan.
  • Plugin Static Analysis Results Interchange Format (SARIF) untuk Visual Studio dan Visual Studio Code memungkinkan Anda dengan mudah melihat kerentanan dari alat Static Application Security Testing (SAST) populer dengan cara yang intuitif dan mudah dibaca versus menafsirkan hasil dari file output JSON mentah.

Praktik terbaik - Membuat kontrol pada repositori kode sumber Anda

  • Tetapkan metodologi percabangan sehingga ada penggunaan percabangan yang konsisten di seluruh perusahaan. Metodologi seperti Alur rilis dan alur GitHub memiliki pedoman terstruktur tentang bagaimana cabang harus digunakan 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. Cabang-cabang ini harus telah menetapkan kebijakan penggabungan sebelum perubahan dapat digabungkan atau diterapkan ke dalamnya. Beberapa praktik terbaik meliputi:
    • Cegah pengembang lain menerapkan kode langsung ke cabang utama Anda.
    • Tetapkan proses peninjauan serekan dan memerlukan jumlah persetujuan minimum sebelum perubahan dapat digabungkan ke cabang utama. Anda dapat dengan mudah mengonfigurasi dan menerapkan kontrol ini dengan GitHub. GitHub juga memungkinkan Anda menunjuk grup pemberi izin yang berwenang jika perlu untuk lingkungan yang terjaga.
  • Gunakan hook pra-penerapan untuk memeriksa informasi sensitif dalam kode sumber aplikasi Anda dan mencegah penerapan terjadi jika masalah keamanan ditemukan.
    • Gunakan kait pra-penerapan bawaan yang disediakan GitHub yang dapat dengan mudah dikonfigurasi untuk proyek tertentu. Misalnya, ada kait bawaan untuk memindai rahasia, kunci privat, dan kredensial, dan mencegah penerapan jika salah satu masalah ini ditemukan.
  • Buat kontrol akses berbasis peran dalam sistem kontrol versi Anda.
    • Buat peran yang terdefinisi dengan baik dengan menggunakan prinsip hak istimewa paling sedikit. Alur CI/CD adalah rantai pasokan Anda untuk penyebaran produksi.
    • Terapkan peran pengguna atau grup yang ditetapkan dalam organisasi Anda. Peran seperti Admin, Pengembang, Admin Keamanan, dan Operator harus dibuat untuk mengelompokkan individu berdasarkan peran dan fungsi spesifik mereka mengenai alur kerja CI/CD Anda.
  • Aktifkan audit alur kerja Anda sehingga ada transparansi dan keterlacakan untuk konfigurasi dan perubahan lain sehubungan dengan alur CI/CD Anda.

Praktik terbaik - Mengamankan gambar kontainer Anda

  • Gunakan gambar ringan dengan jejak OS minimal untuk mengurangi area serangan permukaan secara keseluruhan. Pertimbangkan gambar minimal seperti Alpine atau bahkan gambar distroless yang hanya berisi aplikasi Anda dan runtime terkait. Mariner, distribusi Linux sumber terbuka Microsoft, adalah distribusi ringan dan diperkeras yang dirancang untuk AKS untuk menghosting beban kerja kontainer.
  • Gunakan hanya gambar dasar tepercaya saat membangun kontainer Anda. Gambar dasar ini harus diambil dari registri privat yang sering dipindai untuk kerentanan.
  • Gunakan alat pengembang untuk mengevaluasi kerentanan gambar secara lokal.
    • Trivy adalah contoh alat sumber terbuka yang dapat Anda gunakan untuk menganalisis kerentanan keamanan dalam gambar kontainer Anda.
  • Mencegah akses/konteks pengguna root untuk gambar. Secara default, kontainer berjalan sebagai root.
    • Untuk kontainer yang membutuhkan keamanan yang ditingkatkan, pertimbangkan untuk menggunakan profil AppArmor dalam kluster Kubernetes Anda untuk lebih membantu menegakkan keamanan untuk kontainer yang sedang berjalan.

Fase build

Selama fase build, pengembang bekerja dengan teknisi keandalan situs dan tim keamanan untuk mengintegrasikan pemindaian otomatis sumber aplikasi mereka dalam alur build CI mereka. Alur dikonfigurasi untuk mengaktifkan praktik keamanan seperti pemindaian SAST, SCA, dan rahasia dengan menggunakan alat dan ekstensi keamanan platform CI/CD.

Praktik terbaik - Melakukan Analisis Kode Statis (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 Anda gunakan untuk menganalisis kode di repositori GitHub untuk menemukan kerentanan keamanan dan kesalahan pengodean. Masalah apa pun yang diidentifikasi oleh analisis ditampilkan di GitHub Enterprise Cloud.
    • Jika pemindaian kode menemukan potensi kerentanan atau kesalahan dalam kode Anda, GitHub menampilkan pemberitahuan di repositori.
    • Anda juga dapat mengonfigurasi aturan cabang untuk pemeriksaan status yang diperlukan, misalnya, untuk memberlakukan bahwa cabang fitur sudah diperbarui dengan cabang dasar sebelum menggabungkan kode baru apa pun. Praktik ini memastikan bahwa cabang Anda selalu diuji dengan kode terbaru.
  • Gunakan alat seperti kube-score untuk menganalisis objek penyebaran Kubernetes Anda.
    • kube-score adalah alat yang melakukan analisis kode statis dari definisi objek Kubernetes Anda.
    • Output adalah daftar rekomendasi tentang apa yang dapat Anda tingkatkan untuk membantu membuat aplikasi Anda lebih aman dan tangguh.

Praktik terbaik - Melakukan pemindaian rahasia untuk mencegah penggunaan rahasia penipuan yang dilakukan secara tidak sengaja ke repositori

  • Ketika pemindaian rahasia diaktifkan untuk repositori, GitHub memindai kode untuk pola yang cocok dengan rahasia yang digunakan oleh banyak penyedia layanan.
  • GitHub juga secara berkala menjalankan pemindaian riwayat git penuh dari konten yang ada di repositori dan mengirim pemberitahuan pemberitahuan.
    • Untuk Azure DevOps, Defender untuk Cloud menggunakan pemindaian rahasia untuk mendeteksi kredensial, rahasia, sertifikat, dan konten sensitif lainnya dalam kode sumber dan output build Anda.
    • Pemindaian rahasia dapat dijalankan sebagai bagian dari ekstensi Microsoft Security DevOps untuk Azure DevOps.

Praktik terbaik - Gunakan alat analisis komposisi perangkat lunak (SCA) untuk melacak komponen sumber terbuka di basis kode dan mendeteksi kerentanan apa pun dalam dependensi

  • Tinjauan dependensi memungkinkan Anda menangkap dependensi yang tidak aman sebelum memperkenalkannya ke lingkungan Anda, dan memberikan informasi tentang lisensi, dependen, dan usia dependensi. Ini memberikan visualisasi perubahan dependensi yang mudah dimengerti dengan diff yang kaya pada tab "File 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 saat grafik dependensi untuk repositori berubah.

Praktik terbaik - Mengaktifkan pemindaian keamanan templat Infrastruktur sebagai Kode (IaC) untuk meminimalkan kesalahan konfigurasi cloud yang mencapai lingkungan produksi

  • Pantau konfigurasi sumber daya cloud secara proaktif di seluruh siklus hidup pengembangan.
  • Microsoft Defender for DevOps mendukung repositori GitHub dan Azure DevOps.

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 AWS Elastic Container Registry (ECR) untuk memberi tahu Anda jika ada kerentanan yang diketahui dalam gambar Anda.
  • Azure Policy dapat diaktifkan untuk melakukan penilaian kerentanan pada semua gambar yang disimpan di Container Registry dan memberikan informasi terperinci tentang setiap temuan.

Praktik terbaik - Secara otomatis membangun gambar baru pada pembaruan gambar dasar

  • Tugas Azure Container Registry secara dinamis menemukan dependensi gambar dasar saat membangun gambar kontainer. Akibatnya, Tugas ACR dapat mendeteksi kapan citra dasar citra aplikasi diperbarui. Dengan satu tugas build yang telah dikonfigurasi sebelumnya, tugas Container Registry dapat secara otomatis membangun ulang setiap gambar aplikasi yang mereferensikan gambar dasar.

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

  • Azure Key Vault menyimpan kunci penandatanganan yang dapat digunakan oleh notasi dengan plugin Key Vault notasi (azure-kv) untuk menandatangani dan memverifikasi gambar kontainer dan artefak lainnya. Container Registry memungkinkan Anda melampirkan tanda tangan ini dengan menggunakan perintah Azure CLI.
  • Kontainer yang ditandatangani memungkinkan pengguna memastikan bahwa penyebaran dibangun dari entitas tepercaya dan memverifikasi artefak belum dirusak sejak pembuatannya. Artefak yang ditandatangani memastikan integritas dan keaslian sebelum pengguna menarik artefak ke lingkungan apa pun, yang membantu menghindari serangan.
    • Ratify memungkinkan kluster Kubernetes memverifikasi metadata keamanan artefak sebelum penyebaran dan mengakui penyebaran hanya yang mematuhi kebijakan penerimaan yang Anda buat.

Fase penyebaran

Selama fase penyebaran, pengembang, operator aplikasi, dan tim operator kluster bekerja sama dalam membangun kontrol keamanan yang tepat untuk alur penyebaran berkelanjutan (CD) untuk menyebarkan kode ke lingkungan produksi dengan cara yang lebih 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 dorongan ke cabang. Mereka juga menetapkan persyaratan untuk setiap dorongan ke cabang, seperti melewati pemeriksaan status atau riwayat penerapan linier.
  • Dengan menggunakan lingkungan untuk penyebaran, Anda dapat mengonfigurasi lingkungan dengan aturan perlindungan dan rahasia.
  • Anda dapat memanfaatkan fitur Persetujuan dan Gerbang untuk mengontrol alur kerja alur penyebaran. Misalnya, Anda dapat memerlukan persetujuan manual dari tim keamanan atau operasi sebelum penyebaran ke lingkungan produksi.

Praktik terbaik - Kredensial penyebaran yang aman

  • OpenID Koneksi (OIDC) memungkinkan alur kerja GitHub Action Anda mengakses sumber daya di Azure tanpa perlu menyimpan kredensial Azure sebagai rahasia GitHub berumur panjang.
  • Dengan menggunakan lingkungan untuk penyebaran, Anda dapat mengonfigurasi lingkungan dengan aturan perlindungan dan rahasia.
    • Pendekatan berbasis pull untuk CI/CD dengan GitOps memungkinkan Anda mengalihkan kredensial keamanan ke kluster Kubernetes, yang mengurangi permukaan keamanan dan risiko dengan menghapus kredensial agar tidak disimpan di alat CI eksternal Anda. Anda juga dapat mengurangi koneksi masuk yang diizinkan dan membatasi akses tingkat admin ke kluster Kubernetes Anda.

Praktik terbaik - Jalankan pengujian keamanan aplikasi dinamis (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.
  • Aktifkan Azure Policy sehingga gambar kontainer hanya dapat disebarkan dari registri tepercaya.

Fase operasi

Selama fase ini, tugas pemantauan operasi dan pemantauan keamanan dilakukan untuk secara proaktif memantau, menganalisis, dan memberi tahu tentang potensi insiden keamanan. Alat pengamatan produksi seperti Azure Monitor dan Microsoft Sentinel digunakan untuk memantau dan memastikan kepatuhan terhadap standar keamanan perusahaan.

Praktik terbaik - Gunakan Pertahanan Microsoft untuk cloud untuk mengaktifkan pemindaian dan pemantauan otomatis konfigurasi produksi Anda

  • 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 Microsoft Defender untuk Cloud (di bawah bagian Komputasi dan aplikasi) untuk melakukan pemindaian dasar untuk kluster AKS Anda. Dapatkan pemberitahuan di dasbor Microsoft Defender untuk Cloud saat ditemukan masalah konfigurasi atau kerentanan.
    • Gunakan Microsoft Defender untuk Cloud dan ikuti rekomendasi perlindungan jaringannya untuk membantu mengamankan sumber daya jaringan yang digunakan oleh 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 - Terus perbarui kluster Kubernetes Anda

  • Rilis Kubernetes sering diluncurkan. Penting untuk memiliki strategi manajemen siklus hidup untuk memastikan Anda tidak tertinggal dan tidak didukung. AKS adalah penawaran terkelola yang memberi Anda alat dan fleksibilitas untuk mengelola proses peningkatan ini. Anda dapat menggunakan fitur pemeliharaan terencana platform AKS untuk memiliki kontrol lebih besar atas jendela pemeliharaan dan peningkatan.
  • Simpul pekerja AKS harus lebih sering ditingkatkan. Kami menyediakan pembaruan OS dan runtime mingguan, yang dapat diterapkan secara otomatis melalui mode tanpa pengawasan atau melalui Azure CLI untuk kontrol dan pembaruan yang lebih komprehensif.

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 (juga disebut set kebijakan) ke kluster Anda.
  • Gunakan kebijakan Azure bawaan untuk skenario umum seperti mencegah kontainer istimewa berjalan atau hanya menyetujui IP eksternal yang diizinkan. Anda juga dapat membuat kebijakan kustom untuk kasus penggunaan tertentu.
  • Terapkan definisi kebijakan ke kluster Anda dan verifikasi bahwa tugas tersebut sedang diberlakukan.
  • 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.
    • Instal mesin kebijakan jaringan dan buat kebijakan jaringan Kubernetes untuk mengontrol arus lalu lintas antar pod di AKS. Kebijakan jaringan dapat digunakan untuk simpul dan pod berbasis Linux atau berbasis Windows di AKS.

Praktik terbaik - Menggunakan Azure Monitor untuk Pemantauan dan pemberitahuan berkelanjutan

  • Gunakan Azure Monitor untuk mengumpulkan log dan metrik dari AKS. Anda mendapatkan wawasan tentang ketersediaan dan performa aplikasi dan infrastruktur Anda. Azure Monitor juga memberi Anda akses ke sinyal untuk memantau kesehatan solusi Anda dan menemukan aktivitas abnormal lebih awal.
    • Pemantauan berkelanjutan dengan Azure Monitor diperluas hingga rilis alur ke gate atau rilis pemutaran kembali berdasarkan data pemantauan. Azure Monitor juga menyerap log keamanan dan dapat memperingatkan aktivitas yang mencurigakan.
    • Onboard instans AKS Anda ke Azure Monitor dan konfigurasikan pengaturan diagnostik untuk kluster Anda.

Praktik terbaik - Gunakan Microsoft Defender untuk Cloud untuk pemantauan ancaman aktif

  • Microsoft Defender untuk Cloud menyediakan pemantauan ancaman aktif pada AKS di tingkat simpul (ancaman VM) dan untuk internal.
  • Defender for DevOps harus digunakan untuk visibilitas komprehensif dan menyediakan tim keamanan dan operator dengan dasbor terpusat untuk semua alur CI/CD Anda. Fungsionalitas ini sangat berguna jika Anda menggunakan platform multi-alur seperti Azure DevOps dan GitHub atau menjalankan alur di seluruh cloud publik.
  • Defender untuk Key Vault dapat digunakan untuk mendeteksi upaya yang tidak biasa dan mencurigakan untuk mengakses akun brankas kunci dan dapat memperingatkan 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

  • Koneksi log diagnostik AKS ke Microsoft Sentinel untuk pemantauan keamanan terpusat berdasarkan pola dan aturan. Sentinel memungkinkan akses ini dengan mulus 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 operasi apa yang dilakukan pada sumber daya dan oleh siapa.
  • Aktifkan pengelogan kueri DNS dengan menerapkan konfigurasi terdokumen di ConfigMap kustom CoreDNS Anda.
  • Memantau upaya untuk mengakses informasi masuk yang dinonaktifkan.
    • Integrasikan autentikasi pengguna untuk AKS dengan MICROSOFT Entra ID. Buat Pengaturan Diagnostik untuk ID Microsoft Entra, mengirim log audit dan masuk ke ruang kerja Azure Log Analytics. Konfigurasikan pemberitahuan yang diinginkan (seperti saat akun yang dinonaktifkan mencoba masuk) dalam ruang kerja Azure Log Analytics.

Praktik Terbaik - Aktifkan diagnostik pada Sumber Daya Azure Anda

  • Dengan mengaktifkan diagnostik Azure di semua sumber daya beban kerja, Anda memiliki akses ke log platform yang menyediakan informasi diagnostik dan audit terperinci untuk sumber daya Azure Anda. Log ini dapat diserap ke dalam Analitik Log atau solusi SIEM seperti Microsoft Sentinel untuk pemantauan dan pemberitahuan keamanan.

Kontributor

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

Penulis utama:

Kontributor lain:

Langkah berikutnya