Kolaborator data perlu menyiapkan resource berikut agar data rahasia mereka dapat diakses oleh workload:
Data terenkripsi itu sendiri, yang disimpan di Google Cloud.
Akun layanan yang dapat mendekripsi data tersebut.
Validasi pengesahan menggunakan workload identity pool (WIP). Setelah diberi otorisasi oleh WIP, workload dapat meniru akun layanan di project kolaborator data untuk mengambil data rahasia.
Selain itu, kolaborator data perlu memilih tempat penyimpanan hasil workload Confidential Space, dan apakah data yang ditampilkan bersifat unik atau dibagikan. Misalnya, Anda dapat menghasilkan hasil yang sama ke beberapa bucket Cloud Storage milik setiap kolaborator data.
Menyimpan data Anda
Anda dapat menggunakan layanan Google Cloud 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 atau dengan sesuatu seperti Cloud Key Management Service (Cloud KMS).
Membuat akun layanan untuk mendekripsi data rahasia
Anda menyediakan data rahasia ke workload Ruang Rahasia—dan mengurangi eksposur manusia terhadap data tersebut—melalui akun layanan.
Misalnya, Anda dapat mengenkripsi file rahasia di Cloud Storage dengan Cloud KMS, lalu membuat akun layanan yang memiliki izin untuk mengakses data tersebut dan kunci untuk mendekripsinya.
Kemudian, Anda menghubungkan akun layanan tersebut ke WIP. Workload Confidential Space yang diotorisasi dan berbasis di project lain kemudian dapat menggunakan WIP tersebut untuk meniru akun layanan yang mendekripsi data, mengambil data yang didekripsi, dan memprosesnya.
Karena akun layanan digunakan untuk mendekripsi data rahasia dan memprosesnya, visibilitas data rahasia dibatasi untuk pemiliknya. Karena workload beroperasi di Confidential VM, enkripsi memori berbasis hardware-nya memastikan data Anda tetap bersifat pribadi saat digunakan. SSH juga dinonaktifkan di VM workload yang menggunakan image Confidential Space produksi, yang berarti tidak ada yang dapat mengakses VM saat sedang berjalan.
Lihat Membuat lingkungan Confidential Space pertama Anda untuk mengetahui contohnya.
Membuat WIP dan penyedia untuk validasi pengesahan
Untuk membantu melindungi data dari operator workload yang tidak tepercaya, Confidential Space menerapkan proses pengesahan yang mendeteksi modifikasi pada image workload atau TEE-nya. Proses ini didasarkan pada pengukuran booting terukur dan runtime yang diperpanjang Shielded VM, dan menangkap pengukuran urutan booting dalam register khusus perpanjangan dan dilindungi di perangkat Virtual Trusted Platform Module (vTPM).
Layanan pengesahan Confidential Space menghasilkan token OpenID Connect (OIDC) yang menyertakan pengesahan vTPM ini dalam bentuk yang dapat divalidasi oleh WIP, yang memeriksanya terhadap kebijakan yang ditambahkan sebagai kondisi atribut ke penyedia. Token ini ditandatangani oleh Google, berlaku selama satu jam, dan diperbarui secara otomatis.
Jika WIP memberikan otorisasi pada workload, workload tersebut dapat meniru akun layanan dalam project untuk mendekripsi dan mengambil data rahasia.
Untuk menyiapkan WIP dan penyedia, selesaikan petunjuk berikut:
Hubungkan akun layanan dekripsi Anda ke WIP dengan peran
iam.workloadIdentityUser
.Buat penyedia OIDC dengan detail berikut:
URI penerbit
https://confidentialcomputing.googleapis.com/
.Audiens
https://sts.googleapis.com
yang diizinkan.Pemetaan atribut penyedia
google.subject
, dengan nilaiassertion.sub
.Kondisi atribut yang digunakan untuk memvalidasi pengesahan workload. Lihat Membuat kebijakan pengesahan untuk opsi yang tersedia.
Membuat kebijakan pengesahan
Sebagai bagian dari pembuatan WIP, Anda menambahkan kondisi atribut—kondisi yang harus dipenuhi beban kerja agar dapat mengakses data Anda. Untuk Ruang Rahasia, kondisi atribut ini membentuk kebijakan pengesahan Anda.
Kebijakan ditulis dalam Common Expression Language
(CEL), dan terdiri dari serangkaian pernyataan yang dapat dirantai bersama
dengan operator &&
.
Berikut adalah contoh penambahan penyedia ke workload identity pool menggunakan gcloud CLI, beserta opsi attribute-condition
yang menentukan kebijakan:
gcloud iam workload-identity-pools providers create-oidc attestation-verifier \
--location=global \
--workload-identity-pool=user-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 =='sha256:837ccb607e312b170fac7383d7ccfd61fa5072793f19a25e75fbacb56539b86b' \
&& 'service-account@my-project.iam.gserviceaccount.com' in assertion.google_service_accounts \
&& assertion.swname == 'CONFIDENTIAL_SPACE' \
&& 'STABLE' in assertion.submods.confidential_space.support_attributes"
Dalam contoh ini, identitas eksternal yang mencoba meniru akun layanan yang terhubung ke workload identity pool harus membuktikan dan mencocokkan detail berikut:
Ringkasan image container beban kerja
Alamat akun layanan yang terhubung ke VM workload
CONFIDENTIAL_SPACE
tersebut adalah software yang berjalan di VM, dengan semua jaminan keamanan bawaan.Atribut dukungan image Confidential Space produksi
Pernyataan 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 |
---|---|---|
Berinteraksi dengan:
|
String yang ditentukan |
Memverifikasi bahwa image Confidential Space adalah versi debug atau produksi. Nilai yang valid adalah:
ContohKode berikut memverifikasi bahwa versi debug gambar Confidential Space sedang digunakan:
Kode berikut memverifikasi bahwa versi produksi gambar Confidential Space sedang digunakan:
|
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:
ContohKode berikut memverifikasi bahwa versi stabil image Confidential Space sedang digunakan:
|
assertion.swname |
String yang ditentukan |
Memverifikasi software yang berjalan di entitas pengesahan. Nilainya
selalu Contoh
|
assertion.swversion |
Array string |
Memverifikasi versi software image Confidential Space. Sebaiknya
gunakan
Contoh
|
Pernyataan penampung
Pernyataan | Jenis | Deskripsi |
---|---|---|
Berinteraksi dengan:
|
Array string |
Memverifikasi perintah dan parameter CMD yang digunakan dalam image workload. ContohKode berikut memverifikasi CMD image workload belum ditimpa:
Kode berikut memverifikasi bahwa
|
Berinteraksi dengan:
|
Objek JSON |
Memverifikasi bahwa variabel lingkungan dan nilainya telah diteruskan secara eksplisit ke penampung. ContohKode berikut memverifikasi bahwa variabel lingkungan
|
Berinteraksi dengan:
|
String |
Memverifikasi apakah operator beban kerja telah menimpa variabel lingkungan dalam penampung. ContohKode berikut memverifikasi bahwa operator beban kerja belum
mengganti variabel lingkungan
Kode berikut memverifikasi bahwa operator beban kerja belum menimpa variabel lingkungan apa pun:
|
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_id |
String |
Memverifikasi ID image penampung beban kerja. Contoh
|
Berinteraksi dengan:
|
String |
Memverifikasi lokasi penampung beban kerja yang berjalan di atas image Confidential Space. Contoh
|
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 mencakup elemen berikut:
Contoh
|
Berinteraksi dengan:
|
String yang ditentukan |
Memverifikasi kebijakan mulai ulang peluncur penampung saat beban kerja berhenti. Nilai yang valid adalah:
Contoh
|
Pernyataan VM
Pernyataan | Jenis | Deskripsi |
---|---|---|
Berinteraksi dengan:
|
Array string |
Memverifikasi bahwa akun layanan yang ditentukan terhubung ke VM yang menjalankan beban kerja, atau telah tercantum menggunakan Contoh
|
assertion.hwmodel |
String |
Memverifikasi teknologi Confidential Computing yang mendasarinya. Platform yang didukung adalah sebagai berikut:
Contoh
|
Berinteraksi dengan:
|
Boolean |
Memverifikasi status pemantauan pada entitas pengesahan. Contoh
|
assertion.submods.gce.instance_id |
String |
Memverifikasi ID instance VM. Contoh
|
assertion.submods.gce.instance_name |
String |
Memverifikasi nama instance VM. Contoh
|
assertion.submods.gce.project_id |
String |
Memverifikasi bahwa VM menjalankan project Google Cloud dengan ID project yang ditentukan. Contoh
|
assertion.submods.gce.project_number |
String |
Memverifikasi bahwa VM berjalan di project Google Cloud dengan nomor project yang ditentukan. Contoh
|
Berinteraksi dengan:
|
String |
Memverifikasi bahwa VM berjalan di zona yang ditentukan. Contoh
|