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:
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.
- Cloud Build
- Artifact Registry
- Artifact Analysis
- Otorisasi Biner
- Pub/Sub
- Cloud Run
- Cloud Run Functions
Gunakan Kalkulator Harga untuk membuat perkiraan biaya berdasarkan penggunaan yang Anda proyeksikan.
Sebelum memulai
Anda memerlukan organisasi Google Cloud untuk menggunakan pipeline image yang aman. Pelanggan Google Workspace dan Cloud Identity dapat membuat organisasi Google Cloud:
- Google Workspace: Daftar ke Google Workspace.
- Cloud Identity: Daftar ke Cloud Identity.
Untuk informasi selengkapnya tentang organisasi Google Cloud, lihat Panduan memulai penggunaan organisasi.
Instal Terraform 0.14.10.
Jika Anda belum memilikinya, buat akun di GitHub.
- Jika Anda telah menyiapkan autentikasi 2 langkah di GitHub, buat token akses pribadi untuk digunakan sebagai pengganti sandi GitHub dengan command line.
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:
Clone repositori GitHub Secure image pipeline ke komputer lokal Anda:
git clone https://github.com/GoogleCloudPlatform/secure-image-pipeline
Buka direktori
secure-image-pipeline
:cd secure-image-pipeline/
Salin
env.sh.tmpl
keenv.sh
:cp env.sh.tmpl env.sh
Buka
env.sh
di editor yang diinginkan.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 IDfoo-builder
,foo-stage
, danfoo-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.
Jalankan skrip penyiapan:
./setup.sh
Masukkan informasi akun GitHub berikut saat diminta:
Nama organisasi GitHub Anda.
Alamat email GitHub Anda.
Nama pengguna GitHub Anda.
Berikan izin skrip untuk membuat project baru guna menyimpan image dasar.
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.
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.
Beralihlah ke jendela browser konsol Google Cloud.
Di pop-up Kelola penginstalan aplikasi GitHub Anda, pilih akun GitHub Anda.
Klik Tambahkan project lain.
Di drop-down Select a project, pilih project dengan format YOUR_PROJECT_NAME-builder.
Centang kotak izin, lalu klik Berikutnya.
Dalam daftar repositori, pilih repositori bernama baseimgfact-[some number]-containers, lalu klik Connect (1) repositories.
Di halaman Create push trigger, klik Skip. Skrip akan otomatis membuat pemicu push untuk Anda.
Klik Done.
Beralih kembali ke terminal.
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. Skripsetup
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?
- Pelajari cara menggunakan pipeline image dasar.
- Pelajari cara menentukan kebijakan keamanan yang disesuaikan.