Halaman ini menjelaskan cara membuat attestor kustom di Otorisasi Biner menggunakan konsol Google Cloud . Sebagai alternatif, Anda juga dapat melakukan langkah-langkah ini menggunakan Google Cloud CLI, atau REST API. Tugas ini merupakan bagian dari penyiapan Otorisasi Biner.
Sebagai pengguna Cloud Build, Anda dapat menggunakan attestor built-by-cloud-build untuk men-deploy hanya image yang dibuat oleh Cloud Build.
Sebelum memulai
Sebelum membuat attestor, lakukan hal berikut:
Ringkasan
Attestor adalah resource Google Cloud yang digunakan Otorisasi Biner untuk memverifikasi pengesahan. Untuk mempelajari lebih lanjut Otorisasi Biner, lihat Ringkasan Otorisasi Biner.
Untuk membuat attestor, lakukan hal berikut:
- Siapkan pasangan kunci yang dapat digunakan untuk menandatangani image terlebih dahulu, membuat pengesahan, dan kemudian memverifikasi image, saat di-deploy. Pasangan kunci PKIX adalah pasangan kunci yang dihasilkan oleh Cloud Key Management Service (Cloud KMS) dalam format yang kompatibel dengan PKIX.
- Buat attestor itu sendiri di Otorisasi Biner dan kaitkan kunci publik yang Anda buat
Dalam penyiapan satu project, Anda membuat attestor di project yang sama dengan tempat Anda mengonfigurasi kebijakan Otorisasi Biner. Dalam penyiapan multi-project, kemungkinan besar Anda memiliki project deployer tempat kebijakan Anda dikonfigurasi dan project attestor terpisah tempat attestor Anda disimpan.
Menyiapkan kunci kriptografis
Otorisasi Biner memungkinkan Anda menggunakan kunci PKIX untuk menandatangani image dengan aman, lalu memverifikasinya nanti. Hal ini memastikan bahwa hanya pihak terverifikasi yang dapat mengizinkan image container. Untuk menggunakan pengesahan, Anda harus menyiapkan kunci asimetris, seperti kunci Infrastruktur Kunci Publik (X.509) (PKIX), untuk memverifikasi identitas pemberi pengesahan dengan aman. Saat image di-deploy, Otorisasi Biner akan memeriksa pengesahan image yang ditandatangani dengan kunci pribadi menggunakan kunci publik di attestor.
Dalam panduan ini, Algoritma Tanda Tangan Digital Kurva Eliptik (ECDSA) yang direkomendasikan digunakan untuk membuat pasangan kunci PKIX. Anda juga dapat menggunakan kunci RSA atau PGP untuk penandatanganan. Untuk mengetahui informasi selengkapnya tentang algoritma penandatanganan, lihat Tujuan dan algoritma kunci.
Membuat pasangan kunci PKIX
Otorisasi Biner memungkinkan Anda menggunakan pasangan kunci PKIX asimetris untuk menandatangani dan memverifikasi image.
Pasangan kunci PKIX terdiri dari kunci pribadi, yang digunakan penanda tangan untuk menandatangani pengesahan secara digital, dan kunci publik, yang Anda tambahkan ke attestor. Pada waktu deployment, Otorisasi Biner menggunakan kunci publik ini untuk memverifikasi pengesahan yang ditandatangani oleh kunci pribadi.
Pasangan kunci asimetris yang dibuat dan disimpan di Cloud KMS mematuhi format PKIX. Untuk membuat kunci Cloud KMS yang akan digunakan dengan Otorisasi Biner, lihat Membuat Kunci Asimetris. Pastikan Anda memilih Asymmetric Sign sebagai tujuan kunci saat membuat kunci.
PKIX (Cloud KMS)
Untuk membuat pasangan kunci di Cloud KMS, lakukan hal berikut:
Siapkan variabel lingkungan yang diperlukan untuk membuat pasangan kunci.
KMS_KEY_PROJECT_ID=${PROJECT_ID} KMS_KEYRING_NAME=my-binauthz-keyring KMS_KEY_NAME=my-binauthz-kms-key-name KMS_KEY_LOCATION=global KMS_KEY_PURPOSE=asymmetric-signing KMS_KEY_ALGORITHM=ec-sign-p256-sha256 KMS_PROTECTION_LEVEL=software KMS_KEY_VERSION=1Buat keyring.
gcloud kms keyrings create ${KMS_KEYRING_NAME} \ --location ${KMS_KEY_LOCATION}Buat kunci:
gcloud kms keys create ${KMS_KEY_NAME} \ --location ${KMS_KEY_LOCATION} \ --keyring ${KMS_KEYRING_NAME} \ --purpose ${KMS_KEY_PURPOSE} \ --default-algorithm ${KMS_KEY_ALGORITHM} \ --protection-level ${KMS_PROTECTION_LEVEL}
PKIX (kunci lokal)
Untuk membuat pasangan kunci PKIX asimetris lokal baru dan menyimpannya dalam file, lakukan hal berikut:
Buat kunci:
PRIVATE_KEY_FILE="/tmp/ec_private.pem" openssl ecparam -genkey -name prime256v1 -noout -out ${PRIVATE_KEY_FILE}Karena file ini berisi kunci publik dan kunci pribadi, Anda perlu mengekstrak kunci publik ke dalam file terpisah agar dapat menambahkannya ke attestor:
PUBLIC_KEY_FILE="/tmp/ec_public.pem" openssl ec -in ${PRIVATE_KEY_FILE} -pubout -out ${PUBLIC_KEY_FILE}
Membuat attestor
Langkah berikutnya adalah membuat attestor itu sendiri dan mengaitkan catatan Artifact Analysis dan kunci publik.
Otorisasi Biner menggunakan Artifact Analysis untuk menyimpan metadata tepercaya yang digunakan dalam proses otorisasi. Untuk setiap attestor yang Anda buat, Anda harus membuat satu catatan Artifact Analysis. Setiap pengesahan disimpan sebagai kemunculan catatan ini.
Untuk membuat attestor:
Buka halaman Binary Authorization untuk project attestor.
Di tab Attestors, klik Create.
Klik Create New Attestor.
Di Attestor Name, masukkan nama untuk attestor (misalnya, build-secure atau prod-qa).
Untuk menambahkan kunci publik ke attestor, lakukan hal berikut:
PKIX (kunci lokal)
- Klik Tambahkan Kunci PKIX.
- Klik Impor dari file.
- Buka dan pilih file kunci PKIX yang Anda simpan sebelumnya. Catatan: Anda juga dapat menempelkan kunci publik dalam format PEM.
- Pilih Signature algorithm. Kunci contoh dalam panduan ini dibuat dengan algoritma Elliptic Curve P256 - SHA Digest.
PKIX (Cloud KMS)
- Klik Tambahkan Kunci PKIX.
- Klik Import from Cloud KMS.
Masukkan ID resource untuk versi kunci di jendela yang terbuka. Format untuk ID resource adalah:
projects/KMS_KEY_PROJECT_ID/locations/KMS_KEY_LOCATION/keyRings/KMS_KEYRING_NAME/cryptoKeys/KMS_KEY_NAME/cryptoKeyVersions/KMS_KEY_VERSION
dengan:
- KMS_KEY_PROJECT_ID adalah ID project tempat kunci disimpan
- KMS_KEY_LOCATION adalah lokasi kunci (
globaladalah default) - KMS_KEYRING_NAME adalah nama key ring
- KMS_KEY_NAME adalah nama kunci
- KMS_KEY_VERSION adalah versi kunci
Jika Anda membuat pasangan kunci Cloud KMS menggunakan contoh variabel lingkungan di halaman ini, Anda dapat melihat ID resource dengan perintah berikut:
echo projects/${KMS_KEY_PROJECT_ID}/locations/${KMS_KEY_LOCATION}/keyRings/${KMS_KEYRING_NAME}/cryptoKeys/${KMS_KEY_NAME}/cryptoKeyVersions/${KMS_KEY_VERSION}Klik Kirim.
Jika Anda ingin menggunakan catatan yang sudah ada dan sebelumnya telah Anda buat, luaskan bagian Advanced Settings.
Batalkan pilihan Automatically generate an Artifact Analysis note.
Masukkan nama yang sepenuhnya memenuhi syarat di kolom Artifact Analysis Note ID. Nama memiliki format
projects/PROJECT_ID/notes/NOTE_ID.
Klik Create.
Memverifikasi bahwa attestor telah dibuat
Untuk memverifikasi bahwa attestor telah dibuat:
Kembali ke halaman Otorisasi Biner di konsol Google Cloud .
Buka tab Attestors.
Penyiapan multi-project
Jika Anda menggunakan penyiapan multi-project, dengan project deployer dan attestor yang terpisah, ada izin tambahan yang perlu ditetapkan pada resource attestor agar project deployer dapat menggunakan pengesahan yang dibuat olehnya selama deployment.
Menambahkan binding peran IAM untuk project deployer
Anda harus menambahkan binding peran IAM untuk akun layanan project deployer ke attestor. Akun ini digunakan oleh Otorisasi Biner saat mengevaluasi kebijakan untuk menentukan apakah akun memiliki izin untuk mengakses attestor.
Anda harus menambahkan binding peran IAM dari command line, karena langkah ini tidak didukung di konsol Google Cloud .
Untuk menambahkan binding peran IAM:
Siapkan variabel lingkungan untuk menyimpan nama dan nomor project Anda.
DEPLOYER_PROJECT_ID=PROJECT_ID DEPLOYER_PROJECT_NUMBER="$( gcloud projects describe "${DEPLOYER_PROJECT_ID}" \ --format="value(projectNumber)" )"Siapkan variabel lingkungan untuk menyimpan nama akun layanan untuk project:
DEPLOYER_SERVICE_ACCOUNT="service-${DEPLOYER_PROJECT_NUMBER}@gcp-sa-binaryauthorization."Tambahkan binding peran IAM:
gcloud --project ATTESTOR_PROJECT_ID \ beta container binauthz attestors add-iam-policy-binding \ "projects/ATTESTOR_PROJECT_ID/attestors/ATTESTOR" \ --member="serviceAccount:${DEPLOYER_SERVICE_ACCOUNT}" \ --role=roles/binaryauthorization.attestorsVerifier
Jika Anda menerima error service account not found saat memberikan peran IAM, Anda mungkin perlu membuat agen layanan secara manual.
Menambahkan binding peran IAM untuk pengguna yang menyiapkan Otorisasi Biner
Anda harus menambahkan binding peran IAM untuk pengguna yang menambahkan attestor ke kebijakan Otorisasi Biner dalam project deployer, karena pengguna harus memiliki izin untuk melihat attestor yang akan ditambahkan. Jika diinginkan, izin ini dapat dicabut dengan aman setelah attestor ditambahkan.
Anda juga harus menambahkan binding peran IAM dari command line, karena langkah ini tidak didukung di konsol Google Cloud .
Untuk menambahkan binding peran IAM:
gcloud --project ATTESTOR_PROJECT_ID \
beta container binauthz attestors add-iam-policy-binding \
"projects/ATTESTOR_PROJECT_ID/attestors/ATTESTOR" \
--member=ADMIN_EMAIL_ACCOUNT \
--role=roles/binaryauthorization.attestorsViewer
Untuk menghapus binding peran IAM setelah attestor ditambahkan:
gcloud --project ATTESTOR_PROJECT_ID \
beta container binauthz attestors remove-iam-policy-binding \
"projects/ATTESTOR_PROJECT_ID/attestors/ATTESTOR" \
--member=ADMIN_EMAIL_ACCOUNT \
--role=roles/binaryauthorization.attestorsViewer
Langkah berikutnya
- Pelajari cara membuat pengesahan untuk attestor Anda.
- Perbarui kebijakan Otorisasi Biner Anda untuk mewajibkan pengesahan menggunakan Google Cloud konsol, Google Cloud CLI, dan REST API.