I collaboratori dei dati devono configurare le seguenti risorse affinché i loro dati riservati siano accessibili da un carico di lavoro:
I dati criptati stessi, archiviati in Google Cloud.
Account di servizio che possono decriptare i dati.
Convalida dell'attestazione utilizzando un pool di identità del workload (WIP). Dopo che un workload è stato autorizzato dal progetto in fase di elaborazione, può simulare l'identità degli account di servizio nel progetto di un collaboratore dei dati per recuperare dati riservati.
Inoltre, i collaboratori dei dati devono scegliere dove vengono archiviati i risultati del carico di lavoro Confidential Space e se i dati presentati sono unici o condivisi. Ad esempio, puoi generare lo stesso risultato in più bucket Cloud Storage appartenenti a ciascun collaboratore dei dati.
Memorizzare i dati
Puoi utilizzare qualsiasi servizio Google Cloud che memorizza i dati per ospitare i tuoi dati riservati. Ad esempio, potresti utilizzare uno dei seguenti servizi:
Devi assicurarti che questi dati siano criptati a riposo, utilizzando le funzionalità integrate o un servizio come Cloud Key Management Service (Cloud KMS).
Creare un account di servizio per decriptare i dati riservati
Rendi disponibili i tuoi dati riservati per i carichi di lavoro Confidential Space e riduci l'esposizione umana a questi dati tramite gli account di servizio.
Ad esempio, puoi criptare i file riservati in Cloud Storage con Cloud KMS e poi creare un account di servizio con l'autorizzazione per accedere ai dati e alla chiave per decriptarli.
Poi colleghi l'account di servizio a un WIP. Un workload di Confidential Space autorizzato basato su un altro progetto può quindi utilizzare il WIP per rubare l'identità dell'account di servizio che decripta i dati, recupera i dati decriptati ed elaborali.
Poiché gli account di servizio vengono utilizzati sia per decriptare i dati riservati sia per elaborarli, la visibilità dei dati riservati è limitata ai relativi proprietari. Poiché il workload opera in una Confidential VM, la crittografia della memoria basata su hardware garantisce che i dati rimangano privati durante l'utilizzo. SSH è disabilitato anche sulle VM del carico di lavoro che utilizzano l'immagine Confidential Space di produzione, il che significa che nessuno può accedere alla VM mentre è in esecuzione.
Consulta Creare il primo ambiente Confidential Space per un esempio.
Crea un WIP e un provider per la convalida dell'attestazione
Per contribuire a proteggere i dati da un operatore di carichi di lavoro non attendibile, Confidential Space implementa una procedura di attestazione che rileva le modifiche a un'immagine del carico di lavoro o al relativo TEE. Il processo si basa su misurazioni dell'avvio con misurazioni e del tempo di esecuzione esteso della VM schermata e acquisisce le misurazioni della sequenza di avvio in un registro protetto di sola estensione nel dispositivo Virtual Trusted Platform Module (vTPM).
Il servizio di attestazione dello spazio riservato genera token OpenID Connect (OIDC) che includono queste attestazioni vTPM in un formato che può essere convalidato da un WIP, che le controlla in base ai criteri aggiunti come condizioni degli attributi a un provider. Questi token sono firmati da Google, durano un'ora e vengono aggiornati automaticamente.
Se il progetto WIP autorizza il carico di lavoro, quest'ultimo può simulare l'identità degli account di servizio nel progetto per decriptare e recuperare i dati riservati.
Per configurare un WIP e un fornitore, segui le istruzioni riportate di seguito:
Collega l'account di servizio di decrittografia al WIP con il ruolo
iam.workloadIdentityUser
.Crea un provider OIDC con i seguenti dettagli:
Un URI emittente di
https://confidentialcomputing.googleapis.com/
.Un segmento di pubblico consentito di
https://sts.googleapis.com
.Una mappatura degli attributi del provider di
google.subject
, con un valore diassertion.sub
.Condizioni degli attributi utilizzate per convalidare le attestazioni del carico di lavoro. Consulta la sezione Creare un criterio di attestazione per conoscere le opzioni disponibili.
Crea un criterio di attestazione
Durante la creazione di un WIP, aggiungi condizioni degli attributi, ovvero condizioni che un workload deve soddisfare per poter accedere ai dati. Per Spazio riservato, queste condizioni degli attributi formano il criterio di attestazione.
I criteri sono scritti in Common Expression Language (CEL) e sono costituiti da una serie di affermazioni che possono essere concatenate con l'operatore &&
.
Ecco un esempio di aggiunta di un provider a un pool di identità del workload utilizzando gcloud CLI, insieme all'opzione attribute-condition
che definisce i criteri:
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"
In questo esempio, un'identità esterna che tenta di rubare l'identità di un account servizio collegato al pool di identità per i workload deve dimostrare e corrispondere ai seguenti dettagli:
Il digest dell'immagine del container del carico di lavoro
L'indirizzo dell'account di servizio collegato alla VM del workload
CONFIDENTIAL_SPACE
è il software in esecuzione sulla VM, con tutte le sue garanzie di sicurezza integrate.L'attributo di supporto delle immagini di Confidential Space di produzione
Affermazioni di attestazione
Le asserzioni disponibili per creare un criterio di attestazione sono descritte nella tabella seguente. Possono convalidare le affermazioni fatte dall'immagine di Confidential Space, dal contenitore del carico di lavoro e dalla VM.
Affermazioni sulle immagini
affermazione | Tipo | Descrizione |
---|---|---|
Interazione con:
|
Stringa definita |
Verifica che l'immagine Confidential Space sia la versione di debug o di produzione. I valori validi sono:
EsempiIl seguente codice verifica che venga utilizzata la versione di debug dell'immagine di Confidential Space:
Il seguente codice verifica che venga utilizzata la versione di produzione dell'immagine di Confidential Space:
|
assertion.submods.confidential_space.support_attributes |
Array di stringhe |
Verifica che la versione di sicurezza del TEE sia un'immagine di Confidential Space di produzione. Le immagini dello spazio riservato di debug non hanno un attributo di supporto impostato. Esistono tre attributi di supporto:
EsempioIl seguente codice verifica che venga utilizzata una versione stabile dell'immagine di Confidential Space:
|
assertion.swname |
Stringa definita |
Verifica il software in esecuzione nell'entità che esegue la verifica. Il valore è sempre Esempio
|
assertion.swversion |
Array di stringhe |
Verifica la versione software dell'immagine di Confidential Space. Ti consigliamo di utilizzare Esempio
|
Affermazioni del contenitore
affermazione | Tipo | Descrizione |
---|---|---|
Interazione con:
|
Array di stringhe |
Verifica i comandi e i parametri CMD utilizzati nell'immagine del carico di lavoro. EsempiIl seguente codice verifica che il CMD dell'immagine del carico di lavoro non sia stato sovrascritto:
Il seguente codice verifica che
|
Interazione con:
|
Oggetto JSON |
Verifica che le variabili di ambiente e i relativi valori siano stati passati esplicitamente al contenitore. EsempioIl seguente codice verifica che la variabile di ambiente
|
Interazione con:
|
Stringa |
Verifica se l'operatore del carico di lavoro ha sovrascritto le variabili di ambiente nel container. EsempiIl codice seguente verifica che l'operatore del carico di lavoro non abbia override della variabile di ambiente
Il codice seguente verifica che l'operatore del carico di lavoro non abbia soprascritto alcuna variabile di ambiente:
|
assertion.submods.container.image_digest |
Stringa |
Verifica il digest dell'immagine del contenitore del carico di lavoro. La specifica di questa condizione consente a più parti di concordare un carico di lavoro autorizzato che può accedere ai loro dati. Esempio
|
assertion.submods.container.image_id |
Stringa |
Verifica l'ID immagine del contenitore del carico di lavoro. Esempio
|
Interazione con:
|
Stringa |
Verifica la posizione del contenitore del carico di lavoro in esecuzione sopra l'immagine di Confidential Space. Esempio
|
Interazione con:
|
Oggetto JSON |
Verifica che l'immagine abbia una determinata firma o sia firmata da una chiave pubblica e da un algoritmo di firma. La specifica di questa condizione consente a più parti di concordare un carico di lavoro autorizzato che può accedere ai loro dati. L'affermazione può includere i seguenti elementi:
Esempio
|
Interazione con:
|
Stringa definita |
Verifica il criterio di riavvio del programma di avvio del contenitore quando il carico di lavoro si arresta. I valori validi sono:
Esempio
|
Verifiche VM
affermazione | Tipo | Descrizione |
---|---|---|
Interazione con:
|
Array di stringhe |
Verifica che un account di servizio specificato sia connesso alla VM che esegue il carico di lavoro o che sia stato elencato utilizzando Esempio
|
assertion.hwmodel |
Stringa |
Verifica la tecnologia Confidential Computing sottostante. Le piattaforme supportate sono le seguenti:
Esempio
|
Interazione con:
|
Booleano |
Verifica lo stato del monitoraggio nell'entità di attestazione. Esempio
|
assertion.submods.gce.instance_id |
Stringa |
Verifica l'ID istanza VM. Esempio
|
assertion.submods.gce.instance_name |
Stringa |
Verifica il nome dell'istanza VM. Esempio
|
assertion.submods.gce.project_id |
Stringa |
Verifica che nella VM sia in esecuzione un progetto Google Cloud con l'ID progetto specificato. Esempio
|
assertion.submods.gce.project_number |
Stringa |
Verifica che la VM sia in esecuzione in un progetto Google Cloud con il numero di progetto specificato. Esempio
|
Interazione con:
|
Stringa |
Verifica che la VM sia in esecuzione nella zona specificata. Esempio
|