Security Engineering beginnt mit der Festlegung, wer auf eine Ressource zugreifen darf, über welche Pfade sie erreichbar ist und welche Nachweise das Ergebnis dokumentieren. Unsere kleinste Grenzeinheit ist ein Cloud Storage-Bucket in einem Google Cloud-Projekt, auf den ein Cloud Run-Dienst zugreift. Im weiteren Verlauf wird dieses Konzept um Kontrollmechanismen für Identität, Netzwerk, Verschlüsselung, Erkennung und Verifizierung erweitert.
Identity and Access Management (IAM) autorisiert einen Principal (Identität) zur Ausführung einer zulässigen Aktion auf einer Ressource. IAM-Richtlinien können von der Organisation, dem Ordner oder dem Projekt auf den Bucket vererbt werden. Ein Dienstkonto ist eine Identität für Workloads, kein Administratorkonto für menschliche Nutzer. Indem nur dem Laufzeit-Dienstkonto die Berechtigung für den Bucket erteilt wird, lässt sich der Geltungsbereich für Anfragen auf der Datenebene (Data Plane) einschränken.
Netzwerkkontrollen steuern eher die Datenverkehrspfade als die Ressourcenberechtigungen. VPC-Firewallregeln bewerten den Datenverkehr für Netzwerkschnittstellen der Compute Engine. Der Cloud Key Management Service (Cloud KMS) verwaltet kundeneigene Verschlüsselungsschlüssel für unterstützte Ressourcen. Das Security Command Center erfasst Informationen zum Sicherheitsstatus sowie Ergebnisse der Bedrohungserkennung. Da jede Kontrollmaßnahme einen anderen Aspekt abdeckt, ersetzt keine davon die IAM-Autorisierung.
Betrachten wir nun, wie Kontrollmechanismen auf Organisations-, Projekt- und Ressourcenebene an der Grenze eines Workloads zusammenwirken.
Angenommen, das Projekt example-payments-project hostet einen Cloud Run-Dienst in der Region us-central1. Dessen Laufzeit-Dienstkonto schreibt genehmigte Belege in den Bucket example-receipts-bucket. Eine Administratorgruppe überprüft die Konfiguration. Ein separates Dienstkonto für Continuous Integration und Delivery stellt Revisionen bereit. Durch die Trennung dieser Identitäten wird verhindert, dass Berechtigungsnachweise für die Bereitstellung automatisch auch den Zugriff auf Daten ermöglichen.
Das Bedrohungsmodell umfasst kompromittierte Entwickler-Zugangsdaten, eine zu weit gefasste Laufzeitrolle sowie den unbeabsichtigten Export von Daten. Der Cloud Run-Dienst benötigt lediglich die für den Bucket erforderlichen Berechtigungen. Die Administratorgruppe benötigt einen kontrollierten Verwaltungszugriff. Die Identität für die Bereitstellung benötigt Berechtigungen für die Bereitstellung, nicht jedoch für umfassende operative Verwaltungsaufgaben. Dadurch wird das Prinzip der minimalen Rechtevergabe (Least Privilege) zu einer überprüfbaren Anforderung und nicht nur zu einer allgemeinen Absicht.
Veranschaulichen wir uns die Identitäten, die Region und die Datenressource, die den Sicherheitsbereich dieser Workload definieren.