Membuat pipeline gambar yang aman

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

Ringkasan

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

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

Pipeline gambar yang aman

Setelah Anda menyiapkan pipeline, 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 diperbarui ke repositori Artifact Registry di project staging. Saat image dalam project staging diverifikasi secara manual, pipeline akan mendorong image ke project yang diverifikasi.

Biaya

Pipeline gambar 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 aman

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

Untuk menyiapkan pipeline gambar aman:

  1. Clone repositori GitHub Secure image pipeline 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 diinginkan.

  5. Edit nilai berikut:

    • PARENT_ORGANIZATION: Masukkan ID organisasi Google Cloud Anda. Skrip pipeline image 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 skrip untuk menyimpan kode otomatisasi Terraform. Pastikan nama tersebut memenuhi persyaratan penamaan bucket.
    • BASEIMGFCT_REGION: Masukkan nama region yang akan digunakan atau gunakan nilai default.
    • BILLING_ACCOUNT: Masukkan akun penagihan yang terkait dengan organisasi.
    • GITHUB_TOKEN: Masukkan token akses pribadi GitHub Anda. Skrip 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 skrip untuk membuat project baru guna menyimpan image dasar.

    5. Masukkan "y".

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

  8. Tekan tombol apa pun untuk melanjutkan.

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

  9. Beralihlah ke jendela browser konsol Google Cloud.

  10. Di pop-up Kelola penginstalan aplikasi GitHub Anda, pilih akun GitHub Anda.

  11. Klik Tambahkan project lain.

  12. Di 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) repositories.

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

  16. Klik Done.

  17. Beralih kembali ke terminal.

  18. Tekan tombol apa pun untuk melanjutkan.

Skrip memerlukan waktu beberapa menit untuk menyelesaikan eksekusi.

Resource yang dibuat oleh pipeline image aman

Saat menyelesaikan eksekusi, skrip penyiapan akan membuat resource berikut:

GitHub:

  • Repositori bernama baseimgfct-[some number]-containers yang berisi kode sumber yang digunakan untuk membuat image container. Skrip setup mengisi repositori ini dengan Dockerfile sederhana, satu untuk setiap distribusi Linux yang populer.
  • Kunci deployment - kunci deployment 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 di baseimgfct-[some number]-containers. Permintaan pull mem-build dan mengirim image ke project staging. Penggabungan mem-build dan mendorong image ke project terverifikasi.

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

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

    • Repositori Docker Artifact Registry yang berisi image penampung yang di-build.
    • Cloud Run berfungsi untuk setiap image dalam project, yang memicu pembuatan ulang image setiap kali perbaikan baru untuk kerentanan yang diketahui ditemukan.
    • Topik Pub/Sub yang digunakan untuk menjalankan fungsi Cloud Run.
    • Instance Server voucher yang berjalan sebagai deployment Cloud Run. Server Voucher memeriksa image dengan daftar persyaratan kebijakan keamanan. Anda dapat menggunakan persyaratan kebijakan default yang disertakan dengan pipeline atau menentukan kebijakan keamanan yang disesuaikan. Setelah pemeriksaan keamanan lulus, server Voucher akan membuat pengesahan untuk image menggunakan Otorisasi Biner. Gambar yang dibuktikan ini, yang juga disebut gambar yang ditandatangani, 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 yang di-stage 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 gambar akhir yang ditandatangani yang telah ditinjau secara manual.

Apa langkah selanjutnya?