Membuat pipeline image yang aman

Halaman ini menjelaskan cara menyiapkan Pipeline gambar aman untuk mengotomatiskan pembuatan image container dasar.

Ringkasan

Pipeline gambar aman adalah alat open source yang menyiapkan framework project Google Cloud, resource, dan repositori GitHub yang dapat Anda gunakan untuk membuat dan memelihara image dasar yang disesuaikan dan aman. Anda dapat menggunakan image dari project Google Cloud.

Gambar berikut mengilustrasikan framework resource yang dibuat oleh pipeline gambar yang aman:

Mengamankan image pipeline

Setelah Anda menyiapkannya, pipeline akan membuat resource berikut:

  • Repositori GitHub yang menghosting kode sumber untuk image container.

  • Tiga project Google Cloud: project build, project staging, dan project terverifikasi. Setiap kali image diperbarui di repositori image, pemicu Cloud Build di project build akan mem-build, menandatangani, dan mengirim image yang diupdate ke repositori Artifact Registry di project staging. Jika image dalam project staging diverifikasi secara manual, pipeline akan mengirim gambar ke project terverifikasi.

Biaya

Pipeline image aman menggunakan produk Google Cloud berikut.

Gunakan Kalkulator Harga untuk membuat perkiraan biaya berdasarkan penggunaan yang Anda proyeksikan.

Sebelum memulai

Izin IAM yang diperlukan

Pengguna yang menyiapkan pipeline gambar aman memerlukan peran Identity and Access Management roles/organization.admin dan roles/billing.admin untuk organisasi Google Cloud. Untuk mengetahui petunjuk tentang cara memberikan peran IAM, lihat Memberikan, mengubah, dan mencabut akses.

Menyiapkan pipeline gambar yang aman

Repositori GitHub pipeline gambar aman berisi skrip untuk mengotomatiskan pembuatan image dasar.

Untuk menyiapkan pipeline gambar aman:

  1. Clone repositori GitHub pipeline Gambar aman ke komputer lokal Anda:

    git clone https://github.com/GoogleCloudPlatform/secure-image-pipeline
    
  2. Buka direktori secure-image-pipeline:

    cd secure-image-pipeline/
    
  3. Salin env.sh.tmpl ke env.sh:

    cp env.sh.tmpl env.sh
    
  4. Buka env.sh di editor yang Anda inginkan.

  5. Edit nilai berikut:

    • PARENT_ORGANIZATION: Masukkan ID organisasi Google Cloud Anda. Skrip pipeline gambar aman menggunakan organisasi ini untuk membuat project Google Cloud dan image dasar.
    • BASEIMGFCT_PROJECT: Masukkan string yang digunakan skrip untuk membuat ID project dari project yang dibuatnya. String harus terdiri dari 6 hingga 30 huruf kecil, angka, atau tanda hubung. Nama ini harus diawali dengan huruf dan tidak boleh memiliki tanda hubung di akhir. Misalnya, jika Anda menentukan foo, skrip akan membuat tiga project dengan ID foo-builder, foo-stage, dan foo-verified.
    • BASEIMGFCT_BUCKET: Masukkan nama untuk bucket Cloud Storage yang dibuat oleh skrip untuk menyimpan kode otomatisasi Terraform. Pastikan nama ini memenuhi persyaratan penamaan bucket.
    • BASEIMGFCT_REGION: Masukkan nama wilayah untuk menggunakan atau menggunakan nilai default.
    • BILLING_ACCOUNT: Masukkan akun penagihan yang terkait dengan organisasi.
    • GITHUB_TOKEN: Masukkan token akses pribadi GitHub Anda. Skrip ini menggunakan token ini untuk membuat repositori GitHub yang berisi kode sumber untuk image dasar.
  6. Jalankan skrip penyiapan:

    ./setup.sh
    
  7. Masukkan informasi akun GitHub berikut saat diminta:

    1. Nama organisasi GitHub Anda.

    2. Alamat email GitHub Anda.

    3. Nama pengguna GitHub Anda.

    4. Berikan izin pada skrip untuk membuat project baru guna menyimpan image dasar.

    5. Masukkan "y".

    Operasi ini membutuhkan waktu beberapa menit untuk dijalankan. Setelah selesai, tindakan ini akan menampilkan pesan Tautkan repositori GitHub Anda dan tekan tombol apa pun untuk melanjutkan.

  8. Tekan sembarang tombol untuk melanjutkan.

    Skrip ini akan membuka jendela browser Google Cloud Console baru untuk menautkan repositori GitHub Anda dengan project Google Cloud Anda.

  9. Beralih ke jendela browser Google Cloud Console.

  10. Di jendela pop-up Manage your GitHub app installations, pilih akun GitHub Anda.

  11. Klik Tambahkan project lain.

  12. Di menu drop-down Select a project, pilih project dengan format YOUR_PROJECT_NAME-builder.

  13. Centang kotak izin, lalu klik Berikutnya.

  14. Dalam daftar repositori, pilih repositori bernama baseimgfact-[some number]-containers, lalu klik Connect (1) repository.

  15. Di halaman Create push trigger, klik Skip. Skrip ini membuat pemicu push untuk Anda secara otomatis.

  16. Klik Done.

  17. Beralih kembali ke terminal.

  18. Tekan sembarang tombol untuk melanjutkan.

