Memvalidasi Gambar dengan Gitlab CI / CD

Halo semuanya, pada awal kursus "CI / CD di AWS, Azure dan Gitlab" kami menyiapkan terjemahan materi yang menarik.




Pada artikel ini, kita akan berbicara tentang cara memeriksa gambar kontainer pada platform Gitlab CI / CD menggunakan Sysdig Secure .

Gambar kontainer yang tidak mematuhi kebijakan keamanan yang ditentukan dalam Sysdig Secure tidak akan dipublikasikan ke registri kontainer dan akan menghentikan pipa.



Finder Kerentanan dengan Gitlab CI / CD


Gitlab CI / CD adalah server integrasi dan pengiriman berkelanjutan sumber terbuka yang dibangun ke dalam platform pengembangan dan kolaborasi perangkat lunak Gitlab.

Setelah Anda mengkonfigurasi Gitlab CI / CD untuk repositori Anda, setiap kali pengembang berkomitmen pada cabang-cabang repositori yang dilacak, skrip pipa akan berjalan secara otomatis.

Pipa seperti itu dapat digunakan untuk mengotomatisasi banyak proses. Misalnya, untuk pengujian QA, pembuatan artefak distribusi perangkat lunak (seperti gambar Docker atau paket Linux) atau, untuk apa yang akan kita bicarakan dalam artikel ini - untuk memverifikasi konfigurasi, mencari kerentanan dan memverifikasi kepatuhan.

Memeriksa Gambar pada Gitlab CI / CD Pipeline: bergeser keamanan ke kiri


Seperti di tempat lain di TI, semakin cepat Anda menemukan kerentanan dalam sebuah wadah, semakin cepat dan mudah Anda dapat memperbaikinya tanpa konsekuensi.

Menanamkan pemeriksaan kerentanan dalam perakitan pipa Anda adalah praktik yang baik karena beberapa alasan:

  • Kerentanan yang ada tidak akan pernah masuk ke produksi;
  • «secure-by-default», , , .
  • , . , - .

Sysdig Secure menawarkan seperangkat alat berfitur lengkap untuk memeriksa wadah gambar bersama dengan banyak fungsi inspeksi keamanan wadah lainnya seperti profil kinerja waktu ancaman deteksi berdasarkan pembelajaran mesin dan templat deteksi ancaman yang dapat diperluas, Kotak Paksa Kubernetes , merespons insiden dan keahlian di kepatuhan . Mari kita lihat bagaimana layanan Validasi Sysdig Secure Image bekerja dengan Gitlab.

Persyaratan Pemeriksaan Keamanan di Gitlab


Untuk menyelesaikan langkah-langkah berikut, Anda perlu:


Mengkonfigurasi Pipa Gitlab CI / CD untuk Inspeksi Gambar dengan Sysdig Secure


Kita akan melihat dalam praktiknya bagaimana kedua platform ini dapat diintegrasikan. Dengan panduan ini, Anda akan belajar cara bekerja dengan pemindaian Sysdig Secure Image dalam hitungan menit.

Konfigurasikan Kredensial Akses


Pipa Gitlab CI / CD akan membutuhkan akses kredensial untuk berkomunikasi dengan backend Sysdig Secure. Untuk melakukan semuanya dengan benar, salin token akses dari Sysdig Pengaturan UI> Profil pengguna .

Kemudian buat variabel global baru untuk proyek Gitlab Anda:

  1. Di proyek Anda, buka Pengaturan> CI / CD dan pilih Variabel .
  2. Buat variabel baru SYSDIG_SECURE_TOKENdan tambahkan kunci API Sysdig Secure di bidang nilai .
  3. Klik pada tombol Masked sehingga token API Anda tidak dicetak dalam log pipa.

Definisi pipa Gitlab


Pertama, kami membutuhkan file Docker yang mendefinisikan gambar yang akan Anda kumpulkan. Anda dapat mengunggah file Docker apa pun yang Anda inginkan ke proyek Anda, atau cukup gunakan contoh berikut:

FROM debian:stretch
RUN apt update && apt install python-pip python-numpy openssh-server -y && rm -rf /var/lib/apt
RUN pip install flask
COPY app.py /app.py
EXPOSE 5000 22
ENTRYPOINT ["python", "./app.py"]

Maka Anda perlu membuat file baru .gitlab-ci.ymldi root proyek. File ini akan menjelaskan semua langkah yang diperlukan (tahapan) dari perakitan lingkungan kita. Dia akan menentukan semua tahapan yang diperlukan.

