Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Menerapkan pemindaian Checkov kustom terpusat untuk menegakkan kebijakan sebelum menerapkan infrastruktur AWS
Benjamin Morris, Amazon Web Services
Ringkasan
Pola ini menyediakan kerangka kerja GitHub Tindakan untuk menulis kebijakan Checkov kustom dalam satu repositori yang dapat digunakan kembali di seluruh organisasi. GitHub Dengan mengikuti pola ini, tim keamanan informasi dapat menulis, menambah, dan memelihara kebijakan khusus berdasarkan persyaratan perusahaan. Kebijakan kustom dapat ditarik ke semua pipeline dalam GitHub organisasi secara otomatis. Pendekatan ini dapat digunakan untuk menegakkan standar perusahaan untuk sumber daya sebelum sumber daya digunakan.
Prasyarat dan batasan
Prasyarat
Aktif Akun AWS
GitHub Organisasi yang menggunakan GitHub Tindakan
AWS infrastruktur yang digunakan dengan HashiCorp Terraform atau AWS CloudFormation
Keterbatasan
Pola ini ditulis untuk GitHub Tindakan. Namun, dapat disesuaikan dengan kerangka kerja integrasi berkelanjutan dan pengiriman berkelanjutan (CI/CD) yang serupa seperti. GitLab Tidak diperlukan versi GitHub berbayar khusus.
Beberapa Layanan AWS tidak tersedia di semua Wilayah AWS. Untuk ketersediaan Wilayah, lihat Titik akhir layanan dan kuota dalam AWS dokumentasi, dan pilih tautan untuk layanan.
Arsitektur
Pola ini dirancang untuk digunakan sebagai GitHub repositori yang berisi alur kerja yang GitHub dapat digunakan kembali dan kebijakan Checkov kustom. Alur kerja yang dapat digunakan kembali dapat memindai Terraform dan CloudFormation infrastruktur sebagai repositori kode (IAc).
Diagram berikut menunjukkan repositori GitHub alur kerja Reusable dan repositori kebijakan Custom Checkov sebagai ikon terpisah. Namun, Anda dapat mengimplementasikan repositori ini baik sebagai repositori terpisah atau repositori tunggal. Kode contoh menggunakan satu repositori, dengan file untuk alur kerja (.github/workflows) dan file untuk kebijakan khusus (custom_policiesfolder dan file .checkov.yml konfigurasi) di repositori yang sama.

