Membuat dan memberikan akses ke resource rahasia

Kolaborator data harus menyiapkan resource berikut agar data rahasia mereka dapat diakses oleh workload:

  • Data terenkripsi, disimpan di Google Cloud.

  • Workload identity pool (WIP) untuk mengizinkan workload. Setelah workload diizinkan oleh WIP, workload tersebut dapat mengakses data rahasia kolaborator data dan mengoperasikannya.

Selain itu, kolaborator data perlu memilih tempat penyimpanan hasil workload Confidential Space, dan apakah hasil tersebut unik untuk setiap kolaborator, atau dibagikan. Misalnya, Anda dapat memilih untuk menghasilkan hasil yang sama ke beberapa bucket Cloud Storage milik setiap kolaborator data.

Menyimpan data terenkripsi Anda

Anda dapat menggunakan layanan Google Cloud apa pun yang menyimpan data untuk menghosting data rahasia Anda. Misalnya, Anda dapat menggunakan salah satu layanan berikut:

Anda harus memastikan data ini dienkripsi dalam penyimpanan, baik menggunakan fitur bawaan maupun dengan sesuatu seperti Cloud Key Management Service (Cloud KMS).

Mengizinkan workload dengan WIP

WIP adalah mekanisme yang digunakan Confidential Space untuk mengizinkan workload eksternal mengakses dan menggunakan data rahasia Anda sebagai identitas gabungan. Identitas gabungan adalah entitas eksternal yang diperlakukan seolah-olah merupakan principal dalam project Anda sendiri, sehingga Anda dapat memberikan peran IAM kepadanya untuk memberikan akses ke resource tertentu, atau untuk meniru akun layanan untuk melakukan hal yang sama.

Sebagai kolaborator data, Anda menyiapkan penyedia di dalam WIP yang menetapkan aturan untuk entitas yang melakukan autentikasi sebagai identitas gabungan. Untuk Confidential Space, Anda harus menentukan hal berikut di penyedia:

  • Layanan pengesahan: Layanan ini memverifikasi bahwa workload adalah instance Confidential VM, dan pada akhirnya menampilkan token pengesahan OpenID Connect (OIDC) ke penyedia WIP. Operator workload menetapkan layanan pengesahan yang digunakan, dan layanan tersebut harus cocok dengan layanan pengesahan yang ditambahkan ke penyedia WIP agar akses dapat diberikan.

  • Pemetaan atribut: Atribut dalam token akses Security Token Service yang dipetakan ke pernyataan yang dibuat oleh entity yang melakukan autentikasi—dalam hal ini, instance VM yang menjalankan workload. Pernyataan dibuat oleh instance VM itu sendiri, image Confidential Space, dan container workload, serta diteruskan ke penyedia WIP oleh workload. Atribut ini digunakan untuk hal-hal seperti jejak audit di Cloud Logging, dan untuk memberikan peran melalui IAM berdasarkan pernyataan entity yang mengautentikasi, seperti ringkasan container image workload. Baca selengkapnya tentang pemetaan atribut.

  • Kebijakan pengesahan: Serangkaian kondisi, yang harus dipenuhi oleh entity yang melakukan autentikasi untuk mendapatkan akses, berdasarkan pernyataan yang mereka buat.

Saat workload dimulai, Confidential Space Launcher mengirimkan laporan pengesahannya ke layanan pengesahan yang ditentukan oleh operator workload, yang memverifikasi instance Confidential VM, lalu menampilkan token pengesahan OIDC. Token ini berlaku selama satu jam, dan diperbarui secara otomatis.

Token pengesahan kemudian diteruskan ke penyedia WIP oleh workload, dan penyedia menggunakannya untuk memeriksa apakah pernyataan lulus kebijakan pengesahan yang ditentukan di penyedia. Jika ya, workload akan diizinkan untuk mengakses resource rahasia.

Akses workload eksternal

