Sicherheitsmodell: Defense in Depth
Die Multi-Party Compute (MPC) API implementiert eine Defense-in-Depth-Sicherheitsarchitektur, die auf strengen IAM-Kontrollen (Identity and Access Management) basiert. Dieses Modell sorgt dafür, dass keine einzelne Identität oder kein gehacktes Google-Konto die Plattform einseitig gefährden oder Assets extrahieren kann.
- Ebene 1: Identity and Access Management (IAM): Alle Anfragen werden am Edge überprüft, um zu bestätigen, dass der Aufrufer die expliziten Berechtigungen hat, die zum Aufrufen bestimmter Google Cloud API-Methoden erforderlich sind (siehe IAM-Übersicht). Konten ohne ausreichende Berechtigungen werden sofort mit einem
403 Forbidden-Fehler abgelehnt, sodass nicht autorisierter Traffic die Anwendungsebene nicht erreicht. - Ebene 2: Funktionstrennung (Separation of Duties, SoD): Die MPC-Plattform erzwingt eine strikte Rollentrennung, um sicherzustellen, dass unterschiedliche Governance- und Ausführungsaktionen nicht von derselben Person ausgeführt werden können. Durch die Definition unterschiedlicher Rollen – z. B. die Beschränkung von Richtlinienautoren auf das Bearbeiten von Richtlinien und von Unterzeichnern auf das Signieren von Transaktionsnutzlasten – wird sichergestellt, dass ein einzelner böswilliger Akteur oder ein gehacktes Konto keine sensiblen Transaktionen unabhängig ausführen kann.
- Ebene 3: Prinzip der geringsten Berechtigung: Der Zugriff wird streng nach der jeweiligen Funktion gewährt. So haben Nutzer nur die Mindestberechtigungen, die sie für ihre Aufgaben benötigen. Das Compliance- oder Audit-Team arbeitet beispielsweise mit den geringsten Berechtigungen und hat nur Lesezugriff, um Aktivitäten zu überwachen. Sie können Richtlinien einsehen und Transaktionsprotokolle prüfen, um die Einhaltung von Vorgaben zu überwachen. Sie können jedoch keine Richtlinien ändern, Transaktionen initiieren oder mit Assets interagieren.
Personas und Aufgabentrennung
Die Sicherheit wird durch die Entkopplung von Verwaltung (Einrichtung des Boards), Governance (Definition von Regeln) und Ausführung (Verschieben von Assets) gewährleistet.
| Persona | Domain | IAM-Rolle zugewiesen | Hauptaufgaben |
|---|---|---|---|
| Administrator | Verwaltung | mpc.admin | Stellt Ressourcen bereit. Kann keine Transaktionen signieren oder Richtlinien erstellen. |
| Richtlinienautor | Governance | mpc.editor | Definiert und bearbeitet operative Richtlinien (z.B. Ausgabenlimits). |
| Unterzeichner | Ausführung | mpc.editor | Signiert Transaktionsnutzlasten. Richtlinien können nicht erstellt werden. |
| Compliance | Steuerung und Qualitätssicherung | mpc.viewer | Lesezugriff zum Überwachen von Aktivitäten und Prüfen von Richtlinien. Kann keine Richtlinien ändern oder Transaktionen initiieren. |
Vordefinierte IAM-Rollen
In der folgenden Tabelle sind die spezifischen IAM-Berechtigungen für die Multi-Party Computation (MPC) API und die Rollen, die diese Berechtigungen gewähren, aufgeführt. Weitere Informationen zu den API-Vorgängen finden Sie in der MPC API-Referenz.
| Rolle | Berechtigungen |
|---|---|
Multi-Party Compute Viewer(roles/mpc.viewer)Bietet Lesezugriff auf die gesamte API (Get-/List-Vorgänge für alle Ressourcen). Am besten geeignet für Auditoren oder Monitoring-Tools. Ressourcen auf der niedrigsten Ebene, für die Sie diese Rolle zuweisen können:
|
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)Für Richtlinienersteller und Teilnehmer (Unterzeichner). Ermöglicht das Verwalten von Richtlinien, das Erstellen von Vorschlägen und das Aufzeichnen von Entscheidungen von Teilnehmern. Ressourcen auf der niedrigsten Ebene, für die Sie diese Rolle zuweisen können:
|
Umfasst alle roles/mpc.viewer-Berechtigungen sowie: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)Für Administratoren gedacht. Gewährt vollständigen Zugriff, um Infrastruktur bereitzustellen, Schlüssel zu generieren und öffentliche Schlüssel von Teilnehmern zu registrieren. Ressourcen auf der niedrigsten Ebene, für die Sie diese Rolle zuweisen können:
|
Umfasst alle roles/mpc.editor-Berechtigungen sowie:mpc.googleapis.com/keyRings.creatempc.googleapis.com/keyRings.deletempc.googleapis.com/keys.creatempc.googleapis.com/policyAuthorTrustBundles.updatempc.googleapis.com/signers.create |
Benutzerdefinierte Rollen
Wenn Sie einem Teilnehmer strikten Zugriff mit geringsten Berechtigungen gewähren möchten, anstatt die umfassenderen vordefinierten Rollen wie roles/mpc.editor zu verwenden, können Sie eine benutzerdefinierte IAM-Rolle erstellen, die nur die genauen Berechtigungen enthält, die er für die Teilnahme an Vorgängen benötigt.
Beispielbefehl für benutzerdefinierte Rolle
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 auf Ressourcenebene und bedingtes IAM
Wenn Sie sich an das Prinzip der geringsten Berechtigung halten, können Sie IAM-Rollen mithilfe von IAM-Bedingungen auf einen begrenzten Bereich beschränken.
Wenn mehrere Geschäftseinheiten im selben Google Cloud -Projekt mit einer freigegebenen Instanz arbeiten, können Sie die Trennung erzwingen, indem Sie Ressourcen in separate Schlüsselbunde (z.B. KeyRing A und KeyRing B) einfügen. Sie können einem Dienstkonto roles/mpc.editor mit einer IAM-Bedingung gewähren, die es ausschließlich auf Vorgänge innerhalb eines bestimmten Schlüsselbunds (KeyRing A) beschränkt, während der Zugriff auf andere Schlüsselbunde in derselben Instanz eingeschränkt wird.
Beispielbefehl
Beispiel für das Erstellen einer Rollenbindung mit KeyRing-Bereich:
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"
Föderierte Identitäten (Bring Your Own Identity)
Sie können Multi-Party-Compute-Anfragen mit externen Unternehmens-Identitätsanbietern (z. B. Okta, Microsoft Entra ID oder Ping Identity) oder externen Arbeitslastlaufzeiten authentifizieren und autorisieren, ohne Google-Konten zu erstellen oder Dienstkontoschlüssel zu verwalten:
- Mitarbeiteridentitätsföderation: Ordnet Mitarbeiterpools auf Organisationsebene (
locations/global/workforcePools/<var>WORKFORCE_POOL_ID</var>) menschlichen Personas wie Administratoren, Richtlinienautoren, Signierern und Compliance-Verantwortlichen zu, indem IAM-Rollen an externe IdP-Gruppen gebunden werden. - Workload Identity-Föderation: Ordnet Workload Identity-Pools auf Projektebene (
projects/<var>PROJECT_NUMBER</var>/locations/global/workloadIdentityPools/<var>WORKLOAD_POOL_ID</var>) automatisierten Mitunterzeichnerknoten zu, die in AWS, Azure oder Kubernetes ausgeführt werden.
Föderierten Hauptkonten muss außerdem die Rolle Service Usage Consumer (roles/serviceusage.serviceUsageConsumer) für das Nutzerprojekt zugewiesen werden, damit API-Anfragen Kontingente und Abrechnung dem Projekt zuordnen können.
Beispiele für föderierte Rollenbindungen
# 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"
Ersetzen Sie Folgendes:
<var>PROJECT_ID</var>: die Nutzerprojekt-ID für Ihre Multi-Party-Computation-Instanz.<var>WORKFORCE_POOL_ID</var>: die ID des Workforce Identity-Pools auf Organisationsebene.
Eine vollständige Anleitung finden Sie unter Mitarbeiteridentitätsföderation (BYOID) konfigurieren.