Kebijakan sebagai kode adalah metode untuk mengekspresikan aturan dan batasan—termasuk keamanan, kepatuhan, dan kebijakan organisasi—dalam kode yang dapat dibaca mesin dan secara otomatis diterapkan di seluruh arsitektur TI dan pipeline DevOps.
Alih-alih mengandalkan manusia untuk memeriksa kepatuhan atau mengingat aturan keamanan, aturan tersebut ada sebagai logika yang dapat dieksekusi dan dijalankan setiap kali pengembang atau sistem mengusulkan perubahan atau permintaan. Jika seseorang mengajukan perubahan, mesin kebijakan secara otomatis mengevaluasi perubahan tersebut berdasarkan aturan yang dikodekan, serta mengizinkan, menolak, atau menandainya.
Proses ini mengubah praktik manajemen kebijakan dari dokumen statis menjadi permukaan kontrol yang dinamis dan terus menerus diterapkan yang tertanam dalam delivery pipeline.
Aturan berbasis kode membantu memastikan bahwa kebijakan yang sama diterapkan di mana-mana, dengan cara yang dapat diulang dan dapat diskalakan. Mesin kebijakan dapat menjalankan pemeriksaan otomatis dalam hitungan detik selama proses pengembangan atau penerapan, memperpendek siklus masukan, dan membantu tim DevOps menghindari kejutan keamanan atau kepatuhan di tahap akhir.
PaC memungkinkan perusahaan untuk meningkatkan postur keamanan siber mereka secara keseluruhan dan mempertahankan kepatuhan terhadap standar industri dan peraturan. Selain itu, memperlakukan kebijakan seperti kode sejalan dengan transisi “everything as code” yang lebih luas, yang mengubah hal-hal seperti permintaan infrastruktur menjadi file kode yang dapat ditinjau di mana tim pengembangan dapat berkolaborasi.
Tetap terinformasi tentang tren industri yang paling penting—dan menarik—tentang AI, otomatisasi, data, dan di luarnya dengan buletin Think. Lihat Pernyataan Privasi IBM®.
Dalam istilah DevOps, kebijakan adalah aturan yang jelas dan dapat ditegakkan tentang bagaimana infrastruktur dan aplikasi TI harus dikonfigurasi, diakses, atau dijalankan. Lebih tepatnya, kebijakan menentukan tindakan apa yang diizinkan, diperlukan atau dilarang sehingga sistem tetap berjalan dalam keadaan ideal mereka.
Sebagai contoh, “semua bucket penyimpanan harus dienkripsi” atau “tidak ada layanan publik yang dapat mengekspos port 22" adalah kebijakan, karena keduanya menentukan batasan konkret pada perilaku sistem.
Dengan PaC, kebijakan ditulis dalam bahasa pemrograman terstruktur, sehingga mesin kebijakan dan alat otomatisasi dapat mengurai dan mengevaluasinya secara deterministik. Dengan cara ini, kebijakan menjadi pengamanan yang dapat dieksekusi yang harus dipenuhi oleh sistem dan para teknisi, bukan sekadar pedoman yang mungkin ditafsirkan secara berbeda oleh setiap orang.
Kebijakan sebagai alat kode memungkinkan pengembang untuk menulis kode yang dapat dieksekusi ke dalam waktu proses dan pipeline integrasi/pengiriman berkelanjutan (CI/CD), sehingga setiap perubahan secara otomatis diperiksa kepatuhannya.
Secara teknis, sebagian besar pengaturan PaC mengikuti langkah-langkah inti yang sama:
Pemeriksaan kebijakan dapat terjadi kapan saja dalam siklus hidup pengembangan perangkat lunak (SDLC), mulai dari integrasi kode hingga produksi langsung dan pemantauan.
Karena kebijakan adalah kode, mereka juga dapat diperlakukan seperti artefak perangkat lunak lainnya.
Tim pengembang dapat menulis pengujian otomatis yang memasukkan input sampel ke dalam kebijakan dan memverifikasi keputusan yang dihasilkan untuk mempercepat siklus masukan ketika kebijakan berubah.
Ketika kebijakan dikodekan, pengembang dapat memfaktorkan logika umum ke dalam modul atau fungsi yang dapat digunakan kembali. Beberapa kebijakan tingkat tinggi kemudian dapat menggunakan kebijakan bersama alih-alih menduplikasi kondisi di mana-mana.
Pengembang juga dapat mengganti nama, merestrukturisasi, atau membagi kebijakan besar menjadi kebijakan yang lebih kecil tanpa mengubah perilaku mereka, seperti memfaktorkan ulang fungsi aplikasi besar menjadi fungsi yang lebih kecil.
Kemampuan ini memungkinkan tim untuk menerapkan praktik rekayasa perangkat lunak yang ada pada logika tata kelola , yang membantu mereka mempertahankan persyaratan keamanan dan kepatuhan seiring dengan peningkatan dan evolusi arsitektur TI.
Misalnya, Perusahaan X ingin menerapkan kebijakan “khusus HTTPS” di mana setiap layanan web harus menggunakan HTTPS, bukan HTTP biasa. Untuk mengodifikasi kebijakan, seorang teknisi platform menulis aturan sederhana yang mengatakan:
Insinyur menempatkan berkas kebijakan ini di dalam folder "kebijakan" di dalam repositori kode yang sama dengan aplikasi dan membuka permintaan pull untuk menambahkan kebijakan tersebut. Permintaan pull tersebut memicu pemeriksaan sintaks otomatis file kebijakan dan tinjauan kode oleh teknisi lain. Kebijakan tersebut baru akan digabungkan ke cabang utama setelah melewati pengujian yang diperlukan.
Dalam pipeline integrasi berkelanjutan (CI) , semua file kebijakan dimuat ke mesin kebijakan dari folder "kebijakan". Mesin kebijakan membaca kebijakan tersebut, mengubahnya menjadi representasi internal, dan menyusunnya menjadi bentuk yang ringkas dan tingkat rendah. Bentuk yang ringkas ini memungkinkan mesin untuk dengan cepat menjawab “izinkan atau tolak?” untuk setiap layanan yang diperiksa oleh pipeline.
Terlepas dari format file, pekerjaan CI mengambil file konfigurasi yang ada, mengekstrak bidang penting (nama, protokol, port) dan membuat deskripsi JSON sederhana untuk setiap layanan.
Pemanggil meminta keputusan dari mesin kebijakan dengan mengirimkan deskripsi layanan standar sebagai input dan menunjukkan bahwa paket kebijakan untuk “khusus HTTPS” harus diterapkan.
Mesin kebijakan kemudian mengevaluasi input terhadap aturan. Ia memeriksa bidang protokol layanan. Jika protokolnya adalah HTTP, itu berarti input cocok dengan kondisi “tolak” dalam kebijakan. Mesin menunjukkan bahwa perubahan harus ditolak dan membuat pesan yang memberi tahu pengembang bahwa layanan harus menggunakan HTTPS alih-alih HTTP. Jika layanan menggunakan HTTPS, tidak ada kondisi penolakan yang terpenuhi, dan mesin menunjukkan bahwa perubahan tersebut diizinkan.
Kemudian, mesin kebijakan merangkum evaluasi aturan ke dalam satu objek keputusan tunggal untuk layanan tersebut. Objek keputusan biasanya menentukan apakah keputusan keseluruhan adalah “izinkan” atau “tolak” dan seberapa parah masalahnya (tinggi, sedang, rendah). Mereka juga menyertakan daftar pesan yang menjelaskan mengapa input ditolak dan peringatan apa pun yang ditemukan mesin dalam proses penilaian. Jika semuanya sesuai, objek keputusan menyatakan bahwa perubahan diizinkan dan hanya disertai catatan informasi (atau tanpa pesan sama sekali).
Akhirnya, alat CI menegakkan keputusan. Jika keputusannya adalah “tolak,” perubahan gagal digabungkan ke cabang kode utama. Teknisi melihat pesan kesalahan yang mengatakan bahwa layanan harus menggunakan HTTPS dan menjalani modifikasi tertentu. Jika keputusannya adalah "izinkan", artefak tersebut dikemas dan diterapkan, dan pipeline CI berlanjut seperti biasa.
Konsep kebijakan sebagai kode tumbuh dari gerakan yang lebih luas yaitu “semuanya sebagai kode” dalam DevOps modern dan rekayasa cloud.
Awalnya, infrastruktur sebagai kode (IaC) merupakan perubahan besar. Alih-alih administrator sistem mengklik antarmuka pengguna atau mengikuti runbook, tim mendeskripsikan server, jaringan, dan sumber daya lainnya dalam file kode deklaratif. File-file ini disimpan dalam sistem kontrol versi dan diterapkan melalui pipeline otomatis.
Ketika perusahaan melihat manfaatnya, pendekatan ini menyebar ke komponen lain dari arsitektur TI. Konfigurasi aplikasi pindah menuju pendekatan berbasis kode. Pipeline CI/CD menjadi skrip yang tersimpan di repositori kode. Aturan pemantauan dan peringatan juga mulai dimasukkan dalam kode. Secara bersama-sama, praktik ini dikenal sebagai “semuanya sebagai kode.”
Gagasan utama dari “semuanya sebagai kode” adalah bahwa, jika beberapa bagian dari sistem dapat dijelaskan, itu harus digambarkan sebagai kode dan dikelola dengan cara yang sama seperti aplikasi perangkat lunak.
PaC pada dasarnya adalah penerapan filosofi tersebut pada aturan, tata kelola dan kepatuhan. Secara tradisional, kebijakan terdapat dalam PDF dan wiki atau diputuskan oleh komite, dan ditegakkan oleh manusia. Proses ini berjalan lancar ketika siklus rilis lambat dan infrastruktur relatif statis.
Ketika arsitektur cloud-native dan microservice mengambil alih, dan tim mulai menerapkan kode beberapa kali sehari, proses manual tidak mampu mengimbanginya. PaC mengatasi tantangan ini dengan mengekspresikan kebijakan dalam format yang dapat dibaca mesin, sehingga mereka dapat diberi versi di dalam Git, ditinjau seperti file kode, diuji di CI dan diterapkan secara otomatis di pipeline atau saat waktu proses.
Kebijakan sebagai kode adalah praktik untuk mengelola kebijakan TI seperti kode perangkat lunak. Infrastruktur sebagai kode (IaC) bersifat serupa, tetapi dengan fokus yang berbeda. Hal ini memungkinkan tim teknik untuk menentukan dan mengelola infrastruktur TI dengan menggunakan kode aplikasi.
Alih-alih membuat dan mengonfigurasi aset jaringan seperti mesin virtual (VM) dan penyeimbang beban secara manual, IaC memungkinkan pengembang untuk menulis kode guna mendeskripsikan keadaan yang diinginkan dari sumber daya ini. Alat IaC kemudian mengambil kode itu dan membuat atau memodifikasi sumber daya yang ditentukan.
IaC membuat penskalaan dan otomatisasi infrastruktur menjadi jauh lebih mudah. Jika sebuah tim membutuhkan lebih banyak server, mereka cukup mengubah angka dalam kode (misalnya dari enam instance menjadi sembilan). Alat otomatisasi menangani detail penyediaan sumber daya tambahan tersebut.
Pada tingkat tinggi, IaC menentukan infrastruktur apa saja yang harus ada dan bagaimana konfigurasinya, sementara PaC berfokus pada aturan dan kendala yang harus dipatuhi oleh infrastruktur tersebut. Kode IaC membuat dan mengonfigurasi sumber daya, dan kode PaC membantu memastikan bahwa sumber daya tersebut (dan cara penggunaannya) mengikuti persyaratan keamanan yang ditentukan, standar kepatuhan, dan pengamanan operasional.
Dalam banyak arsitektur TI modern dan pengaturan CI/CD, IaC dan PaC memberikan manfaat yang saling melengkapi. IaC mengotomatiskan proses penyediaan, sedangkan PaC menambahkan tata kelola otomatis sebagai pelengkapnya.
Ketika seorang pengembang mengubah file IaC, mesin PaC dapat memeriksa rencana atau konfigurasi baru. Jika semuanya sesuai dengan kebijakan yang telah ditetapkan, perubahan diizinkan untuk dilanjutkan dan infrastruktur akan diperbarui. Jika ada sesuatu yang melanggar aturan, pipeline gagal dan tidak ada yang diterapkan sampai masalah diperbaiki.
DevSecOps adalah tentang menanamkan keamanan dan kepatuhan ke dalam siklus hidup DevOps, alih-alih menambahkannya di akhir. Ini adalah pendekatan pengembangan di mana proses keamanan diprioritaskan dan dijalankan selama setiap tahap siklus hidup pengembangan perangkat lunak.
PaC mendukung praktik DevSecOps dengan:
PaC membantu tim menggeser keamanan ke kiri dengan memindahkan pemeriksaan keamanan ke tahap paling awal dari proses pengembangan, alih-alih menunggu hingga setelah penerapan untuk menjalankan pemeriksaan—saat masalah tersebut berpotensi memengaruhi pengguna. Jika seorang pengembang menerapkan konfigurasi berisiko atau pola tidak aman, kebijakan otomatis dapat membantu mendeteksi masalah dan menggagalkan proses pembangunan.
Alat PaC mengotomatiskan penegakan aturan dengan menanamkan aturan keamanan langsung ke dalam pipeline CI/CD dan sistem waktu proses, sehingga pemeriksaan terjadi secara otomatis setiap kali kode atau infrastruktur berubah. Alih-alih mengandalkan manusia untuk mengingat setiap standar keamanan dan meninjau setiap perubahan secara manual, sistem secara konsisten mengevaluasi perubahan untuk memastikan bahwa tidak ada langkah yang dilewati secara tidak sengaja.
PaC membantu pengembang mempertahankan kecepatan penerapan tanpa mengorbankan konsistensi dan keamanan. Sistem ini menjalankan definisi kebijakan yang sama di setiap lingkungan dan di setiap tahapan—pengembangan, pengujian, penyiapan, dan produksi. Fitur ini memungkinkan tim untuk sering merilis karena mereka dapat mempercayai bahwa serangkaian aturan yang sama diterapkan di mana-mana. Hal ini juga membantu mereka menghindari situasi di mana lingkungan yang berbeda saling terpisah atau menggunakan interpretasi aturan yang sedikit berbeda.
PaC memperlakukan kebijakan keamanan aplikasi seperti artefak kode lainnya yang berada dalam sistem kontrol versi. Tim pengembangan, operasi, dan keamanan dapat meninjau, mendiskusikan, dan memperbarui kebijakan melalui alur kerja yang sudah dikenal (tinjauan kode, strategi percabangan), yang membuat diskusi kebijakan lebih transparan dan lebih terintegrasi ke dalam pekerjaan pengembangan sehari-hari.
Kebijakan sebagai kode memiliki berbagai macam aplikasi untuk arsitektur TI perusahaan.
Banyak bisnis menggunakan PaC sebagai lapisan tata kelola untuk infrastruktur cloud-native. Kebijakan dievaluasi setiap kali templat IaC diterapkan, dan kebijakan tersebut dapat memblokir atau memodifikasi sumber daya yang tidak sesuai. Sebagai contoh, tim dapat menggunakan PaC untuk membatasi pengaturan jaringan dengan melarang IP publik untuk database atau mewajibkan subnet pribadi untuk beban kerja tertentu.
PaC dapat mengekspresikan logika otorisasi yang terperinci, mendefinisikan siapa yang dapat melakukan apa, dalam kondisi apa dan pada sumber daya mana, semuanya dalam lapisan kebijakan pusat yang dapat diuji.
Misalnya, tim menggunakan PaC untuk menentukan—secara detail—peran pengguna mana yang dapat mengakses antarmuka pemrograman aplikasi (API) dan titik akhir yang sensitif, dan melalui metode HTTP apa. Alih-alih “admin dapat mengakses sistem,” pengembang dapat menetapkan bahwa “pengguna dengan peran X dapat melakukan tindakan Y pada sumber daya Z antara jam A dan B.”
Secara tradisional, persyaratan peraturan—seperti Undang-Undang Portabilitas dan Akuntabilitas Asuransi Kesehatan (HIPAA)—ada dalam dokumen yang panjang. Manusia membaca dokumen-dokumen itu dan mencoba mengubahnya menjadi konfigurasi dan daftar periksa.
Dengan PaC, tim mengambil persyaratan tingkat tinggi tersebut dan mengodekannya sebagai aturan yang dapat dievaluasi komputer. Aturan dapat dibagikan dan digunakan kembali di seluruh lingkungan, dan ketika peraturan berubah, aturan yang sesuai dapat diperbarui sekali dan diterapkan secara otomatis di mana pun kebijakan diterapkan.
Selain itu, PaC membuat file log yang dapat dibaca mesin setiap kali mesin kebijakan menjalankan pemeriksaan kepatuhan, membantu tim memelihara jejak audit yang terperinci. Setiap evaluasi dapat menghasilkan log atau metrik real-time yang menunjukkan sistem mana yang lulus, mana yang gagal, dan alasan yang tepat mengapa suatu sistem gagal. Hasil tersebut dimasukkan ke dalam dasbor dan laporan yang menunjukkan status kepatuhan per sistem, akun, atau lingkungan.
Tanpa PAC, akan mudah bagi tim untuk menyediakan sumber daya secara berlebihan (instance besar, disk besar, banyak replika) dan baru menyadarinya ketika laporan biaya bulanan menunjukkan lonjakan. PaC membalikkan dinamika ini. Aturan dievaluasi sebelum atau saat sumber daya dibuat, sehingga pilihan yang tidak hemat biaya dapat langsung diblokir atau ditandai.
Sebagai contoh, jika seseorang mencoba menjalankan jenis instance besar di lingkungan pengujian, kebijakan dapat menolak perubahan dan mengembalikan kesalahan yang menjelaskan bahwa hanya ukuran yang lebih kecil yang diizinkan. Pendekatan ini memungkinkan pengembang bergerak cepat sambil tetap memperhatikan batas anggaran.
Di Kubernetes, pengembang mengirimkan manifes (file yang menjelaskan apa yang mereka ingin Kubernetes buat dan bagaimana mereka ingin ia berperilaku) ke server API untuk membuat pod, penerapan, dan sumber daya lainnya.
Pengontrol penerimaan dan mesin kebijakan berada di depan server API dan memeriksa permintaan API yang dibuat oleh setiap manifes. Mereka menerapkan PaC untuk memutuskan apakah akan mengizinkan, menolak, atau memodifikasi sumber daya yang masuk. Dengan cara ini, tata kelola terjadi secara otomatis di "pintu" klaster.
Ketika organisasi menjalankan beberapa klaster (per wilayah atau per unit bisnis, misalnya), PaC memungkinkan mereka untuk menerapkan aturan tata kelola yang sama di mana-mana. Repositori kebijakan yang sama dapat disinkronkan ke banyak klaster, sehingga setiap klaster memberlakukan batasan sumber daya, aturan gambar, dan persyaratan metadata yang sama.
Setiap penyedia cloud dan platform on‑premises memiliki layanan dan alatnya sendiri yang dapat dimanfaatkan oleh tim DevOps. Namun, banyak aturan tata kelola yang mereka buat untuk setiap platform secara konseptual sama. Cara pengembang memberi tag pada sumber daya, siapa yang dapat mengakses sumber daya, bagaimana jaringan diekspos, dan bagaimana enkripsi bekerja biasanya konsisten di berbagai layanan.
PaC memungkinkan tim untuk menerapkan aturan keamanan cloud melalui alat khusus penyedia atau mesin kebijakan lintas platform. Sebagai contoh, sebuah kebijakan bersama mungkin menyatakan “semua titik akhir yang terbuka secara eksternal harus menggunakan TLS dan berada di balik gateway API yang disetujui.” Aturan itu mungkin ditegakkan oleh mekanisme yang berbeda di setiap lingkungan cloud, tetapi akan tetap didorong oleh definisi kebijakan yang sama.
Para pengembang dan profesional keamanan sedang menjelajahi kebijakan sebagai kode (policy as code) sebagai cara untuk menciptakan model pengamanan berlapis yang mencakup seluruh siklus hidup AI atau alur kerja berbasis agen. Meskipun praktik ini masih muncul, investigasi awal telah mengungkapkan banyak kemungkinan aplikasi PaC dalam alur kerja AI.
PaC dapat membantu menetapkan pemisahan yang jelas antara penalaran AI dan sistem yang memutuskan tindakan mana yang sebenarnya diizinkan untuk dijalankan. Alat AI dapat mengusulkan tindakan atau rencana, tetapi mesin kebijakan mengevaluasi proposal tersebut terhadap aturan yang dikodifikasi sebelum sistem yang mendasarinya diubah.
Pada tahap input, PaC dapat membantu memfilter atau mengubah prompt pengguna, menyunting data sensitif, menegakkan isolasi penyewa, dan memblokir pola serangan yang diketahui. Selama perencanaan, PAC dapat meminta agen AI untuk membuat rencana terstruktur dan memvalidasi setiap langkah terhadap alat, tindakan, dan kondisi risiko yang diizinkan sebelum eksekusi diperbolehkan.
Pada waktu eksekusi, setiap pemanggilan alat atau panggilan API dapat diperiksa oleh lapisan penegakan kebijakan. Lapisan tersebut memutuskan apakah akan mengizinkan, menolak atau memodifikasi suatu tindakan atau meneruskannya ke manusia. Setelah eksekusi, kebijakan dapat mendorong pencatatan, jejak audit, aturan retensi, dan pasca-filter pada output model untuk membantu memastikan bahwa tanggapan memenuhi persyaratan yang diperlukan.
Memanfaatkan kekuatan AI dan otomatisasi untuk memecahkan masalah secara proaktif di seluruh tumpukan aplikasi.
Gunakan perangkat lunak dan alat bantu DevOps untuk membangun, menerapkan, dan mengelola aplikasi cloud native di berbagai perangkat dan lingkungan.
Percepat ketangkasan dan pertumbuhan bisnis — terus modernisasi aplikasi Anda di platform apa pun menggunakan layanan konsultasi cloud kami.