Kolaborator data perlu menyiapkan resource berikut agar data rahasia mereka dapat diakses oleh beban kerja:
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 identitas 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 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 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 atau dengan sesuatu seperti Cloud Key Management Service (Cloud KMS).
Membuat akun layanan untuk mendekripsi data rahasia
Anda menyediakan data rahasia untuk beban kerja 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 diberi otorisasi dan berbasis di project lain kemudian dapat menggunakan WIP tersebut untuk meniru identitas akun layanan yang mendekripsi data, mengambil data yang telah didekripsi, dan memprosesnya.
Karena akun layanan digunakan untuk mendekripsi dan memproses data rahasia, 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 VM berjalan.
Lihat Membuat lingkungan Confidential Space pertama Anda untuk melihat 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, serta menangkap pengukuran urutan booting dalam register khusus perpanjangan dan dilindungi di perangkat virtual Trusted Platform Module (vTPM).
Layanan pengesahan Confidential Space membuat token OpenID Connect (OIDC) yang menyertakan pengesahan vTPM ini dalam bentuk yang dapat divalidasi oleh WIP, yang memeriksanya berdasarkan kebijakan yang ditambahkan sebagai kondisi atribut ke penyedia. Token ini ditandatangani oleh Google, berlaku selama satu jam, dan diperbarui secara otomatis.
Jika WIP mengizinkan workload, workload tersebut kemudian 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 yang diizinkan untuk
https://sts.googleapis.com
.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 dirangkai
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 workload
Alamat akun layanan yang terhubung ke VM workload
CONFIDENTIAL_SPACE
adalah software yang berjalan di VM, dengan semua jaminan keamanan bawaannya.Atribut dukungan image Confidential Space produksi
Pernyataan pengesahan
Pernyataan yang tersedia untuk membuat kebijakan pengesahan diuraikan dalam tabel berikut. Layanan ini 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 image Confidential Space versi debug sedang digunakan:
Kode berikut memverifikasi bahwa image Confidential Space versi produksi sedang digunakan:
|
assertion.submods.confidential_space.support_attributes |
Array string |
Memverifikasi bahwa versi keamanan TEE adalah image Confidential Space produksi. Gambar Confidential Space untuk proses debug tidak memiliki set atribut dukungan. Ada tiga atribut dukungan:
ContohKode berikut memverifikasi bahwa image Ruang Rahasia versi stabil sedang digunakan:
|
assertion.swname |
String yang ditentukan |
Memverifikasi software yang berjalan di entitas yang membuktikan. Nilai
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 CMD dan parameter yang digunakan dalam image workload. ContohKode berikut memverifikasi bahwa CMD image beban kerja belum ditimpa:
Kode berikut memverifikasi bahwa
|
Berinteraksi dengan:
|
Objek JSON |
Memverifikasi bahwa variabel lingkungan dan nilainya telah diteruskan secara eksplisit ke container. ContohKode berikut memverifikasi bahwa variabel lingkungan
|
Berinteraksi dengan:
|
String |
Memverifikasi apakah operator workload telah mengganti variabel lingkungan dalam container. ContohKode berikut memverifikasi bahwa operator beban kerja tidak
mengganti variabel lingkungan
Kode berikut memverifikasi bahwa operator workload 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 menyetujui workload resmi yang diizinkan untuk mengakses data mereka. Contoh
|
assertion.submods.container.image_id |
String |
Memverifikasi ID image container workload. Contoh
|
Berinteraksi dengan:
|
String |
Memverifikasi lokasi container workload yang berjalan di atas image Confidential Space. Contoh
|
Berinteraksi dengan:
|
Objek JSON |
Memverifikasi bahwa gambar memiliki tanda tangan tertentu atau ditandatangani oleh algoritma penandatanganan dan kunci publik. Dengan menentukan kondisi ini, beberapa pihak dapat menyetujui workload yang diizinkan untuk mengakses data mereka. Pernyataan dapat mencakup elemen berikut:
Contoh
|
Berinteraksi dengan:
|
String yang ditentukan |
Memverifikasi kebijakan mulai ulang peluncur container saat beban kerja berhenti. Nilai yang valid adalah:
Contoh
|
Pernyataan VM
Pernyataan | Jenis | Deskripsi |
---|---|---|
Berinteraksi dengan:
|
Array string |
Memverifikasi bahwa akun layanan tertentu terhubung ke
VM yang menjalankan workload, atau telah dicantumkan 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 yang membuktikan. 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 project ID 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
|