Menerapkan pipeline yang secara bersamaan mendeteksi masalah keamanan di beberapa kiriman kode - AWS Prescriptive Guidance

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Menerapkan pipeline yang secara bersamaan mendeteksi masalah keamanan di beberapa kiriman kode

Benjamin Morris, Tim Hahn, Sapeksh Madan, Dina Odum, dan Yesaya Schisler, Amazon Web Services

Ringkasan

Pemberitahuan: AWS CodeCommit tidak lagi tersedia untuk pelanggan baru. Pelanggan yang sudah ada AWS CodeCommit dapat terus menggunakan layanan seperti biasa. Pelajari selengkapnya.

Simple Code Scanning Pipeline (SCSP) menyediakan pembuatan dua klik dari pipeline analisis kode yang menjalankan alat keamanan open-source standar industri secara paralel. Ini memungkinkan pengembang untuk memeriksa kualitas dan keamanan kode mereka tanpa harus menginstal alat atau bahkan memahami cara menjalankannya. Ini membantu Anda mengurangi kerentanan dan kesalahan konfigurasi dalam kiriman kode. Ini juga mengurangi jumlah waktu yang dihabiskan organisasi Anda untuk menginstal, meneliti, dan mengonfigurasi alat keamanan.

Sebelum SCSP, memindai kode menggunakan rangkaian alat khusus ini mengharuskan pengembang untuk menemukan, menginstal secara manual, dan mengkonfigurasi alat analisis perangkat lunak. Bahkan all-in-one alat yang diinstal secara lokal, seperti Automated Security Helper (ASH), memerlukan konfigurasi kontainer Docker agar dapat dijalankan. Namun, dengan SCSP, serangkaian alat analisis kode standar industri berjalan secara otomatis di. AWS Cloud Dengan solusi ini, Anda menggunakan Git untuk mendorong kiriman kode Anda, dan kemudian Anda menerima output visual dengan at-a-glance wawasan tentang mana pemeriksaan keamanan gagal.

Prasyarat dan batasan

Arsitektur

Tumpukan teknologi target

  • AWS CodeCommit repositori

  • AWS CodeBuild proyek

  • AWS CodePipeline pipa

  • bucket Amazon Simple Storage Service (Amazon S3)

  • AWS CloudFormation Template

Arsitektur target

SCSP untuk analisis kode statis adalah DevOps proyek yang dirancang untuk memberikan umpan balik keamanan pada kode yang dapat dikirim.

SCSP melakukan analisis kode di Wilayah AWS.
  1. Di AWS Management Console, masuk ke target Akun AWS. Konfirmasikan bahwa Anda berada di Wilayah AWS tempat Anda ingin menyebarkan pipa.

  2. Gunakan CloudFormation template dalam repositori kode untuk menyebarkan tumpukan SCSP. Ini menciptakan CodeCommit repositori dan CodeBuild proyek baru.

    catatan

    Sebagai opsi penerapan alternatif, Anda dapat menggunakan CodeCommit repo yang ada dengan menyediakan Amazon Resource Name (ARN) repositori sebagai parameter selama penerapan tumpukan.

  3. Kloning repositori ke workstation lokal Anda, lalu tambahkan file apa pun ke folder masing-masing di repositori kloning.

  4. Gunakan Git untuk menambahkan, melakukan, dan mendorong file ke CodeCommit repositori.

  5. Mendorong ke CodeCommit repositori memulai pekerjaan. CodeBuild CodeBuild Proyek ini menggunakan alat keamanan untuk memindai kiriman kode.

  6. Tinjau output dari pipa. Alat keamanan yang menemukan masalah tingkat kesalahan akan mengakibatkan tindakan gagal dalam pipeline. Perbaiki kesalahan ini atau tekan sebagai positif palsu. Tinjau detail keluaran alat di detail Tindakan di dalam CodePipeline atau di bucket S3 pipeline.

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.

  • AWS CodeBuildadalah layanan build yang dikelola sepenuhnya yang membantu Anda mengkompilasi kode sumber, menjalankan pengujian unit, dan menghasilkan artefak yang siap digunakan.

  • AWS CodeCommitadalah layanan kontrol versi yang membantu Anda menyimpan dan mengelola repositori Git secara pribadi, tanpa perlu mengelola sistem kontrol sumber Anda sendiri.

