Modello di sicurezza: difesa in profondità
L'API Multi-party Compute (MPC) implementa un'architettura di sicurezza di difesa in profondità che si basa su rigidi controlli di Identity and Access Management (IAM). Questo modello garantisce che nessuna singola identità o Account Google compromesso possa compromettere unilateralmente la piattaforma o estrarre asset.
- Livello 1: Identity and Access Management (IAM): tutte le richieste vengono verificate alla periferia per confermare che il chiamante disponga delle autorizzazioni esplicite necessarie per richiamare metodi API Google Cloud specifici (consulta la panoramica di IAM). Gli account che non dispongono di privilegi sufficienti vengono immediatamente rifiutati con un errore
403 Forbidden, impedendo al traffico non autorizzato di raggiungere il livello di applicazione. - Livello 2: separazione dei compiti (SoD): la piattaforma MPC applica una rigorosa separazione dei ruoli per garantire che azioni di governance ed esecuzione distinte non possano essere eseguite dalla stessa persona. Definendo ruoli distinti, ad esempio limitando gli autori delle policy alla sola modifica delle policy e i firmatari alla sola firma dei payload delle transazioni, il sistema garantisce che un singolo agente non autorizzato o un account compromesso non possa eseguire autonomamente transazioni sensibili.
- Livello 3: principio del privilegio minimo: l'accesso viene concesso rigorosamente in base alla funzione lavorativa, garantendo agli utenti solo le autorizzazioni minime necessarie per svolgere le proprie mansioni. Ad esempio, il team di conformità o di controllo opera con il privilegio minimo, mantenendo un accesso rigorosamente di sola lettura per monitorare l'attività. Possono visualizzare le policy e ispezionare i log delle transazioni per la supervisione, ma non possono modificare le policy, avviare transazioni o interagire con gli asset.
Persona e separazione dei compiti
La sicurezza viene applicata separando l'amministrazione (configurazione del consiglio) dalla governance (definizione delle regole) e dall'esecuzione (spostamento degli asset).
| Utente tipo | Dominio | Ruolo IAM assegnato | Responsabilità principali |
|---|---|---|---|
| Amministratore | Amministrazione | mpc.admin | Esegue il provisioning delle risorse. Non possono firmare transazioni o creare policy. |
| Policy Author | Governance | mpc.editor | Definisce e modifica le policy operative (ad es. i limiti di spesa). |
| Signer | Esecuzione | mpc.editor | Firma i payload delle transazioni. Impossibile creare policy. |
| Conformità | Supervisione | mpc.viewer | Accesso in sola lettura per monitorare l'attività e ispezionare le policy. Non può modificare le policy o avviare transazioni. |
Ruoli IAM predefiniti
La tabella seguente descrive in dettaglio le autorizzazioni IAM specifiche per l'API Multi-party Compute (MPC) e i ruoli che le concedono. Per saperne di più sulle operazioni API, consulta il Riferimento API MPC.
| Ruolo | Autorizzazioni |
|---|---|
Multi-party Compute Viewer(roles/mpc.viewer)Fornisce l'accesso di sola lettura all'API (operazioni Get/List su tutte le risorse). Ideale per revisori o strumenti di monitoraggio. Risorse di livello più basso a cui puoi concedere questo ruolo:
|
mpc.googleapis.com/keyRings.getmpc.googleapis.com/keyRings.listmpc.googleapis.com/keys.getmpc.googleapis.com/keys.listmpc.googleapis.com/policies.getmpc.googleapis.com/policies.listmpc.googleapis.com/policyAuthorTrustBundles.getmpc.googleapis.com/proposals.getmpc.googleapis.com/proposals.listmpc.googleapis.com/signers.getmpc.googleapis.com/signers.list |
Multi-party Compute Editor(roles/mpc.editor)Progettato per autori di policy e partecipanti (firmatari). Concede la possibilità di gestire le policy, creare proposte e registrare le decisioni dei partecipanti. Risorse di livello più basso a cui puoi concedere questo ruolo:
|
Include tutte le autorizzazioni di roles/mpc.viewer, più:mpc.googleapis.com/keyRings.updatempc.googleapis.com/keys.updatempc.googleapis.com/policies.addQuorumSignaturempc.googleapis.com/policies.creatempc.googleapis.com/policies.revokempc.googleapis.com/proposals.creatempc.googleapis.com/proposals.fetchProposalSignaturempc.googleapis.com/proposals.recordParticipantDecision |
Multi-party Compute Admin(roles/mpc.admin)Progettato per gli amministratori. Concede l'accesso completo per eseguire il provisioning dell'infrastruttura, generare chiavi e registrare le chiavi pubbliche dei partecipanti. Risorse di livello più basso a cui puoi concedere questo ruolo:
|
Include tutte le autorizzazioni di roles/mpc.editor, più:mpc.googleapis.com/keyRings.creatempc.googleapis.com/keyRings.deletempc.googleapis.com/keys.creatempc.googleapis.com/policyAuthorTrustBundles.updatempc.googleapis.com/signers.create |
Ruoli personalizzati
Per concedere a un partecipante un accesso con privilegio minimo rigoroso anziché utilizzare i ruoli predefiniti più ampi come roles/mpc.editor, puoi creare un ruolo IAM personalizzato contenente solo le autorizzazioni esatte necessarie per partecipare alle operazioni.
Comando di esempio per un ruolo personalizzato
gcloud iam roles create customMpcSigner \
--project="PROJECT_ID" \
--title="Custom MPC Signer" \
--description="Restricted role for transaction participants" \
--permissions="mpc.googleapis.com/proposals.get,mpc.googleapis.com/proposals.list,mpc.googleapis.com/proposals.recordParticipantDecision"
IAM a livello di risorsa e condizionato
Rispettando il principio del privilegio minimo, puoi limitare l'ambito dei ruoli IAM utilizzando le condizioni IAM.
Se più unità aziendali operano nello stesso progetto Google Cloud utilizzando un'istanza condivisa, puoi applicare la separazione inserendo le risorse in keyring separati (ad es. KeyRing A e KeyRing B). Puoi concedere roles/mpc.editor a un service account utilizzando una condizione IAM che lo limita esclusivamente alle operazioni che si verificano all'interno di un keyring designato (KeyRing A), limitando al contempo l'accesso ad altri keyring nella stessa istanza.
Comando di esempio
Esempio di creazione di un'associazione di ruoli con ambito KeyRing:
gcloud projects add-iam-policy-binding PROJECT_ID \
--member="serviceAccount:sa-name@PROJECT_ID.iam.gserviceaccount.com" \
--role="roles/mpc.editor" \
--condition="expression=resource.name.startsWith('projects/PROJECT_ID/locations/LOCATION/instances/INSTANCE_ID/mpc/keyRings/KEYRING_ID'),title=KeyRing_Scoped_Editor"
Identità federate (Bring Your Own Identity)
Puoi autenticare e autorizzare le richieste di calcolo multipartitico utilizzando provider di identità aziendali esterni (come Okta, Microsoft Entra ID o Ping Identity) o runtime di workload esterni senza creare Account Google o gestire le chiavi dei account di servizio:
- Federazione delle identità per la forza lavoro: mappa i pool di forza lavoro a livello di organizzazione (
locations/global/workforcePools/<var>WORKFORCE_POOL_ID</var>) alle persone fisiche, come amministratori, autori di policy, firmatari e responsabili della conformità, associando i ruoli IAM ai gruppi IdP esterni. - Federazione delle identità per i workload: mappa i pool di identità dei workload a livello di progetto (
projects/<var>PROJECT_NUMBER</var>/locations/global/workloadIdentityPools/<var>WORKLOAD_POOL_ID</var>) ai nodi di co-firmatario automatici in esecuzione in AWS, Azure o Kubernetes.
Alle entità federate deve essere concesso anche il ruolo Service Usage Consumer (roles/serviceusage.serviceUsageConsumer) nel progetto consumer, in modo che le richieste API possano attribuire quota e fatturazione al progetto.
Esempi di associazioni di ruoli federati
# Allow members of the workforce pool to consume APIs through the consumer project
gcloud projects add-iam-policy-binding <var>PROJECT_ID</var> \
--member="principalSet://iam.googleapis.com/locations/global/workforcePools/<var>WORKFORCE_POOL_ID</var>/*" \
--role="roles/serviceusage.serviceUsageConsumer"
# Grant MPC Admin to an external IdP administrators group
gcloud projects add-iam-policy-binding <var>PROJECT_ID</var> \
--member="principalSet://iam.googleapis.com/locations/global/workforcePools/<var>WORKFORCE_POOL_ID</var>/group/mpc-admins" \
--role="roles/mpc.admin"
# Grant MPC Editor to an external IdP signers group
gcloud projects add-iam-policy-binding <var>PROJECT_ID</var> \
--member="principalSet://iam.googleapis.com/locations/global/workforcePools/<var>WORKFORCE_POOL_ID</var>/group/mpc-signers" \
--role="roles/mpc.editor"
Sostituisci quanto segue:
<var>PROJECT_ID</var>: l'ID progetto consumer per l'istanza di computing multipartitico.<var>WORKFORCE_POOL_ID</var>: l'ID del pool di identità della forza lavoro a livello di organizzazione.
Per una procedura end-to-end completa, consulta Configura la federazione delle identità per la forza lavoro (BYOID).