1. Genel Bakış
Gizli Sanal Makineler (CVM'ler), donanım tabanlı bellek şifreleme ve bütünlük koruması kullanan bir Compute Engine sanal makine türüdür. Bu, verilerinizin ve uygulamalarınızın kullanım sırasında bellekte okunmasını veya değiştirilmesini önlemeye yardımcı olur. Bu codelab'de, CVM'de Intel TDX onay tırnağı oluşturmayı ve gösterim amacıyla yerel olarak doğrulamayı öğreneceksiniz. Ayrıca, CVM'nin Google Cloud ana makine ve örnek kaynağını doğrulayacaksınız.
Bu codelab aşağıdaki adımları içerir:
- Intel TDX Gizli Sanal Makinesi oluşturma
- TDX Onay Fiyat Teklifi Getirme
- TDX Onay Fiyat Teklifi ve Tek Seferlik Rastgele Sayı'yı doğrulama
- GCE donanım yazılımı (OVMF) bütünlüğünü doğrulama
- GCE TDX ana makinesinin ve örneğinin kaynağını doğrulama
Neler öğreneceksiniz?
go-tdx-guestaraçlarını kullanarak CVM'de TDX onay teklifi getirme- Alıntının gerçekliği, yeniliği (nonce) ve GCE donanım yazılımı bütünlüğü (OVMF) nasıl doğrulanır?
- Google Cloud ana makine ve örnek kaynağını doğrulama (
PPIDkayıt defteri araması vePZIDörnek bağlama)
İhtiyacınız olanlar
- Google Cloud Platform projesi
- Google Compute Engine ve Gizli Sanal Makine hakkında temel düzeyde bilgi sahibi olma
2. Kurulum ve Gereksinimler
Gerekli API'leri etkinleştirmek için Google Cloud Console'da veya yerel geliştirme ortamınızda aşağıdaki komutu çalıştırın:
gcloud auth login
gcloud services enable \
cloudapis.googleapis.com \
cloudshell.googleapis.com \
confidentialcomputing.googleapis.com \
compute.googleapis.com
3. CVM'yi ayarlama ve TDX teklifi getirme
Bu adımda bir TDX CVM oluşturacak ve donanımdan bir TDX onay alıntı isteği getireceksiniz.
- Google Cloud Console'a veya yerel geliştirme ortamınıza gidin. Aşağıdaki gibi bir CVM oluşturun:
gcloud config set project <project-id>
gcloud compute instances create tdx-cvm-attestation-codelab \
--machine-type=c3-standard-4 \
--zone=us-central1-c \
--confidential-compute-type=TDX \
--maintenance-policy=TERMINATE \
--image-family=ubuntu-2204-lts \
--image-project=ubuntu-os-cloud \
--scopes https://www.googleapis.com/auth/cloud-platform
<project-id> yerine projenizin benzersiz tanımlayıcısını yazın.
- CVM'ye bağlanın.
gcloud compute ssh --zone us-central1-c tdx-cvm-attestation-codelab
- CVM'de bir Go ortamı ayarlayın:
wget https://go.dev/dl/go1.24.0.linux-amd64.tar.gz sudo tar -C /usr/local -xzf go1.24.0.linux-amd64.tar.gz export PATH=$PATH:/usr/local/go/bin
go-tdx-guestaraçlarını yükleyin.
Depoyu klonlayın ve TDX teklifi oluşturan attest aracını oluşturun.
git clone https://github.com/google/go-tdx-guest.git cd go-tdx-guest/tools/attest go build
- TDX Onay Fiyat Teklifi'ni getirin:
Fiyat teklifi oluşturmak için attest aracını kullanın. Bir nonce (64 baytlık REPORT_DATA) iletecek ve çıkışı quote.bin konumuna kaydedeceğiz.
nonce=$(head -c 64 /dev/urandom | xxd -p | tr -d '\n' | head -c 128) sudo ./attest -in $nonce -inform hex -outform bin -out quote.bin
TDX teklifi artık quote.bin listesine kaydedildi.
4. TDX Attestation Quote'u doğrulama
Intel TDX alıntısı oluşturduğumuza (quote.bin) göre, go-tdx-guest deposunda sağlanan check aracını kullanarak bunu doğrulayabiliriz. Bu araç, teklifi Intel'in spesifikasyonlarına göre kontrol eder, Intel'in Provisioning Certification Service'inden (PCS) indirilen satışı destekleyen içeriklere göre doğrular ve tekrar oynatma saldırılarını önlemek için tek seferlik rastgele sayı gibi politika sınırlamalarını onaylar.
checkaraç dizinine gidin ve dizini oluşturun:
cd ~/go-tdx-guest/tools/check go build
- Hem kriptografik imzaları hem de tek kullanımlık sayıları doğrulamak için aracı çalıştırın. Gerekli TEE sertifikalarını Intel'in PCS'sinden indirmek için
-get_collateral=truebayrağını, sertifika iptallerini doğrulamak için-check_crl=truebayrağını ve tek seferlik rastgele sayının güncelliğini doğrulamak için-report_databayrağını kullanacağız:
./check -in ~/go-tdx-guest/tools/attest/quote.bin -inform bin \
-get_collateral=true -check_crl=true \
-report_data $nonce
Alıntı kriptografik olarak geçerliyse ve nonce eşleşiyorsa araç, aşağıdaki örneğe benzer bir başarı mesajı kaydeder ve 0 koduyla çıkar:
INFO : TDX Quote verified successfully
5. GCE donanım yazılımı (OVMF) bütünlüğünü doğrulama
Intel'in teminatı donanımı doğrulasa da sanal makinenin orijinal ve değiştirilmemiş bir Google Compute Engine (GCE) ürün yazılımı çalıştırdığını doğrulamaz.
Google, tüm resmi GCE UEFI (OVMF) ürün yazılımı sürümleri için herkese açık bir Google Cloud Storage (GCS) paketine imzalı Launch Endorsements (altın referans bütünlüğü ölçümleri veya RIM'ler içerir) yayınlar.
Bu adımda, GCS'den ürün yazılımı onayını otomatik olarak getirmek, Google'ın imzasını doğrulamak ve CVM'mizin ürün yazılımı ölçümünü (MRTD) doğrulamak için Google'ın herkese açık gce-tcb-verifier aracını kullanacağız.
1. GCE TCB doğrulayıcı aracını oluşturma
- Herkese açık
gce-tcb-verifierdeposunu GitHub'dan kopyalayın:
cd ~ git clone https://github.com/google/gce-tcb-verifier.git
- KSA aracı dizinine gidin ve aracı oluşturun:
cd gce-tcb-verifier/gcetcbendorsement/cli go build -o gcetcbendorsement
- Kolaylık sağlamak için oluşturulan aracı PATH'inize ekleyin:
export PATH=$PATH:$(pwd)
2. Teklifi GCE Donanım Yazılımı Onayı'na göre doğrulama
Şimdi, onay teklifinizi doğrulamak için gcetcbendorsement aracını çalıştırın. Araç, başarılı bir doğrulama işleminden sonra sessizce başarılı olduğundan, komutu && echo "Validation Succeeded!" ile zincirleyerek başarıyla ilgili kolay anlaşılır ve açık bir onay alabiliriz:
gcetcbendorsement tdx validate ~/go-tdx-guest/tools/attest/quote.bin && echo "Validation Succeeded!"
Çıkış:
Validation Succeeded!
Arka planda neler oluyor?
- Ayıklama: Araç,
quote.binöğesini ayrıştırır ve TD Quote Body'den donanım yazılımı ölçümünü (MRTD) ayıklar. - Getirme:
MRTDkullanarak bir GCS URL'si oluşturur ve Google'ın herkese açık paketinden (gs://gce_tcb_integrity) ilgiliVMLaunchEndorsementdosyasını indirir. - İmza Doğrulama: Google'ın ortak kök CA sertifikasını (
https://pki.goog/cloud_integrity/GCE-cc-tcb-root_1.crt) getirir ve indirilen onaydaki Google imzasını kriptografik olarak doğrular. - Ölçüm Doğrulama: Teklifinizdeki TDX donanımı tarafından imzalanan
MRTD, Google'ın imzalı onayındaki altın referans ölçümleriyle karşılaştırılır.
Tüm kontroller başarılı olursa komut, 0 koduyla sessizce çıkar (veya zincirleme yankı ile Validation Succeeded! yazdırır). Bu, VM'nizin Google tarafından onaylanmış gerçek bir üretici yazılımı çalıştırdığını kanıtlar.
6. GCE TDX ana makinesinin ve örneğinin kaynağını doğrulama
Onay ve donanım yazılımı doğrulaması, sanal makinenizin Google tarafından onaylanmış UEFI donanım yazılımıyla gerçek Intel TDX donanımında çalıştığını onaylarken GCE TDX Provenance Verification, onay alıntınızı doğrudan Google Cloud'un altyapısına iki önemli şekilde bağlar:
- Ana makine kaynağı: Teklifin PCK sertifikasından platformun benzersiz PPID'sini (Platform Provisioning ID) çıkararak sanal makinenizi çalıştıran fiziksel Google Cloud ana makinesini tanımlar. Ardından, Google Cloud Storage'dan (
confidential-host-registry) ana makinenin kayıt kaydını alır. Bu kayıt, fiziksel bölgeyi ve Google Cloud'un ana makinenin onay sertifikalarını en son ne zaman sağladığını kaydeder. - Örnek Provenance (PZID Bağlama): Google Cloud, belirli VM'nizin kimliğini (
ProjectNumber,ZoneveInstanceID) TDX alıntısınınMR_OWNERkaydına kriptografik olarak bağlar. Bu bağlamanın doğrulanması, teklifin yalnızca örneğinize ait olmasını sağlar ve farklı sanal makinelerde veya projelerde teklif tekrarı ya da değiştirme saldırılarını önler.
gceprovenance CLI aracı (go-tdx-guest deposunda da bulunur), tam kaynak doğrulamasını otomatikleştirir. Tek bir komutla alıntıların gerçekliğini, güncel olma zorluğunu, ana makine kayıt kaydını ve örnek PZID bağlamasını kontrol eder.
gceprovenancedizinine gidin ve aracı oluşturun:
cd ~/go-tdx-guest/tools/gceprovenance go build
verifykomutunu kullanarak tam kaynak doğrulama işlemini çalıştırın. Daha önce oluşturduğumuz teklif dosyasını (quote.bin) ve nonce sorgusunu ($nonce) ileteceğiz:
./gceprovenance verify -quote ~/go-tdx-guest/tools/attest/quote.bin -challenge $nonce
- Tüm kontroller başarılı olduğunda araç, aşağıdakine benzer bir doğrulama raporu oluşturur:
GCE TDX provenance verification: OK Instance: projects/123456789012/zones/us-central1-c/instances/987654321098765 Checks Quote verification: OK REPORT_DATA challenge: OK Host registry document: found PZID binding: OK PPID: 0123456789abcdef0123456789abcdef Quote: tdx_quote.bin Host registry: host_registry.json
Arka planda neler oluyor?
- Alıntı ve sorgulama: Araç, alıntının imza zincirini Intel'in kök sertifikasına göre doğrular ve alıntının
REPORT_DATAdeğerinin$noncesorgulamanızla eşleştiğini onaylar. - Ana Makine Provenance'ı (
PPID): Yaprak PCK sertifikasından 32 karakterlik onaltılıkPPIDdeğerini çıkarır ve ana makine kaydı JSON belgesini GCS'den (https://storage.googleapis.com/confidential-host-registry/) indirir. - Örnek Provenance (
PZID): Örneğinizin sayısal proje kimliği, bölgesi ve örnek kimliği için yerel GCE meta veri sunucusunu sorgular, kanonik PZID JSON yükünü ({"instanceId":...,"numericalProjectId":...,"zone":...}) oluşturur, SHA-384 özetini hesaplar ve alıntıdakiMR_OWNERile eşleştiğini doğrular.
- Alınan ana makine kayıt belgesini inceleyin:
Varsayılan olarak, verify komutu, getirilen ana makine kayıt defteri JSON belgesini host_registry.json konumuna kaydeder. Barındırma platformunun meta verilerini görüntülemek için inceleyebilirsiniz:
cat host_registry.json
Örnek çıkış:
{
"zone": "us-central1",
"timestamp": "2026-02-17T11:25:12Z"
}
Bu meta veriler, ana makine özelliklerini açıklar:
zone: Ana makinenin bulunduğu fiziksel Google Cloud bölgesi/alanı.timestamp: Bu ana makinenin donanım kanıtlama sertifikalarının Google Cloud tarafından en son sağlandığı ve doğrulandığı UTC tarihi ve saati.
7. Temizleme
Cloud Console'da veya yerel geliştirme ortamınızda aşağıdaki komutları çalıştırın:
# Delete the CVM instance gcloud compute instances delete tdx-cvm-attestation-codelab --zone=us-central1-c
8. Sırada ne var?
Gizli Sanal Makineler ve Compute Engine hakkında daha fazla bilgi edinin.