Sebelum menyiapkan WIP dan penyedia, Anda harus memilih cara workload mengakses resource Anda: akses resource langsung, atau peniruan identitas akun layanan.

Akses resource langsung

Sebaiknya gunakan metode akses resource langsung untuk workload.

Metode ini melibatkan penyiapan identitas gabungan di penyedia WIP yang terkait dengan pernyataan entity yang mengautentikasi. Dengan cara ini, workload dapat diizinkan untuk mengakses resource secara langsung melalui binding IAM, berdasarkan atribut seperti ringkasan image container workload.

Akses resource langsung memiliki keuntungan berikut:

  • Menyiapkan lingkungan Confidential Space memerlukan lebih sedikit langkah, karena kolaborator data tidak perlu menyiapkan akun layanan untuk ditiru oleh akun layanan workload.

  • Workload hanya diizinkan untuk mengakses resource tertentu sebagaimana ditentukan oleh IAM. Metode ini lebih aman daripada metode peniruan akun layanan, di mana akun layanan atau hak peniruan yang memiliki izin berlebihan dapat memberikan akses yang lebih besar daripada yang seharusnya kepada pelaku kejahatan.

  • Setiap akses resource dicatat ke dalam log dengan identitas gabungan instance VM workload, bukan identitas akun layanan yang ditiru yang mungkin digunakan bersama oleh beberapa workload. Identitas instance VM workload dapat mencakup detail seperti ringkasan image container, nomor project tempat workload beroperasi, dan ID instance VM yang menjalankan workload, sehingga memberikan jejak audit yang lebih mendetail.

  • Anda tidak perlu memetakan properti instance VM selfLink ke atribut google.subject di penyedia WIP. Nilai selfLink yang sangat panjang dapat melebihi batas 127 byte atribut ini, sehingga menyebabkan autentikasi penyedia WIP gagal.

Peniruan akun layanan

Metode peniruan akun layanan melibatkan setiap kolaborator data yang menyiapkan akun layanan untuk mendekripsi data pribadi mereka, lalu melampirkan akun layanan tersebut ke WIP mereka sendiri. Mereka juga menentukan akun layanan workload di penyedia WIP, yang memungkinkan akun layanan workload meniru identitas akun layanan kolaborator data sehingga dapat mengambil dan mengoperasikan data rahasia mereka.

Peniruan akun layanan hanya boleh digunakan dalam skenario berikut:

Metode peniruan akun layanan mungkin gagal melakukan autentikasi ke penyedia WIP jika instance VM memiliki properti selfLink yang sangat panjang. Hal ini karena klaim sub dalam token pengesahan—yang ditetapkan ke nilai selfLink—dipetakan di penyedia WIP ke atribut google.subject, yang memiliki batas 127 byte.

Untuk nilai selfLink instance VM yang melebihi 127 byte, Anda harus mengganti nama instance VM untuk mempersingkat selfLink, atau menggunakan metode akses resource langsung.

Menyiapkan WIP dan penyedia

Langkah-langkah untuk menyiapkan penyedia berubah bergantung pada apakah Anda menggunakan akses resource langsung, atau peniruan akun layanan.

Akses resource langsung

Metode akses resource langsung melibatkan penyiapan WIP dan penyedia, lalu menyiapkan peran IAM berdasarkan ringkasan image container workload tertentu.

Menyiapkan WIP dan penyedia

