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:
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
Anda memerlukan organisasi Google Cloud untuk menggunakan pipeline image 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 mengetahui informasi selengkapnya tentang organisasi Google Cloud, lihat Panduan memulai menggunakan 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 yang aman
Repositori GitHub pipeline gambar aman berisi skrip untuk mengotomatiskan pembuatan image dasar.
Untuk menyiapkan pipeline gambar aman:
Clone repositori GitHub pipeline Gambar aman 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 Anda inginkan.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 IDfoo-builder
,foo-stage
, danfoo-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.
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 pada skrip untuk membuat project baru guna menyimpan image dasar.
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.
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.
Beralih ke jendela browser Google Cloud Console.
Di jendela pop-up Manage your GitHub app installations, pilih akun GitHub Anda.
Klik Tambahkan project lain.
Di menu 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) repository.
Di halaman Create push trigger, klik Skip. Skrip ini membuat pemicu push untuk Anda secara otomatis.
Klik Done.
Beralih kembali ke terminal.
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. Skripsetup
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?
- Pelajari cara menggunakan pipeline gambar dasar.
- Pelajari cara menentukan kebijakan keamanan yang disesuaikan.