Membuat attestor menggunakan konsol Google Cloud

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:

  1. Otorisasi Biner harus diaktifkan. Lihat Mengaktifkan Otorisasi Biner untuk mengetahui informasi selengkapnya.

  2. 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:

  1. 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
    
  2. Buat keyring.

    gcloud kms keyrings create ${KMS_KEYRING_NAME} \
      --location ${KMS_KEY_LOCATION}
    
  3. 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:

  1. Buat kunci:

    PRIVATE_KEY_FILE="/tmp/ec_private.pem"
    openssl ecparam -genkey -name prime256v1 -noout -out ${PRIVATE_KEY_FILE}
    
  2. 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:

  1. Buka halaman Otorisasi Biner untuk project attestor.

    Buka Otorisasi Biner

  2. Di tab Attestors, klik Create.

  3. Klik Create New Attestor.

  4. Di bagian Attestor Name, masukkan nama untuk attestor (misalnya, build-secure atau prod-qa).

  5. Untuk menambahkan kunci publik ke attestor, lakukan langkah berikut:

    PKIX (kunci lokal)

    1. Klik Tambahkan Kunci PKIX.
    2. Klik Impor dari file.
    3. Navigasikan ke dan pilih file kunci PKIX yang Anda simpan sebelumnya. Catatan: Anda juga dapat menempelkan kunci publik dalam format PEM.
    4. Pilih Algoritme tanda tangan. Kunci contoh dalam panduan ini dibuat dengan algoritme Elliptic Curve P256 - SHA Digest.

    PKIX (Cloud KMS)

    1. Klik Tambahkan Kunci PKIX.
    2. Klik Impor dari Cloud KMS.
    3. 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}
      
    4. Klik Submit.

  6. Jika Anda ingin menggunakan catatan yang sudah ada yang telah dibuat sebelumnya, luaskan bagian Setelan Lanjutan.

    1. Batalkan pilihan Automatically generate an Artifact Analysis catatan.

    2. Masukkan nama yang sepenuhnya memenuhi syarat di kolom Artifact Analysis Note ID. Nama tersebut memiliki format projects/PROJECT_ID/notes/NOTE_ID.

  7. Klik Create.

Memverifikasi bahwa attestor telah dibuat

Untuk memverifikasi bahwa attestor sudah dibuat:

  1. Kembali ke halaman Otorisasi Biner di konsol Google Cloud.

  2. 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:

  1. 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)"
    )"
    
  2. Siapkan variabel lingkungan untuk menyimpan nama akun layanan untuk project:

    DEPLOYER_SERVICE_ACCOUNT="service-${DEPLOYER_PROJECT_NUMBER}@gcp-sa-binaryauthorization.iam.gserviceaccount.com"
    
  3. 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

Langkah selanjutnya