Untuk menyiapkan WIP dan penyedia, selesaikan petunjuk berikut:

  1. Buat WIP:

    gcloud iam workload-identity-pools create DATA_COLLABORATOR_POOL_NAME \
        --location=global
    
  2. Buat penyedia OIDC di WIP:

    gcloud iam workload-identity-pools providers create-oidc attestation-verifier \
        --location=global \
        --workload-identity-pool=DATA_COLLABORATOR_POOL_NAME \
        --issuer-uri="ISSUER_URI" \
        --allowed-audiences="https://sts.googleapis.com" \
        --attribute-mapping="google.subject=\"gcpcs::\"+assertion.submods.container.image_digest+\"::\"+assertion.submods.gce.project_number+\"::\"+assertion.submods.gce.instance_id,attribute.image_digest=assertion.submods.container.image_digest" \
        --attribute-condition="assertion.swname == 'CONFIDENTIAL_SPACE' \
            && 'STABLE' in assertion.submods.confidential_space.support_attributes"
    

    Contoh ini menggunakan nilai berikut:

    • issuer-uri yang cocok dengan layanan pengesahan yang Anda gunakan:

      • Google Cloud Attestation: https://confidentialcomputing.googleapis.com

      • Intel Trust Authority: https://portal.trustauthority.intel.com

    • allowed-audiences dari https://sts.googleapis.com. Ini adalah Security Token Service Google, yang menukar kredensial dengan token akses.

    • attribute-mapping dari google.subject, dengan nilai berikut:

      \"gcpcs::\"+assertion.submods.container.image_digest+\"::\"+assertion.submods.gce.project_number+\"::\"+assertion.submods.gce.instance_id,attribute.image_digest=assertion.submods.container.image_digest
      

      Nilai ini dibuat menggunakan Common Expression Language (CEL). Nilai berikut ditetapkan ke atribut gcpcs, dan muncul di Cloud Logging setiap kali workload mengakses resource:

      • assertion.submods.container.image_digest: Ringkasan image container workload.

      • assertion.submods.gce.project_number: Nomor project instance VM.

      • assertion.submods.gce.instance_id: ID instance VM.

      Selain itu, attribute.image_digest ditetapkan ke assertion.submods.container.image_digest, ringkasan image container workload. Atribut ini dipetakan sehingga Anda dapat memberikan peran IAM identitas gabungan berdasarkan ringkasan image tertentu.

      Anda dapat memetakan salah satu pernyataan workload yang tersedia, asalkan panjang total nilai google.subject kurang dari 127 byte.

    • attribute-conditions berikut, yang membentuk kebijakan pengesahan. Jika kondisi ini cocok dengan pernyataan workload, workload akan diizinkan untuk mengakses resource rahasia sebagai identitas gabungan:

      • assertion.swname == 'CONFIDENTIAL_SPACE': Memverifikasi bahwa Confidential Space adalah software yang berjalan di VM, dengan semua jaminan keamanan bawaannya.

      • 'STABLE' in assertion.submods.confidential_space.support_attributes: Memverifikasi bahwa image Confidential Space produksi sedang digunakan, dan memiliki atribut dukungan STABLE.

      Untuk mengetahui kondisi atribut lainnya yang dapat Anda gunakan, lihat Membuat kebijakan pengesahan.

Memberikan peran IAM identitas gabungan

Setelah membuat penyedia WIP, Anda dapat memberikan peran IAM kepada identitas gabungan berdasarkan apakah ringkasan container image workload identitas cocok dengan nilai yang diharapkan.

Contoh berikut menunjukkan pemberian kemampuan kepada identitas gabungan untuk mendekripsi kunci Cloud Key Management Service tertentu:

gcloud kms keys add-iam-policy-binding \
    projects/DATA_COLLABORATOR_PROJECT_ID/locations/global/keyRings/DATA_COLLABORATOR_KEYRING_NAME/cryptoKeys/DATA_COLLABORATOR_KEY_NAME \
    --member="principalSet://iam.googleapis.com/projects/DATA_COLLABORATOR_PROJECT_NUMBER/locations/global/workloadIdentityPools/DATA_COLLABORATOR_POOL_NAME/attribute.image_digest/WORKLOAD_CONTAINER_IMAGE_DIGEST" \
    --role=roles/cloudkms.cryptoKeyDecrypter

Peniruan akun layanan

