Menerapkan pemindaian Checkov kustom terpusat untuk menegakkan kebijakan sebelum menerapkan infrastruktur AWS - AWS Prescriptive Guidance

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.

GitHub Tindakan menggunakan GitHub alur kerja yang dapat digunakan kembali dan kebijakan Checkov khusus untuk mengevaluasi IAc.

Diagram menunjukkan alur kerja berikut:

  1. Seorang pengguna membuat permintaan tarik dalam GitHub repositori.

  2. Alur kerja pipeline dimulai di GitHub Actions, termasuk referensi ke alur kerja Checkov yang dapat digunakan kembali.

  3. 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

  4. Alur kerja Checkov yang dapat digunakan kembali mengunduh kebijakan kustom dari repositori eksternal.

  5. 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-sastrepositori.

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

TugasDeskripsiKeterampilan 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 repositori Checkov pusat Anda.

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
TugasDeskripsiKeterampilan 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 soft-fail untuk true memungkinkan pekerjaan selesai dengan sukses bahkan jika ada pemindaian Checkov yang gagal. Untuk instruksi, lihat Gagal keras dan lunak dalam dokumentasi Checkov.

DevOps insinyur

Tambahkan alur kerja contoh.

Tambahkan contoh alur kerja Checkov yang mereferensikan alur kerja. reusable Ini akan memberikan template untuk cara menggunakan kembali reusable alur kerja. Dalam contoh repositori, checkov-source.yaml adalah alur kerja yang dapat digunakan kembali dan checkov-scan.yaml merupakan contoh yang dikonsumsi. checkov-source

Untuk detail selengkapnya tentang menulis contoh alur kerja Checkov, lihat Informasi tambahan.

DevOps insinyur
TugasDeskripsiKeterampilan yang dibutuhkan

Tentukan kebijakan yang dapat ditegakkan dengan Checkov.

  1. Tinjau kebijakan perusahaan yang terkait dengan keamanan infrastruktur dan persyaratan mana yang harus diberlakukan.

  2. Tentukan persyaratan mana yang dapat diterapkan dengan menggunakan kebijakan kustom Checkov.

  3. Buat konvensi penamaan yang memetakan kontrol kebijakan ke kebijakan kustom Checkov. Biasanya, kebijakan kustom Checkov memiliki pengenal dengan nama Checkov, sumber kebijakan (kustom), dan nomor kebijakan (misalnya,). CKV2_CUSTOM_123

Untuk detail selengkapnya tentang membuat kebijakan kustom Checkov, lihat Ikhtisar Kebijakan Kustom di dokumentasi Checkov.

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
TugasDeskripsiKeterampilan 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 yang memerlukan alur kerja Checkov yang berhasil sebelum permintaan tarik dapat digabungkan. GitHub memungkinkan Anda mengharuskan alur kerja tertentu dijalankan sebelum permintaan tarik dapat digabungkan.

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 (PAT) dengan izin untuk membaca repositori organisasi. Bagikan PAT ini dengan repositori, baik sebagai rahasia seluruh organisasi (jika pada paket berbayar) atau rahasia di setiap repositori (versi gratis). Dalam kode sampel, nama default untuk rahasia adalahORG_PAT.

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. CODEOWNERS CODEOWNERSFile ini biasanya digunakan di root direktori.

Misalnya, untuk meminta persetujuan dari secEng grup GitHub organisasi Anda saat checkov-scan.yaml file diubah, tambahkan yang berikut ini ke file repositori: CODEOWNERS

[Checkov] .github/workflows/checkov-scan.yaml @myOrg/secEng

CODEOWNERSFile khusus untuk repositori tempat tinggalnya. Untuk melindungi alur kerja Checkov yang digunakan oleh repositori, Anda harus menambahkan (atau memperbarui) CODEOWNERS file di setiap repositori.

Untuk informasi selengkapnya tentang melindungi file alur kerja Checkov, lihat Informasi tambahan. Untuk informasi selengkapnya tentang CODEOWNERS file, lihat dokumentasi resmi untuk CI/CD penyedia Anda (seperti GitHub).

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:

  1. 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.

  2. Buat checkov repositori untuk menyimpan konfigurasi Checkov dan github-workflows repositori untuk menyimpan konfigurasi alur kerja yang dapat digunakan kembali. Isi repositori dengan isi repositori contoh.

  3. Buat repositori aplikasi, dan salin dan tempel checkov-scan.yaml alur kerja ke foldernya. .github/workflows Tambahkan rahasia ke repositori yang berisi PAT yang Anda buat untuk akses hanya-baca organisasi. Rahasia default adalahORG_PAT.

  4. Buat permintaan tarik yang menambahkan beberapa Terraform atau CloudFormation kode ke repositori aplikasi. Checkov harus memindai dan mengembalikan hasilnya.