Halaman ini menjelaskan cara membuat attestor di Otorisasi Biner menggunakan konsol Google Cloud. Sebagai alternatif, Anda juga dapat melakukan langkah-langkah ini dengan menggunakan Google Cloud CLI atau REST API. Tugas ini adalah bagian dari menyiapkan Otorisasi Biner.
Sebelum memulai
Sebelum Anda membuat attestor, lakukan hal berikut:
Otorisasi Biner harus diaktifkan. Lihat Mengaktifkan Otorisasi Biner untuk mengetahui informasi selengkapnya.
Kebijakan ini harus dikonfigurasi untuk hanya mengizinkan gambar yang diverifikasi oleh attestor. Lihat Mengonfigurasi kebijakan menggunakan Konsol untuk mempelajari lebih lanjut.
Ringkasan
attestor adalah resource Google Cloud yang digunakan oleh Otorisasi Biner untuk memverifikasi pengesahan. Untuk mempelajari Otorisasi Biner lebih lanjut, lihat ringkasan Otorisasi Biner.
Membuat attestor mengharuskan Anda untuk:
- Siapkan pasangan kunci PKIX yang dapat digunakan untuk memverifikasi identitas attestor. (Pasangan kunci asimetris yang dihasilkan oleh Cloud Key Management Service (Cloud KMS) memiliki format yang kompatibel dengan PKIX.)
- Buat attestor itu sendiri di Otorisasi Biner dan kaitkan kunci publik yang Anda buat
Dalam penyiapan project tunggal, Anda membuat attestor di project yang sama dengan mengonfigurasi kebijakan Otorisasi Biner. Dalam penyiapan multi-project, Anda kemungkinan besar memiliki project deploy tempat kebijakan Anda dikonfigurasi dan project attestor terpisah tempat attestor Anda disimpan.
Menyiapkan kunci kriptografis
Dengan Otorisasi Biner, Anda dapat menggunakan kunci PKIX untuk memverifikasi identitas attestor dengan aman. Hal ini memastikan bahwa hanya pihak terverifikasi yang dapat mengizinkan image container.
Dalam panduan ini, Elliptic Curve Digital Signing Algorithm (ECDSA) yang direkomendasikan digunakan untuk menghasilkan pasangan kunci PKIX. Anda juga dapat menggunakan kunci RSA atau PGP untuk penandatanganan. Lihat Tujuan dan algoritma utama untuk informasi selengkapnya tentang algoritma penandatanganan.
Membuat pasangan kunci PKIX
Dengan Otorisasi Biner, Anda dapat menggunakan pasangan kunci PKIX asimetris untuk memverifikasi identitas attestor. Pasangan kunci terdiri dari kunci pribadi, yang digunakan attestor untuk menandatangani pengesahan secara digital, dan kunci publik yang Anda tambahkan ke attestor seperti yang disimpan oleh layanan Otorisasi Biner.
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 dihasilkan dan disimpan di Cloud KMS sesuai dengan 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 langkah 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=1
Buat 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 menghasilkan pasangan kunci PKIX asimetris lokal yang baru dan menyimpannya dalam file, lakukan langkah 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 pribadi secara bersamaan, Anda perlu mengekstrak kunci publik ke file terpisah sehingga 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 Analisis Artefak serta kunci publik.
Otorisasi Biner menggunakan Analisis Artefak untuk menyimpan metadata tepercaya yang digunakan dalam proses otorisasi. Untuk setiap attestor yang dibuat, Anda harus membuat satu catatan Artifact Analysis. Setiap pengesahan disimpan sebagai kemunculan catatan ini.
Untuk membuat attestor:
Buka halaman Otorisasi Biner untuk project attestor.
Di tab Attestors, klik Create.
Klik Create New Attestor.
Di bagian Attestor Name, masukkan nama untuk attestor (misalnya, build-secure atau prod-qa).
Untuk menambahkan kunci publik ke attestor, lakukan langkah berikut:
PKIX (kunci lokal)
- Klik Tambahkan Kunci PKIX.
- Klik Impor dari file.
- Navigasikan ke dan pilih file kunci PKIX yang Anda simpan sebelumnya. Catatan: Anda juga dapat menempelkan kunci publik dalam format PEM.
- Pilih Algoritme tanda tangan. Kunci contoh dalam panduan ini dibuat dengan algoritme Elliptic Curve P256 - SHA Digest.
PKIX (Cloud KMS)
- Klik Tambahkan Kunci PKIX.
- Klik Impor dari 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 (
global
adalah 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 Submit.
Jika Anda ingin menggunakan catatan yang sudah ada yang telah dibuat sebelumnya, luaskan bagian Setelan Lanjutan.
Batalkan pilihan Automatically generate an Artifact Analysis catatan.
Masukkan nama yang sepenuhnya memenuhi syarat di kolom Artifact Analysis Note ID. Nama tersebut memiliki format
projects/PROJECT_ID/notes/NOTE_ID
.
Klik Create.
Memverifikasi bahwa attestor telah dibuat
Untuk memverifikasi bahwa attestor sudah 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 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. Hal 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.iam.gserviceaccount.com"
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
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 di 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