Metode peniruan akun layanan melibatkan hal berikut:

  1. Membuat akun layanan di setiap project kolaborator data, dan memberi mereka izin untuk mendekripsi data rahasia.

  2. Membuat WIP di setiap project kolaborator data, lalu melampirkan akun layanan setiap project yang baru saja dibuat ke WIP-nya.

  3. Membuat penyedia WIP di setiap WIP, yang menentukan akun layanan workload sebagai akun yang diizinkan untuk meniru akun layanan kolaborator data.

Menyiapkan akun layanan untuk mendekripsi data rahasia

  1. Buat akun layanan di project kolaborator data:

    gcloud iam service-accounts create DATA_COLLABORATOR_SERVICE_ACCOUNT_NAME
    

    Beri akun layanan izin yang diperlukan untuk mendekripsi data rahasia. Misalnya, Anda mungkin mengenkripsi file rahasia di Cloud Storage dengan Cloud KMS, sehingga Anda perlu memberikan izin kepada akun layanan untuk mendekripsi data tersebut:

    gcloud kms keys add-iam-policy-binding \
        projects/DATA_COLLABORATOR_PROJECT_ID/locations/global/keyRings/DATA_COLLABORATOR_KEYRING_NAME/cryptoKeys/DATA_COLLABORATOR_KEY_NAME \
        --member=serviceAccount:DATA_COLLABORATOR_SERVICE_ACCOUNT_NAME@DATA_COLLABORATOR_PROJECT_ID.iam.gserviceaccount.com \
        --role=roles/cloudkms.cryptoKeyDecrypter
    

Menyiapkan WIP dan penyedia

Untuk menyiapkan WIP dan penyedia, selesaikan petunjuk berikut di setiap project kolaborator data:

  1. Buat WIP:

    gcloud iam workload-identity-pools create DATA_COLLABORATOR_POOL_NAME \
        --location=global
    
  2. Lampirkan akun layanan yang akan ditiru ke WIP, dengan peran roles/iam.workloadIdentityUser:

    gcloud iam service-accounts add-iam-policy-binding \
        DATA_COLLABORATOR_SERVICE_ACCOUNT_NAME@DATA_COLLABORATOR_PROJECT_ID.iam.gserviceaccount.com \
        --member="principalSet://iam.googleapis.com/projects/DATA_COLLABORATOR_PROJECT_NUMBER/locations/global/workloadIdentityPools/DATA_COLLABORATOR_POOL_NAME/*" \
        --role=roles/iam.workloadIdentityUser
    
  3. Buat penyedia OIDC di WIP, dan tentukan akun layanan workload di dalamnya agar dapat meniru identitas akun layanan kolaborator data:

    gcloud iam workload-identity-pools providers create-oidc attestation-verifier \
        --location=global \
        --workload-identity-pool=DATA_COLLABORATOR_POOL_NAME \
        --issuer-uri="https://confidentialcomputing.googleapis.com/" \
        --allowed-audiences="https://sts.googleapis.com" \
        --attribute-mapping="google.subject=assertion.sub" \
        --attribute-condition="assertion.submods.container.image_digest == 'WORKLOAD_CONTAINER_IMAGE_DIGEST' \
    && 'WORKLOAD_SERVICE_ACCOUNT_NAME@WORKLOAD_OPERATOR_PROJECT_ID.iam.gserviceaccount.com' in assertion.google_service_accounts \
    && assertion.swname == 'CONFIDENTIAL_SPACE' \
    && 'STABLE' in assertion.submods.confidential_space.support_attributes"
    

    Contoh ini menggunakan nilai berikut:

    • issuer-uri dari https://confidentialcomputing.googleapis.com/, yang berarti Google Cloud Attestation digunakan sebagai layanan pengesahan.

    • allowed-audiences dari https://sts.googleapis.com. Ini adalah Security Token Service Google, yang menukar kredensial dengan token akses.

    • attribute-mapping dari google.subject, dengan nilai assertion.sub. Ini adalah selfLink instance VM, seperti yang ditentukan dalam klaim sub di token pengesahan.

      Instance VM selfLink akan muncul di Cloud Logging setiap kali workload mengakses resource.

    • attribute-conditions berikut, yang membentuk kebijakan pengesahan. Jika kondisi ini cocok dengan pernyataan workload, workload akan diizinkan untuk mengakses resource sebagai identitas gabungan:

      • assertion.submods.container.image_digest == 'WORKLOAD_CONTAINER_IMAGE_DIGEST': Memverifikasi bahwa ringkasan image container workload cocok dengan nilai yang diharapkan.

      • 'WORKLOAD_SERVICE_ACCOUNT_NAME@WORKLOAD_PROJECT_ID.iam.gserviceaccount.com' in assertion.google_service_accounts: Memverifikasi bahwa akun layanan yang dilampirkan ke workload cocok dengan akun layanan yang diharapkan, lalu menggunakannya untuk meniru identitas akun layanan kolaborator data.

      • assertion.swname == 'CONFIDENTIAL_SPACE': Memverifikasi bahwa Confidential Space adalah software yang berjalan di VM, dengan semua jaminan keamanan bawaannya.

      • 'STABLE' in assertion.submods.confidential_space.support_attributes: Memverifikasi bahwa image Confidential Space produksi sedang digunakan, dan memiliki atribut dukungan STABLE.

      Untuk mengetahui kondisi atribut lainnya yang dapat Anda gunakan, lihat Membuat kebijakan pengesahan.

