Halaman ini menunjukkan cara menggunakan pemeriksaan SLSA validasi berkelanjutan (CV) Otorisasi Biner, yang memeriksa asal yang sesuai dengan SLSA dari image container yang terkait dengan Pod yang berjalan di cluster GKE tempat CV diaktifkan.
Untuk menggunakan pemeriksaan ini, Anda harus membangun image dengan Cloud Build, yang menghasilkan provenance yang kompatibel dengan SLSA.
Contoh dalam panduan ini menggunakan Cloud Source Repositories untuk repositori kode sumber, Artifact Registry untuk registry image, dan Cloud Build untuk membangun image dan menghasilkan asal-usul.
Satu-satunya builder tepercaya yang didukung oleh pemeriksaan SLSA adalah Cloud Build.
Biaya
Panduan ini menggunakan layanan Google Cloud berikut:
- Artifact Registry
- Otorisasi Biner, tetapi CV tersedia tanpa biaya selama tahap Pratinjau
- Cloud Build
- Cloud Source Repositories
- GKE
Untuk membuat perkiraan biaya berdasarkan proyeksi penggunaan Anda, gunakan kalkulator harga.
Sebelum memulai
- Login ke akun Google Cloud Anda. Jika Anda baru menggunakan Google Cloud, buat akun untuk mengevaluasi performa produk kami dalam skenario dunia nyata. Pelanggan baru juga mendapatkan kredit gratis senilai $300 untuk menjalankan, menguji, dan men-deploy workload.
-
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init -
Buat atau pilih Google Cloud project.
Peran yang diperlukan untuk memilih atau membuat project
- Pilih project: Memilih project tidak memerlukan peran IAM tertentu—Anda dapat memilih project mana pun yang telah diberi peran.
-
Membuat project: Untuk membuat project, Anda memerlukan peran Pembuat Project
(
roles/resourcemanager.projectCreator), yang berisi izinresourcemanager.projects.create. Pelajari cara memberikan peran.
-
Buat Google Cloud project:
gcloud projects create PROJECT_ID
Ganti
PROJECT_IDdengan nama untuk Google Cloud project yang Anda buat. -
Pilih project Google Cloud yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_IDdengan nama project Google Cloud Anda.
-
Verifikasi bahwa penagihan diaktifkan untuk project Google Cloud Anda.
Aktifkan API Artifact Registry, Otorisasi Biner, Cloud Build, GKE, Cloud Source Repositories:
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan izin
serviceusage.services.enable. Jika Anda membuat project, kemungkinan Anda sudah memiliki izin ini melalui peran Pemilik (roles/owner). Jika tidak, Anda bisa mendapatkan izin ini melalui peran Admin Penggunaan Layanan (roles/serviceusage.serviceUsageAdmin). Pelajari cara memberikan peran.gcloud services enable artifactregistry.googleapis.com
binaryauthorization.googleapis.com cloudbuild.googleapis.com container.googleapis.com sourcerepo.googleapis.com -
Instal Google Cloud CLI.
-
Jika Anda menggunakan penyedia identitas (IdP) eksternal, Anda harus login ke gcloud CLI dengan identitas gabungan Anda terlebih dahulu.
-
Untuk melakukan inisialisasi gcloud CLI, jalankan perintah berikut:
gcloud init -
Buat atau pilih Google Cloud project.
Peran yang diperlukan untuk memilih atau membuat project
- Pilih project: Memilih project tidak memerlukan peran IAM tertentu—Anda dapat memilih project mana pun yang telah diberi peran.
-
Membuat project: Untuk membuat project, Anda memerlukan peran Pembuat Project
(
roles/resourcemanager.projectCreator), yang berisi izinresourcemanager.projects.create. Pelajari cara memberikan peran.
-
Buat Google Cloud project:
gcloud projects create PROJECT_ID
Ganti
PROJECT_IDdengan nama untuk Google Cloud project yang Anda buat. -
Pilih project Google Cloud yang Anda buat:
gcloud config set project PROJECT_ID
Ganti
PROJECT_IDdengan nama project Google Cloud Anda.
-
Verifikasi bahwa penagihan diaktifkan untuk project Google Cloud Anda.
Aktifkan API Artifact Registry, Otorisasi Biner, Cloud Build, GKE, Cloud Source Repositories:
Peran yang diperlukan untuk mengaktifkan API
Untuk mengaktifkan API, Anda memerlukan izin
serviceusage.services.enable. Jika Anda membuat project, kemungkinan Anda sudah memiliki izin ini melalui peran Pemilik (roles/owner). Jika tidak, Anda bisa mendapatkan izin ini melalui peran Admin Penggunaan Layanan (roles/serviceusage.serviceUsageAdmin). Pelajari cara memberikan peran.gcloud services enable artifactregistry.googleapis.com
binaryauthorization.googleapis.com cloudbuild.googleapis.com container.googleapis.com sourcerepo.googleapis.com - Pastikan gcloud CLI diupdate ke versi terbaru.
- Instal alat command line
kubectl. - Jika kebijakan Otorisasi Biner dan cluster GKE Anda berada di project yang berbeda, pastikan Otorisasi Biner diaktifkan di kedua project.
Peran yang diperlukan
Bagian ini menunjukkan cara menetapkan peran untuk pemeriksaan ini.
Ringkasan
Jika Anda menjalankan semua produk yang disebutkan dalam panduan ini di project yang sama, Anda tidak perlu menyetel izin apa pun. Otorisasi Biner mengonfigurasi peran dengan benar saat Anda mengaktifkannya. Jika menjalankan produk di project yang berbeda, Anda harus menetapkan peran seperti yang dijelaskan di bagian ini.
Untuk memastikan bahwa Agen Layanan Otorisasi Biner di setiap project memiliki izin yang diperlukan untuk mengevaluasi pemeriksaan SLSA CV, minta administrator untuk memberikan peran IAM berikut kepada Agen Layanan Otorisasi Biner di setiap project:
- Artifact Registry Reader (
roles/artifactregistry.reader) di akun layanan Compute Engine project cluster -
Jika project cluster Anda berbeda dengan project kebijakan:
Binary Authorization Policy Evaluator (
roles/binaryauthorization.policyEvaluator) pada Agen Layanan Otorisasi Biner project cluster, agar dapat mengakses project kebijakan -
Jika project pengesahan Anda berbeda dengan project kebijakan Anda:
Pelihat Peristiwa Analisis Kontainer (
roles/containeranalysis.occurrences.viewer) di Agen Layanan Otorisasi Biner project kebijakan, agar dapat mengakses project pengesahan
Untuk mengetahui informasi selengkapnya tentang pemberian peran, lihat Mengelola akses ke project, folder, dan organisasi.
Administrator Anda mungkin juga dapat memberikan izin yang diperlukan kepada Agen Layanan Otorisasi Biner di setiap project melalui peran khusus atau peran bawaan lainnya.
Memberikan peran menggunakan gcloud CLI
Untuk memastikan akun layanan di setiap project memiliki izin yang diperlukan untuk mengevaluasi pemeriksaan ini, berikan peran IAM berikut kepada akun layanan di setiap project:
Jika project tempat Anda menjalankan cluster berbeda dengan project tempat kebijakan berada, Anda harus memberikan izin kepada agen layanan Otorisasi Biner project cluster untuk mengakses kebijakan di project kebijakan.
Dapatkan agen layanan Otorisasi Biner project cluster:
PROJECT_NUMBER=$(gcloud projects list \ --filter="projectId:CLUSTER_PROJECT_ID" \ --format="value(PROJECT_NUMBER)") CLUSTER_SERVICE_ACCOUNT="service-$PROJECT_NUMBER@gcp-sa-binaryauthorization.iam.gserviceaccount.com"Ganti
CLUSTER_PROJECT_IDdengan project ID cluster.Izinkan CV mengevaluasi kebijakan di cluster:
gcloud projects add-iam-policy-binding POLICY_PROJECT_ID \ --member="serviceAccount:$CLUSTER_SERVICE_ACCOUNT" \ --role='roles/binaryauthorization.policyEvaluator'Ganti
POLICY_PROJECT_IDdengan ID project yang berisi kebijakan Anda.
Mengizinkan agen layanan project kebijakan mengakses pengesahan:
Dapatkan agen layanan Otorisasi Biner yang terkait dengan project kebijakan:
PROJECT_NUMBER=$(gcloud projects list \ --filter="projectId:POLICY_PROJECT_ID" \ --format="value(PROJECT_NUMBER)") POLICY_PROJECT_SERVICE_ACCOUNT="service-$PROJECT_NUMBER@gcp-sa-binaryauthorization.iam.gserviceaccount.com"Ganti
POLICY_PROJECT_IDdengan ID project yang berisi kebijakan Anda.Berikan peran:
gcloud projects add-iam-policy-binding ATTESTATION_PROJECT_ID \ --member="serviceAccount:$POLICY_PROJECT_SERVICE_ACCOUNT" \ --role='roles/containeranalysis.occurrences.viewer'Ganti
ATTESTATION_PROJECT_IDdengan ID project yang berisi pengesahan Anda.
Izinkan akun layanan Compute Engine default untuk menarik image dari repositori:
Dapatkan akun layanan Compute Engine yang terkait dengan project cluster:
PROJECT_NUMBER=$(gcloud projects list \ --filter="projectId:CLUSTER_PROJECT_ID" \ --format="value(PROJECT_NUMBER)") COMPUTE_ENGINE_SERVICE_ACCOUNT="$PROJECT_NUMBER-compute@developer.gserviceaccount.com"Ganti
CLUSTER_PROJECT_IDdengan ID project cluster yang berisi kebijakan Anda.Berikan peran:
gcloud projects add-iam-policy-binding ARTIFACT_PROJECT_ID \ --member="serviceAccount:$COMPUTE_ENGINE_SERVICE_ACCOUNT" \ --role='roles/artifactregistry.reader'Ganti
ARTIFACT_PROJECT_IDdengan ID project Artifact Registry yang menyimpan image yang akan di-deploy.
Opsional: Membangun dan mengupload gambar sampel
Bagian ini disertakan untuk tujuan ilustrasi, untuk menunjukkan cara membuat contoh gambar dengan asal-usul yang sesuai dengan SLSA. Provenans digunakan nanti dalam panduan untuk mendemonstrasikan pemeriksaan. Pelajari lebih lanjut provenance Cloud Build.
Buat repositori contoh
Untuk membuat repositori di Cloud Source Repositories, lakukan hal berikut:
Buat repositori dan clone secara lokal:
gcloud source repos create SOURCE_REPO_NAME \ --project=SOURCE_REPO_PROJECT_ID && \ gcloud source repos clone SOURCE_REPO_NAME \ --project=SOURCE_REPO_PROJECT_ID && \ cd SOURCE_REPO_NAMEGanti kode berikut:
SOURCE_REPO_NAME: nama repositori kode sumber Anda—misalnya:slsa-check-test-repoSOURCE_REPO_PROJECT_ID: project ID repositori
Untuk membuat file sumber, konfigurasi, dan build, lakukan hal berikut:
Buat sumber gambar:
cat > quickstart.sh <<EOF #!/bin/sh echo "Hello, world! The time is $(date)." sleep infinity EOFSetel agar file dapat dieksekusi:
chmod +x quickstart.shBuat file konfigurasi Dockerfile:
cat > Dockerfile <<EOF FROM alpine COPY quickstart.sh / CMD ["/quickstart.sh"] EOFBuat file
cloudbuild.yamlCloud Build, yang mengirim image ke Artifact Registry:cat > cloudbuild.yaml <<EOF steps: - name: 'gcr.io/cloud-builders/docker' args: [ 'build', '-t', 'LOCATION-docker.pkg.dev/ARTIFACT_PROJECT_ID/ARTIFACT_REPO_NAME/DIRECTORY/IMAGE', '.' ] options: requestedVerifyOption: VERIFIED images: - 'LOCATION-docker.pkg.dev/ARTIFACT_PROJECT_ID/ARTIFACT_REPO_NAME/DIRECTORY/IMAGE' EOFGanti kode berikut:
LOCATION: lokasi Artifact Registry—misalnya:us-west2,europe-central2, atauasia-east1ARTIFACT_PROJECT_ID: ID project yang menyimpan artefak Artifact RegistryARTIFACT_REPO_NAME: nama repositori Artifact Registry—misalnya:slsa-check-test-repoDIRECTORY: direktori—misalnya:slsa-checkIMAGE: jalur ke image—misalnya:slsa-check-image
Lakukan commit pada file ke Cloud Source Repositories:
git add