Protezione del servizio MPC mediante i ruoli IAM

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:
  • KeyRing
mpc.googleapis.com/keyRings.get
mpc.googleapis.com/keyRings.list
mpc.googleapis.com/keys.get
mpc.googleapis.com/keys.list
mpc.googleapis.com/policies.get
mpc.googleapis.com/policies.list
mpc.googleapis.com/policyAuthorTrustBundles.get
mpc.googleapis.com/proposals.get
mpc.googleapis.com/proposals.list
mpc.googleapis.com/signers.get
mpc.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:
  • KeyRing
Include tutte le autorizzazioni di roles/mpc.viewer, più:

mpc.googleapis.com/keyRings.update
mpc.googleapis.com/keys.update
mpc.googleapis.com/policies.addQuorumSignature
mpc.googleapis.com/policies.create
mpc.googleapis.com/policies.revoke
mpc.googleapis.com/proposals.create
mpc.googleapis.com/proposals.fetchProposalSignature
mpc.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:
  • Istanza
Include tutte le autorizzazioni di roles/mpc.editor, più:

mpc.googleapis.com/keyRings.create
mpc.googleapis.com/keyRings.delete
mpc.googleapis.com/keys.create
mpc.googleapis.com/policyAuthorTrustBundles.update
mpc.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." \
  --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).