Membuat kebijakan pengesahan

Sebagai bagian dari pembuatan WIP, Anda perlu membuat kebijakan pengesahan. Pernyataan entitas yang melakukan autentikasi harus sesuai dengan kebijakan Anda agar dapat mengakses data Anda.

Kebijakan ditulis dalam Common Expression Language (CEL), dan terdiri dari serangkaian pernyataan yang dapat digabungkan dengan operator &&.

Pernyataan tersebut menggunakan pernyataan dari image Confidential Space, image container workload, atau instance VM sebagai variabel, dan nilai yang Anda tentukan sebagai ekspresi. Misalnya, berikut adalah kebijakan yang menerapkan bahwa workload menggunakan Confidential Space, harus menggunakan image Confidential Space STABLE, dan bahwa zona tempat instance VM workload berjalan harus us-central1-a:

assertion.swname == 'CONFIDENTIAL_SPACE' \
&& 'STABLE' in assertion.submods.confidential_space.support_attributes" \
&& assertion.submods.gce.zone == "us-central1-a"

Lihat pernyataan pengesahan untuk mengetahui informasi selengkapnya.

Pernyataan pengesahan

Pernyataan yang tersedia untuk membuat kebijakan pengesahan dijelaskan dalam tabel berikut. Kebijakan dapat memvalidasi pernyataan yang dibuat oleh image Confidential Space, container workload, dan instance VM.

Pernyataan gambar

Pernyataan Jenis Deskripsi

assertion.dbgstat

Berinteraksi dengan:

Enumerasi

Memverifikasi bahwa image Confidential Space adalah versi debug atau produksi.

Nilai yang valid adalah sebagai berikut:

  • enable: Pastikan image debug sedang digunakan.
  • disabled-since-boot: Pastikan image produksi sedang digunakan.
Contoh

Kode berikut memverifikasi bahwa versi debug image Confidential Space sedang digunakan:

assertion.dbgstat == "enable"

Kode berikut memverifikasi bahwa versi produksi image Confidential Space sedang digunakan:

assertion.dbgstat == "disabled-since-boot"
assertion.submods.confidential_space.support_attributes Array string

Memverifikasi bahwa versi keamanan TEE adalah image Confidential Space produksi. Image Confidential Space debug tidak memiliki atribut dukungan yang ditetapkan.

Tabel berikut menjelaskan atribut dukungan yang ditemukan pada image Confidential Space produksi.

