GCP - KMS Privesc
KMS
Informationen zu KMS:
GCP - KMS EnumBeachten Sie, dass in KMS die Berechtigungen nicht nur von Organisationen, Ordnern und Projekten geerbt werden, sondern auch von Keyrings.
cloudkms.cryptoKeyVersions.useToDecrypt
cloudkms.cryptoKeyVersions.useToDecrypt
Sie können diese Berechtigung verwenden, um Informationen mit dem Schlüssel zu entschlüsseln, über den Sie diese Berechtigung haben.
cloudkms.cryptoKeys.setIamPolicy
cloudkms.cryptoKeys.setIamPolicy
Ein Angreifer mit dieser Berechtigung könnte sich selbst Berechtigungen geben, um den Schlüssel zur Entschlüsselung von Informationen zu verwenden.
cloudkms.cryptoKeyVersions.useToDecryptViaDelegation
cloudkms.cryptoKeyVersions.useToDecryptViaDelegation
Hier ist eine konzeptionelle Aufschlüsselung, wie diese Delegation funktioniert:
Dienstkonto A hat direkten Zugriff auf das Entschlüsseln unter Verwendung eines bestimmten Schlüssels in KMS.
Dienstkonto B erhält die Berechtigung
useToDecryptViaDelegation
. Dies ermöglicht es ihm, KMS aufzufordern, Daten stellvertretend für Dienstkonto A zu entschlüsseln.
Die Verwendung dieser Berechtigung ist implizit in der Art und Weise, wie der KMS-Dienst Berechtigungen überprüft, wenn eine Entschlüsselungsanforderung gestellt wird.
Wenn Sie eine Standard-Entschlüsselungsanforderung über die Google Cloud KMS-API (in Python oder einer anderen Sprache) stellen, überprüft der Dienst, ob das anfordernde Dienstkonto über die erforderlichen Berechtigungen verfügt. Wenn die Anforderung von einem Dienstkonto mit der useToDecryptViaDelegation
-Berechtigung gestellt wird, überprüft KMS, ob dieses Konto berechtigt ist, die Entschlüsselung stellvertretend für die Entität, die den Schlüssel besitzt, anzufordern.
Einrichten für Delegation
Definieren der benutzerdefinierten Rolle: Erstellen Sie eine YAML-Datei (z. B.
custom_role.yaml
), die die benutzerdefinierte Rolle definiert. Diese Datei sollte die Berechtigungcloudkms.cryptoKeyVersions.useToDecryptViaDelegation
enthalten. Hier ist ein Beispiel, wie diese Datei aussehen könnte:
Erstellen der benutzerdefinierten Rolle mit dem gcloud CLI: Verwenden Sie den folgenden Befehl, um die benutzerdefinierte Rolle in Ihrem Google Cloud-Projekt zu erstellen:
Ersetzen Sie [YOUR_PROJECT_ID]
durch Ihre Google Cloud-Projekt-ID.
Weisen Sie die benutzerdefinierte Rolle einem Dienstkonto zu: Weisen Sie Ihre benutzerdefinierte Rolle einem Dienstkonto zu, das diese Berechtigung verwenden wird. Verwenden Sie den folgenden Befehl:
Ersetzen Sie [IHRE_PROJEKT_ID]
und [SERVICE_ACCOUNT_EMAIL]
durch Ihre Projekt-ID und die E-Mail des Dienstkontos, respectively.
Last updated