Diagram menunjukkan alur kerja berikut:
Seorang pengguna membuat permintaan tarik dalam GitHub repositori.
Alur kerja pipeline dimulai di GitHub Actions, termasuk referensi ke alur kerja Checkov yang dapat digunakan kembali.
Alur kerja pipeline mengunduh alur kerja Checkov yang dapat digunakan kembali yang direferensikan dari repositori eksternal dan menjalankan alur kerja Checkov tersebut dengan menggunakan Tindakan. GitHub
Alur kerja Checkov yang dapat digunakan kembali mengunduh kebijakan kustom dari repositori eksternal.
Alur kerja Checkov yang dapat digunakan kembali mengevaluasi IAc di GitHub repositori terhadap kebijakan Checkov bawaan dan kustom. Alur kerja Checkov yang dapat digunakan kembali lolos atau gagal berdasarkan apakah masalah keamanan ditemukan.
Otomatisasi dan skala
Pola ini memungkinkan manajemen pusat konfigurasi Checkov, sehingga pembaruan kebijakan dapat diterapkan di satu lokasi. Namun, pola ini memang mengharuskan setiap repositori menggunakan alur kerja yang berisi referensi ke alur kerja pusat yang dapat digunakan kembali. Anda dapat menambahkan referensi ini secara manual atau menggunakan skrip untuk mendorong file ke .github/workflows folder untuk setiap repositori.
Alat
Layanan AWS
AWS CloudFormationmembantu Anda menyiapkan AWS sumber daya, menyediakannya dengan cepat dan konsisten, dan mengelolanya sepanjang siklus hidupnya di seluruh Akun AWS dan Wilayah. Checkov dapat memindai CloudFormation.
Alat lainnya
Checkov
adalah alat analisis kode statis yang memeriksa IAc untuk kesalahan konfigurasi keamanan dan kepatuhan. GitHub Tindakan
diintegrasikan ke dalam GitHub platform untuk membantu Anda membuat, berbagi, dan menjalankan alur kerja dalam GitHub repositori Anda. Anda dapat menggunakan GitHub Tindakan untuk mengotomatiskan tugas seperti membangun, menguji, dan menerapkan kode Anda. Terraform
adalah alat IAc HashiCorp yang membantu Anda membuat dan mengelola sumber daya cloud dan lokal. Checkov dapat memindai Terraform.
Repositori kode
Kode untuk pola ini tersedia di GitHub centralized-custom-checkov-sast
Praktik terbaik
Untuk mempertahankan postur keamanan yang konsisten, selaraskan kebijakan keamanan perusahaan Anda dengan kebijakan Checkov.
Pada fase awal penerapan kebijakan kustom Checkov, Anda dapat menggunakan opsi soft-fail dalam pemindaian Checkov Anda untuk memungkinkan IAc dengan masalah keamanan digabungkan. Saat proses matang, beralih dari opsi soft-fail ke opsi hard-fail.
Epik
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Buat repositori Checkov pusat. | Buat repositori untuk menyimpan kebijakan Checkov kustom yang akan digunakan dalam organisasi. Untuk memulai dengan cepat, Anda dapat menyalin isi repositori pola ini ke GitHub centralized-custom-checkov-sast | DevOps insinyur |
Buat repositori untuk alur kerja yang dapat digunakan kembali. | Jika repositori untuk alur kerja yang dapat digunakan kembali sudah ada, atau Anda berencana untuk menyertakan file alur kerja yang dapat digunakan kembali dalam repositori yang sama dengan kebijakan Checkov kustom, Anda dapat melewati langkah ini. Buat GitHub repositori untuk menyimpan alur kerja yang dapat digunakan kembali. Pipeline repositori lain akan mereferensikan repositori ini. | DevOps insinyur |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Tambahkan alur kerja Checkov yang dapat digunakan kembali. | Buat alur kerja GitHub Tindakan Checkov (file YAMAL) yang dapat digunakan kembali di repositori alur kerja yang dapat digunakan kembali. Anda dapat menyesuaikan alur kerja yang dapat digunakan kembali ini dari file alur kerja yang disediakan dalam pola ini. Contoh perubahan yang mungkin ingin Anda lakukan adalah mengubah alur kerja yang dapat digunakan kembali untuk menggunakan opsi soft-fail. Pengaturan | DevOps insinyur |
Tambahkan alur kerja contoh. | Tambahkan contoh alur kerja Checkov yang mereferensikan alur kerja. Untuk detail selengkapnya tentang menulis contoh alur kerja Checkov, lihat Informasi tambahan. | DevOps insinyur |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Tentukan kebijakan yang dapat ditegakkan dengan Checkov. |
Untuk detail selengkapnya tentang membuat kebijakan kustom Checkov, lihat Ikhtisar Kebijakan Kustom | Keamanan dan Kepatuhan |
Tambahkan kebijakan kustom Checkov. | Ubah kebijakan perusahaan yang diidentifikasi menjadi kebijakan Checkov khusus di repositori pusat. Anda dapat menulis kebijakan Checkov sederhana baik dalam Python atau YAMAL. | Keamanan |
| Tugas | Deskripsi | Keterampilan yang dibutuhkan |
|---|---|---|
Tambahkan alur kerja Checkov yang dapat digunakan kembali ke semua repositori. | Pada titik ini, Anda harus memiliki contoh alur kerja Checkov yang mereferensikan alur kerja yang dapat digunakan kembali. Salin contoh alur kerja Checkov yang mereferensikan alur kerja yang dapat digunakan kembali ke setiap repositori yang memerlukannya. | DevOps insinyur |
Buat mekanisme untuk memastikan bahwa Checkov berjalan sebelum bergabung. | Untuk memastikan bahwa alur kerja Checkov dijalankan untuk setiap permintaan tarik, buat pemeriksaan status | DevOps insinyur |
Buat PAT di seluruh organisasi, dan bagikan sebagai rahasia. | Jika GitHub organisasi Anda terlihat publik, Anda dapat melewati langkah ini. Pola ini mengharuskan alur kerja Checkov dapat mengunduh kebijakan khusus dari repositori kebijakan khusus di organisasi Anda. GitHub Anda harus memberikan izin sedemikian rupa sehingga alur kerja Checkov dapat mengakses repositori tersebut. Untuk melakukan ini, buat token akses pribadi | DevOps insinyur |
(Opsional) Lindungi file alur kerja Checkov dari modifikasi. | Untuk melindungi file alur kerja Checkov dari perubahan yang tidak diinginkan, Anda dapat menggunakan file. Misalnya, untuk meminta persetujuan dari
Untuk informasi selengkapnya tentang melindungi file alur kerja Checkov, lihat Informasi tambahan. Untuk informasi selengkapnya tentang | DevOps insinyur |
Sumber daya terkait
Informasi tambahan
Menulis file alur kerja Checkov
Saat menulischeckov-scan.yaml, pertimbangkan kapan Anda ingin menjalankannya. onKunci tingkat atas menentukan kapan alur kerja berjalan. Dalam repositori contoh, alur kerja akan berjalan ketika ada permintaan tarik yang menargetkan main cabang (dan kapan saja cabang sumber permintaan tarik diubah). Alur kerja juga dapat dijalankan sesuai kebutuhan karena workflow_dispatch kuncinya.
Anda dapat mengubah kondisi pemicu alur kerja berdasarkan seberapa sering Anda ingin alur kerja dijalankan. Misalnya, Anda dapat mengubah alur kerja untuk dijalankan setiap kali kode didorong ke cabang mana pun dengan mengganti pull_request dengan push dan menghapus branches kunci.
Anda dapat memodifikasi contoh file alur kerja yang Anda buat dalam repositori individual. Misalnya, Anda dapat menyesuaikan nama cabang target dari main production jika repositori terstruktur di sekitar cabang. production
Melindungi file alur kerja Checkov
Pemindaian Checkov memberikan informasi yang berguna tentang kemungkinan kesalahan konfigurasi keamanan. Namun, beberapa pengembang mungkin menganggapnya sebagai penghalang produktivitas mereka dan mencoba untuk menghapus atau menonaktifkan alur kerja pemindaian.
Ada beberapa cara untuk mengatasi masalah ini, termasuk pesan yang lebih baik tentang nilai jangka panjang dari pemindaian keamanan dan dokumentasi yang lebih jelas tentang cara menerapkan infrastruktur yang aman. Ini adalah pendekatan “lunak” penting untuk DevSecOps kolaborasi yang dapat dilihat sebagai solusi untuk akar masalah ini. Namun, Anda juga dapat menggunakan kontrol teknis seperti CODEOWNERS file sebagai pagar pembatas untuk membantu pengembang tetap berada di jalur yang benar.
Pola pengujian di kotak pasir
Untuk menguji pola ini di lingkungan kotak pasir, ikuti langkah-langkah berikut:
Buat GitHub organisasi baru. Buat token dengan akses hanya-baca ke semua repositori di organisasi. Karena token ini untuk lingkungan kotak pasir, bukan lingkungan berbayar, Anda tidak akan dapat menyimpan token ini dalam rahasia seluruh organisasi.
Buat
checkovrepositori untuk menyimpan konfigurasi Checkov dangithub-workflowsrepositori untuk menyimpan konfigurasi alur kerja yang dapat digunakan kembali. Isi repositori dengan isi repositori contoh.Buat repositori aplikasi, dan salin dan tempel
checkov-scan.yamlalur kerja ke foldernya..github/workflowsTambahkan rahasia ke repositori yang berisi PAT yang Anda buat untuk akses hanya-baca organisasi. Rahasia default adalahORG_PAT.Buat permintaan tarik yang menambahkan beberapa Terraform atau CloudFormation kode ke repositori aplikasi. Checkov harus memindai dan mengembalikan hasilnya.