Atribut dukungan Deskripsi

LATEST

Image LATEST juga memiliki atribut dukungan berikut:

  • STABLE
  • USABLE

Masa aktif image: Sekitar satu bulan. Setelah itu, atribut dukungan LATEST akan dihapus.

Ini adalah versi terbaru image Confidential Space, serta didukung dan dipantau untuk mengetahui kerentanannya.

Untuk workload yang berjalan lama, sebaiknya jangan tentukan LATEST sebagai bagian dari kebijakan pengesahan Anda. Hal ini karena image Confidential Space mungkin diperbarui saat workload Anda berjalan, sehingga image Confidential Space yang Anda gunakan tidak lagi LATEST, dan menyebabkan workload Anda gagal dalam pengesahan saat token default Confidential Space diperbarui berikutnya.

STABLE

Image STABLE juga memiliki atribut dukungan berikut:

  • USABLE

Masa aktif gambar: Sekitar enam bulan. Mulai 1 April 2027, atribut dukungan STABLE akan dihapus setelah masa aktif image berakhir.

Image dengan atribut STABLE didukung dan dipantau untuk mengetahui kerentanan selama periode enam bulan. Sebaiknya tulis kebijakan pengesahan berdasarkan atribut STABLE.

Dalam kasus yang jarang terjadi, atribut STABLE dapat dihapus selama periode dukungan normal enam bulan, seperti saat kerentanan kritis ditemukan.

USABLE

Gambar yang hanya memiliki atribut USABLE masih dapat digunakan, tetapi dianggap tidak digunakan lagi. Image yang tidak digunakan lagi tidak didukung, dan berusia lebih dari enam bulan. Risiko dari penggunaan versi ini merupakan tanggung jawab Anda sendiri.

Image USABLE memiliki properti deprecated.deprecated. Nilainya adalah stempel waktu kapan image diperkirakan akan dihentikan penggunaannya. Properti image dapat dilihat dengan perintah gcloud compute images describe, atau dengan metode REST images.get. Contoh:

gcloud compute images describe confidential-space-240800 \
    --format=json \
    --project=confidential-space-images
EXPERIMENTAL

Gambar yang hanya memiliki atribut ini akan menggunakan fitur pratinjau. Image EXPERIMENTAL hanya ditujukan untuk tujuan pengujian, dan tidak boleh digunakan dalam produksi.

Gambar EXPERIMENTAL tidak pernah memiliki atribut LATEST, STABLE, atau USABLE.

Sebaiknya selalu update image Confidential Space Anda. Untuk mempelajari cara mengupdate image Confidential Space, lihat Mengupdate image Confidential Space.

Contoh

Kode berikut memverifikasi bahwa versi stabil image Confidential Space sedang digunakan:

"STABLE" in assertion.submods.confidential_space.support_attributes
assertion.swname Enumerasi

Memverifikasi software yang berjalan pada entitas pengesahan. Nilainya selalu CONFIDENTIAL_SPACE.

Contoh
assertion.swname == "CONFIDENTIAL_SPACE"
assertion.swversion Array string

Memverifikasi versi software image Confidential Space. Sebaiknya gunakan assertion.submods.confidential_space.support_attributes untuk menargetkan versi terbaru image.

Contoh
int(assertion.swversion[0]) == 230103

Pernyataan container

Pernyataan Jenis Deskripsi

assertion.submods.container.cmd_override

Berinteraksi dengan:

Array string

Memverifikasi perintah dan parameter CMD yang digunakan dalam image workload.

Contoh

Kode berikut memverifikasi bahwa CMD image workload belum ditimpa:

size(assertion.submods.container.cmd_override) == 0

Kode berikut memverifikasi bahwa program adalah satu-satunya konten dalam penggantian CMD:

assertion.submods.container.cmd_override == ['program']

assertion.submods.container.env

Berinteraksi dengan:

Objek JSON

Memverifikasi bahwa variabel lingkungan dan nilainya telah diteruskan secara eksplisit ke container.

Contoh

Kode berikut memverifikasi bahwa variabel lingkungan example-env-1 ditetapkan ke value-1, dan example-env-2 ditetapkan ke value-2.

assertion.submods.container.env == {"example-env-1": "value-1", "example-env-2": "value-2"}

assertion.submods.container.env_override

Berinteraksi dengan:

String

Memverifikasi apakah operator workload telah menimpa variabel lingkungan dalam container.

Contoh

Kode berikut memverifikasi bahwa operator workload belum mengganti variabel lingkungan example:

!has(assertion.submods.container.env_override.example)

Kode berikut memverifikasi bahwa operator workload belum menimpa variabel lingkungan apa pun:

size(assertion.submods.container.env_override) == 0
assertion.submods.container.image_digest String

Memverifikasi ringkasan image container workload. Dengan menentukan kondisi ini, beberapa pihak dapat menyetujui workload yang diizinkan untuk mengakses data mereka.

Contoh
assertion.submods.container.image_digest == "sha256:837ccb607e312b170fac7383d7ccfd61fa5072793f19a25e75fbacb56539b86b"
assertion.submods.container.image_id String

Memverifikasi ID image container workload.

Contoh
assertion.submods.container.image_id == "sha256:652a44b0e911271ba07cf2915cd700fdfa50abd62a98f87a57fdebc59843d93f"

assertion.submods.container.image_reference

Berinteraksi dengan:

String

Memverifikasi lokasi container workload yang berjalan di atas image Confidential Space.

Contoh
assertion.submods.container.image_reference == "us-docker.pkg.dev/PROJECT_ID/WORKLOAD_CONTAINER:latest"

assertion.submods.container.image_signatures

Berinteraksi dengan:

Objek JSON

Memverifikasi bahwa image memiliki tanda tangan tertentu atau ditandatangani oleh kunci publik dan algoritma penandatanganan. Menentukan kondisi ini memungkinkan beberapa pihak menyetujui workload yang diizinkan untuk mengakses data mereka.

Pernyataan dapat menyertakan elemen berikut:

  • key_id: Sidik jari heksadesimal kunci publik. Untuk mendapatkan sidik jari, Anda dapat menjalankan perintah berikut:

    openssl pkey -pubin -in public_key.pem -outform DER | openssl sha256

    Dengan public_key.pem adalah kunci publik Anda dalam format PEM.

  • signature: Tanda tangan atas payload yang terkait dengan container yang ditandatangani dan yang mengikuti format Simple Signing.
  • signature_algorithm: Algoritma yang digunakan untuk menandatangani kunci. Salah satu dari berikut ini:

    • RSASSA_PSS_SHA256 (RSASSA-PSS dengan ringkasan SHA-256)
    • RSASSA_PKCS1V15_SHA256 (RSASSA-PKCS1 v1_5 dengan ringkasan SHA-256)
    • ECDSA_P256_SHA256 (ECDSA pada Kurva P-256 dengan ringkasan SHA-256)
Contoh
['ECDSA_P256_SHA256:PUBLIC_KEY_FINGERPRINT'].exists(fingerprint, fingerprint in assertion.submods.container.image_signatures.map(sig, sig.signature_algorithm+':'+sig.key_id))

assertion.submods.container.restart_policy

Berinteraksi dengan:

Enumerasi

Memverifikasi kebijakan mulai ulang peluncur container saat workload berhenti.

Nilai yang valid adalah sebagai berikut:

  • Never (default)
  • Always
  • OnFailure
Contoh
assertion.submods.container.restart_policy == "Never"

Pernyataan VM

Pernyataan Jenis Deskripsi

assertion.google_service_accounts

Berinteraksi dengan:

Array string