Alat-alat lainnya

Untuk daftar lengkap alat yang digunakan SCSP untuk memindai kiriman kode, lihat readme SCSP di. GitHub

Repositori kode

Kode untuk pola ini tersedia di repositori Simple Code Scanning Pipeline (SCSP) di. GitHub

Epik

TugasDeskripsiKeterampilan yang dibutuhkan

Buat CloudFormation tumpukan.

  1. Masuk ke AWS Management Console.

  2. Di konsol, konfirmasikan bahwa Anda berada di Wilayah target tempat Anda ingin menerapkan solusi. Untuk informasi selengkapnya, lihat Memilih Wilayah.

  3. Pilih tautan berikut. Ini membuka wizard Quick create stack di CloudFormation.

    https://console.aws.amazon.com/cloudformation/rumah? #/ stacks/create/review?templateURL=https://proservetools.s3.amazonaws.com/cft/scsp -pipeline-stack.template.json&stackname= SimpleCodeScanPipeline

  4. Pada wizard Quick create stack, tinjau pengaturan parameter untuk tumpukan Anda dan buat modifikasi sesuai kebutuhan untuk kasus penggunaan Anda.

  5. Pilih Saya mengakui bahwa AWS CloudFormation mungkin membuat sumber daya IAM, lalu pilih Buat tumpukan.

Ini membuat CodeCommit repositori, CodePipeline pipeline, beberapa definisi CodeBuild pekerjaan, dan bucket S3. Build run dan hasil pemindaian disalin ke bucket ini. Setelah CloudFormation tumpukan telah sepenuhnya digunakan, SCSP siap digunakan.

AWS DevOps, administrator AWS
TugasDeskripsiKeterampilan yang dibutuhkan

Periksa hasil pemindaian.

  1. Di konsol Amazon S3, di Bucket, pilih bucket simplecodescanpipeline-deleteresourcespipelinereso.

  2. Pilih direktori scan_results, lalu pilih folder dengan stempel tanggal pemindaian terbaru.

  3. Tinjau file log di folder ini untuk meninjau masalah yang terdeteksi oleh alat keamanan yang digunakan dalam pipeline. Alat keamanan yang menemukan masalah tingkat kesalahan akan menghasilkan failed tindakan dalam pipeline. Ini perlu diperbaiki atau ditekan jika positif palsu.

    catatan

    Anda juga dapat melihat detail output alat (untuk pemindaian yang lewat dan gagal) di CodePipeline konsol, di bagian Detail tindakan.

Pengembang aplikasi, AWS DevOps

Pemecahan Masalah

IsuSolusi

HashiCorp Terraform atau AWS CloudFormation file tidak dipindai.

Pastikan file Terraform (.tf) dan CloudFormation (.yl, .yaml, atau .json) ditempatkan di folder yang sesuai di repositori kloning. CodeCommit

git clonePerintah gagal.

Pastikan Anda telah menginstal git-remote-codecommit dan CLI Anda memiliki akses ke AWS kredensil yang memiliki izin untuk membaca repositori. CodeCommit

Kesalahan konkurensi, sepertiProject-level concurrent build limit cannot exceed the account-level concurrent build limit of 1.

Jalankan kembali pipeline dengan memilih tombol Release Change di CodePipeline konsol. Ini adalah masalah yang diketahui yang tampaknya paling umum selama beberapa kali pertama pipa berjalan.

Sumber daya terkait

Memberikan umpan balik pada proyek SCSP.

Informasi tambahan

FAQ

Apakah proyek SCSP sama dengan Automated Security Helper (ASH)?