Ada 3 tahap dalam pipa kami:

  • Perakitan gambar kontainer;
  • Memindai gambar untuk kerentanan atau pelanggaran kebijakan;
  • Memindahkan gambar ke repositori tujuan.

variables:
  CI_REGISTRY_IMAGE: "sysdiglabs/dummy-vuln-app"
  SCAN_IMAGE_NAME: "sysdiglabs/secure_inline_scan:latest"
  SYSDIG_SECURE_ENDPOINT: "https://secure.sysdig.com"

docker-build-master:
  image: docker:latest
  stage: build
  services:
    - docker:dind
  before_script:
    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" "$CI_REGISTRY"
  script:
    - docker build --pull -t "$CI_REGISTRY_IMAGE" .
    - docker run --rm -v /var/run/docker.sock:/var/run/docker.sock "$SCAN_IMAGE_NAME" /bin/inline_scan analyze -s "$SYSDIG_SECURE_ENDPOINT" -k "$SYSDIG_SECURE_TOKEN" "$CI_REGISTRY_IMAGE"
    - docker push "$CI_REGISTRY_IMAGE"
  only:
    - master

Buat gambar wadah


Perakitan gambar terjadi dengan docker build --pull -t "$CI_REGISTRY_NAME". Dibutuhkan instruksi dari file Docker Anda dan menghasilkan gambar lokal baru, yang akan diperiksa pada langkah berikutnya.

Memindai Kerentanan


Tahap selanjutnya adalah memeriksa wadah. Di sini kita akan memeriksa kerentanan gambar dan memeriksa konfigurasi, menyimpan hasilnya pada backend Sysdig.

Salah satu keuntungan pemindaian lokal Sysdig adalah Anda tidak kehilangan kendali atas gambar Anda, karena gambar tidak perlu dipindahkan ke registri lain atau diekspos dari luar untuk melakukan pemindaian. Itu terjadi di dalam pelari, dan hanya hasilnya dikirim ke Sysdig Secure.

docker run --rm -v /var/run/docker.sock:/var/run/docker.sock "$SCAN_IMAGE_NAME" /bin/inline_scan analyze -s "$SYSDIG_SECURE_ENDPOINT" -k "$SYSDIG_SECURE_TOKEN" "$CI_REGISTRY_IMAGE"

Pada titik ini, Sysdig Secure akan mengembalikan kode kesalahan jika gambar memenuhi salah satu kondisi berhenti yang ditentukan dalam kebijakan Anda (misalnya, kerentanan kritis). Menghentikan jalur pipa akan mencegah pemindahan gambar yang rentan ke registry penampung.





Di Sysdig Secure, kita dapat melihat informasi tambahan dan memahami mengapa pemeriksaan keamanan gagal untuk menyelesaikan:



Seperti yang Anda lihat di tangkapan layar, kontainer membiarkan port 22 terbuka, yang ada dalam daftar port terlarang, dan juga mengandung beberapa kerentanan serius di perpustakaan Python.

Pindahkan gambar ke repositori tujuan


Setelah berhasil memeriksa kerentanan, pipa akan mendorong docker dan gambar akan diterbitkan ke registri kontainer. Jika Anda tidak menentukan kredensial atau penyimpanan jarak jauh, Gitlab menggunakan default .

Kesimpulan


Dengan menggunakan pemindaian gambar Sysdig Secure, Anda dapat memeriksa gambar pada pipa Gitlab CI / CD tanpa mengirimnya dari infrastruktur ke registri publik atau menengah, memeriksa konfigurasi dan mencegah kebocoran kerentanan terhadap produksi.

Temukan kerentanan yang diketahui dan periksa konfigurasi untuk kesesuaian dengan rekomendasi keamanan, termasuk instruksi Dockerfile, daftar putih dan hitam paket atau pustaka pihak ketiga yang diinstal pada gambar dasar, seperti file JAR / WAR di Jawa atau manajer paket bahasa seperti npm untuk Javascript, pip untuk Python dan permata untuk Ruby.

Jika terjadi kegagalan, Anda dapat dengan cepat melaporkan ini ke pembuat kontainer untuk dengan cepat menyelesaikan masalah dan membuat kebijakan keamanan wadah yang aman menurut standar. Untuk mencoba Sysdig Secure, Anda dapat memintademo hari ini!

Itu saja. Pelajari lebih lanjut tentang kursus di sini .

All Articles