Memverifikasi bahwa akun layanan yang ditentukan terhubung ke VM yang menjalankan workload, atau telah dicantumkan menggunakan tee-impersonate-service-accounts dalam metadata VM.

Contoh
workload-service-account@my-project.iam.gserviceaccount.com in assertion.google_service_accounts
assertion.hwmodel String

Memverifikasi teknologi Confidential Computing yang mendasarinya. Platform yang didukung adalah sebagai berikut:

  • GCP_AMD_SEV
  • INTEL_TDX
Contoh
assertion.hwmodel == "GCP_AMD_SEV"

assertion.submods.confidential_space.monitoring_enabled

Berinteraksi dengan:

Boolean

Memverifikasi status pemantauan pada entitas pengesahan.

Contoh
assertion.submods.confidential_space.monitoring_enabled.memory == true
assertion.submods.gce.instance_id String

Memverifikasi ID instance VM.

Contoh
assertion.submods.gce.instance_id == "0000000000000000000"
assertion.submods.gce.instance_name String

Memverifikasi nama instance VM.

Contoh
assertion.submods.gce.instance_name == "workload-vm"
assertion.submods.gce.project_id String

Memverifikasi bahwa VM menjalankan project Google Cloud dengan project ID yang ditentukan.

Contoh
assertion.submods.gce.project_id == "project-id"
assertion.submods.gce.project_number String

Memverifikasi bahwa VM berjalan di project Google Cloud dengan nomor project yang ditentukan.

Contoh
assertion.submods.gce.project_number == "00000000000"

assertion.submods.gce.zone

Berinteraksi dengan:

String

Memverifikasi bahwa VM berjalan di zona yang ditentukan.

Contoh
assertion.submods.gce.zone == "us-central1-a"

assertion.submods.nvidia_gpu.cc_feature

Berinteraksi dengan:

Enumerasi

Memverifikasi fitur Confidential Computing yang didukung oleh GPU NVIDIA. Hanya mode passthrough GPU tunggal (SPT) yang didukung di Confidential Space, sehingga nilainya selalu SPT.

Untuk mengetahui informasi selengkapnya tentang dukungan NVIDIA Confidential Computing, lihat NVIDIA Trusted Computing Solutions (PDF).

Contoh
assertion.submods.nvidia_gpu.cc_feature == "SPT"

assertion.submods.nvidia_gpu.cc_mode

Berinteraksi dengan:

Enumerasi

Memverifikasi status driver Confidential Computing NVIDIA. Nilai yang valid adalah sebagai berikut:

  • OFF: tidak ada fitur Confidential Computing NVIDIA yang aktif.
  • ON: hardware, firmware, dan software NVIDIA H100 telah sepenuhnya mengaktifkan fitur confidential computing.
  • DEVTOOLS: GPU berada dalam mode confidential computing parsial yang cocok dengan alur kerja mode ON, tetapi menonaktifkan perlindungan keamanan.
Contoh
assertion.submods.nvidia_gpu.cc_mode == "ON"

assertion.submods.nvidia_gpu.gpus

Berinteraksi dengan:

Array objek

Memverifikasi klaim untuk setiap GPU NVIDIA yang di-attestasi. Confidential Space hanya mendukung satu klaim GPU.

Objek gpus mirip dengan yang berikut ini:

{
  "hwmodel": "GCP_NVIDIA_H100",
  "ueid": "490457405999046854973671575630853621547794591064",
  "l4_serial_number": "1216669666319372030078",
  "driver_version": "570.00",
  "vbios_version": "96.00.9F.00.01"
}
Contoh

Kode berikut memverifikasi bahwa model hardware GPU pertama adalah NVIDIA H100 yang berjalan di Google Cloud:

assertion.submods.nvidia_gpu.gpus[0].hwmodel == "GCP_NVIDIA_H100"

Kode berikut memverifikasi bahwa klaim pengesahan memiliki klaim terkait GPU:

has(assertion.submods.nvidia_gpu.gpus)