Pernyataan pengesahan


Untuk mempelajari lebih lanjut cara menggunakan pernyataan pengesahan, lihat Membuat kebijakan pengesahan.

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

Pernyataan gambar

Pernyataan Jenis Deskripsi

assertion.dbgstat

Berinteraksi dengan:

String yang ditentukan

Memverifikasi bahwa image Confidential Space adalah versi debug atau produksi.

Nilai yang valid adalah:

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

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

assertion.dbgstat == "enable"

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

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

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

Ada tiga atribut dukungan:

  • LATEST: Ini adalah versi terbaru image, dan didukung. Gambar LATEST juga STABLE dan USABLE.
  • STABLE: Versi image ini didukung dan dipantau untuk menemukan kerentanan. Gambar STABLE juga merupakan USABLE.
  • USABLE: Image yang hanya memiliki atribut ini tidak lagi didukung dan tidak lagi dipantau untuk menemukan kerentanan. Gunakan dengan menanggung sendiri risikonya.
Contoh

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

"STABLE" in assertion.submods.confidential_space.support_attributes
assertion.swname String yang ditentukan

Memverifikasi software yang berjalan di 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 gambar.

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

Pernyataan penampung

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 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 penampung.

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 beban kerja telah menimpa variabel lingkungan dalam penampung.

Contoh

Kode berikut memverifikasi bahwa operator beban kerja belum mengganti variabel lingkungan example:

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

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

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

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

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

Memverifikasi ID image penampung beban kerja.

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

assertion.submods.container.image_reference

Berinteraksi dengan:

String

Memverifikasi lokasi penampung beban kerja 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 gambar memiliki tanda tangan tertentu atau ditandatangani oleh kunci publik dan algoritma penanda tangan. Dengan menentukan kondisi ini, beberapa pihak dapat menyepakati workload resmi 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 pada payload yang dikaitkan dengan penampung yang ditandatangani dan mengikuti Format Penandatanganan Sederhana.
  • 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
assertion.swname == 'CONFIDENTIAL_SPACE' && ['ECDSA_P256_SHA256:PUBLIC_KEY_FINGERPRINT'].exists(fingerprint, fingerprint in assertion.submods.container.image_signatures.map(sig, sig.signature_algorithm+':'+sig.key_id)) && 'serviceaccount.iam.gserviceaccount.com' in assertion.google_service_accounts"

assertion.submods.container.restart_policy

Berinteraksi dengan:

String yang ditentukan

Memverifikasi kebijakan mulai ulang peluncur penampung saat beban kerja berhenti.

Nilai yang valid adalah:

  • 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 beban kerja, atau telah tercantum 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:

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 ID project 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"