Tidak. Gunakan ASH saat Anda menginginkan alat CLI yang menjalankan alat pemindaian kode dengan menggunakan wadah. Automated Security Helper (ASH) adalah alat yang dirancang untuk mengurangi kemungkinan pelanggaran keamanan dalam kode baru, infrastruktur, atau konfigurasi sumber daya IAM. ASH adalah utilitas baris perintah yang dapat dijalankan secara lokal. Penggunaan lokal membutuhkan lingkungan kontainer diinstal dan dioperasikan pada sistem.

Gunakan SCSP saat Anda menginginkan pipeline pengaturan yang lebih mudah daripada ASH. SCSP tidak memerlukan instalasi lokal. SCSP dirancang untuk menjalankan pemeriksaan secara individual dalam pipeline dan menampilkan hasil dengan alat. SCSP juga menghindari banyak overhead dengan menyiapkan Docker, dan itu adalah sistem operasi (OS) agnostik.

Apakah SCSP hanya untuk tim keamanan?

Tidak, siapa pun dapat menerapkan pipeline untuk menentukan bagian mana dari kode mereka yang gagal dalam pemeriksaan keamanan. Misalnya, pengguna non-keamanan dapat menggunakan SCSP untuk memeriksa kode mereka sebelum meninjau dengan tim keamanan mereka.

Dapatkah saya menggunakan SCSP jika saya bekerja dengan jenis repositori lain, seperti,, atau GitLab Bitbucket GitHub?

Anda dapat mengonfigurasi repositori git lokal untuk menunjuk ke dua repositori jarak jauh yang berbeda. Misalnya, Anda dapat mengkloning GitLab repositori yang ada, membuat instance SCSP (menentukan, Terraform CloudFormation, dan folder AWS Config Rules Development Kit (AWS RDK), jika diperlukan), dan kemudian gunakan git remote add upstream <SCSPGitLink> untuk mengarahkan repositori lokal ke repositori SCSP juga. CodeCommit Ini memungkinkan perubahan kode dikirim ke SCSP terlebih dahulu, divalidasi, kemudian, setelah pembaruan tambahan dilakukan untuk mengatasi temuan, didorong ke, GitLab GitHub, atau repositori Bitbucket. Untuk informasi selengkapnya tentang beberapa remote, lihat Push commit ke repositori Git tambahan (AWS posting blog).

catatan

Hati-hati terhadap drift, seperti menghindari membuat perubahan melalui antarmuka web.

Berkontribusi dan menambahkan tindakan Anda sendiri

Pengaturan SCSP dipertahankan sebagai GitHub proyek, yang berisi kode sumber untuk aplikasi SCSP AWS Cloud Development Kit (AWS CDK) . Untuk menambahkan pemeriksaan tambahan ke pipeline, AWS CDK aplikasi perlu diperbarui dan kemudian disintesis atau disebarkan ke target Akun AWS tempat pipeline akan berjalan. Untuk melakukan ini, mulailah dengan mengkloning GitHub proyek SCSP, dan kemudian temukan file definisi tumpukan di lib folder.

Jika ada pemeriksaan tambahan yang ingin Anda tambahkan, StandardizedCodeBuildProject kelas dalam AWS CDK kode membuatnya sangat mudah untuk menambahkan tindakan. Berikan nama, deskripsi, dan install atau build perintah. AWS CDK membuat CodeBuild proyek dengan menggunakan nilai default yang masuk akal. Selain membuat proyek build, Anda perlu menambahkannya ke CodePipeline tindakan di tahap build. Saat merancang pemeriksaan baru, tindakan harus dilakukan FAIL jika alat pemindaian mendeteksi masalah atau gagal dijalankan. Tindakan harus dilakukan PASS jika alat pemindaian tidak mendeteksi masalah apa pun. Untuk contoh mengonfigurasi alat, tinjau kode untuk Bandit tindakan tersebut.

Untuk informasi selengkapnya tentang input dan output yang diharapkan, lihat dokumentasi repositori.

Jika Anda menambahkan tindakan kustom, Anda perlu menerapkan SCSP dengan menggunakan cdk deploy atau. cdk synth + CloudFormation deploy Ini karena CloudFormation template tumpukan Quick create dikelola oleh pemilik repo.