Skrip membutuhkan waktu beberapa menit untuk menyelesaikan eksekusi.

Resource yang dibuat oleh pipeline gambar aman

Saat skrip penyiapan menyelesaikan eksekusi, skrip akan membuat resource berikut:

GitHub:

  • Repositori bernama baseimgfct-[some number]-containers yang berisi kode sumber yang digunakan untuk membuat image container. Skrip setup menempatkan repositori ini dengan Dockerfile sederhana, satu untuk setiap distribusi Linux yang populer.
  • Deploy kunci - kunci deploy akses tulis terpisah untuk repositori.

Project Google Cloud:

  • Project Google Cloud bernama YOUR_PROJECT_NAME-builder yang berisi resource untuk mem-build dan mengirim image ke project staging setiap kali kode sumber diperbarui di repositori GitHub.

    Project ini berisi pemicu Cloud Build yang memanggil build saat permintaan pull atau penggabungan dilakukan di cabang utama pada baseimgfct-[some number]-containers. Permintaan pull mem-build dan mengirim gambar ke project staging. Penggabungan akan mem-build dan mengirim image ke project terverifikasi.

    Izin IAM untuk YOUR_PROJECT_NAME-builder: Sebaiknya Anda memberikan akses ke project ini hanya kepada anggota tim yang diharapkan akan melakukan perubahan pada pipeline. Untuk petunjuk tentang cara memberikan akses ke project, lihat Memberikan, mengubah, dan mencabut akses.

  • Project Google Cloud bernama YOUR_PROJECT_NAME-stage yang digunakan untuk menempatkan gambar untuk peninjauan manual sebelum gambar dirilis ke project terverifikasi. Project ini berisi referensi berikut:

    • Repositori Docker Artifact Registry yang berisi image container yang telah dibangun.
    • Cloud Functions untuk setiap image dalam project, yang memicu build ulang gambar setiap kali ditemukan perbaikan baru untuk kerentanan yang diketahui.
    • Topik Pub/Sub yang digunakan untuk menjalankan Cloud Functions.
    • Instance server Voucher yang berjalan sebagai deployment Cloud Run. Server Voucher memeriksa gambar dengan daftar persyaratan kebijakan keamanan. Anda dapat menggunakan persyaratan kebijakan default yang disertakan dalam pipeline atau menentukan kebijakan keamanan yang disesuaikan. Setelah lulus pemeriksaan keamanan, server Voucher akan membuat pengesahan untuk gambar menggunakan Otorisasi Biner. Gambar yang disahkan ini, juga disebut gambar bertanda tangan, kemudian dikirim ke project terverifikasi.

    Izin IAM untuk YOUR_PROJECT_NAME-stage: Sebaiknya Anda hanya memberikan akses untuk project ini kepada developer yang diizinkan untuk membaca image bertahap dari Artifact Registry. Untuk mengetahui petunjuk tentang cara memberikan akses ke project, lihat Memberikan, mengubah, dan mencabut akses.

  • Project Google Cloud bernama YOUR_PROJECT_NAME-verified. Project ini berisi image akhir yang ditandatangani dan telah ditinjau secara manual.

Apa langkah selanjutnya?