Berechtigungen und Rollen

In Cloud KMS sind Ressourcen in einer Hierarchie organisiert. Diese Hierarchie unterstützt Sie bei der Verwaltung und dem Zugriff auf Ressourcen mit verschiedenen Granularitätsstufen. Schlüssel sind in Schlüsselbunden und Schlüsselbunde innerhalb eines Projekts enthalten. EKM-Verbindungen können auch innerhalb eines Projekts vorhanden sein. Projekte können weiter in Ordnern oder Organisationen organisiert sein.

In diesem Thema werden weitere Details zur Ressourcenhierarchie in Cloud KMS beschrieben. Weitere Informationen zu Google Cloud-Ressourcen im Allgemeinen finden Sie unter Ressourcenhierarchie.

Ressourcenhierarchie

Der Bereich einer IAM-Rolle ändert sich je nach Ebene der Ressourcenhierarchie, in der die Rolle gewährt wird. Diese Tabelle zeigt die effektiven Funktionen, die von der Cloud KMS CryptoKey-Verschlüsselerrolle (roles/cloudkms.cryptoKeyEncrypter) auf verschiedenen Hierarchieebenen gewährt werden.

Sie können den Zugriff auf Schlüssel oder Schlüsselbunde verwalten, aber nicht auf einzelne Schlüsselversionen.

Ressourcenhierarchie Rechte
Organisation Mit allen Schlüsseln in allen Projekten der Organisation verschlüsseln
Ordner Mit allen Schlüsseln in allen Projekten im Ordner verschlüsseln
Projekt Mit allen Schlüsseln im Projekt verschlüsseln
Schlüsselbund Mit allen Schlüsseln auf dem Schlüsselbund verschlüsseln
Schlüssel Nur mit diesem Schlüssel verschlüsseln

Sicherheitsgrundsätze

IAM unterstützt die Durchsetzung der Sicherheitsgrundsätze der Aufgabentrennung und der geringsten Berechtigung:

  • Wenn Sie das Prinzip der Aufgabentrennung erzwingen, hat kein einzelnes Mitglied den gesamten Zugriff, der zum Ausführen einer kritischen Geschäftsfunktion erforderlich ist. Zum Beispiel kann ein Bankangestellter nur dann Beträge von einem Konto einziehen, wenn der Kontoinhaber physisch vorhanden ist und die Transaktion initiiert.

  • Wenn Sie das Prinzip der geringsten Berechtigung erzwingen, hat ein Mitglied nur die Mindestzugriffsebene, die erforderlich ist, um die spezifischen Geschäftsfunktionen dieses Mitglieds abzuschließen. So erhält ein Bankangestellter beispielsweise nicht automatisch die Möglichkeit, eine Kundenfinanzierung zu genehmigen.

Vordefinierte Rollen

IAM bietet vordefinierte Rollen für den Zugriff auf jede Art von Google Cloud-Ressourcen. Wenn keine vordefinierte Rolle Ihren Anforderungen entspricht, können Sie eine benutzerdefinierte Rolle erstellen.

IAM bietet für Cloud KMS die folgenden vordefinierten Rollen:

Role Permissions

(roles/cloudkms.admin)

Provides access to Cloud KMS resources, except for access to restricted resource types and cryptographic operations.

Lowest-level resources where you can grant this role:

  • CryptoKey

cloudkms.autokeyConfigs.*

  • cloudkms.autokeyConfigs.get
  • cloudkms.autokeyConfigs.update

cloudkms.cryptoKeyVersions.create

cloudkms.cryptoKeyVersions.destroy

cloudkms.cryptoKeyVersions.get

cloudkms.cryptoKeyVersions.list

cloudkms.cryptoKeyVersions.restore

cloudkms.cryptoKeyVersions.update

cloudkms.cryptoKeyVersions.useToDecryptViaDelegation

cloudkms.cryptoKeyVersions.useToEncryptViaDelegation

cloudkms.cryptoKeys.*

  • cloudkms.cryptoKeys.create
  • cloudkms.cryptoKeys.get
  • cloudkms.cryptoKeys.getIamPolicy
  • cloudkms.cryptoKeys.list
  • cloudkms.cryptoKeys.setIamPolicy
  • cloudkms.cryptoKeys.update

cloudkms.ekmConfigs.*

  • cloudkms.ekmConfigs.get
  • cloudkms.ekmConfigs.getIamPolicy
  • cloudkms.ekmConfigs.setIamPolicy
  • cloudkms.ekmConfigs.update

cloudkms.ekmConnections.*

  • cloudkms.ekmConnections.create
  • cloudkms.ekmConnections.get
  • cloudkms.ekmConnections.getIamPolicy
  • cloudkms.ekmConnections.list
  • cloudkms.ekmConnections.setIamPolicy
  • cloudkms.ekmConnections.update
  • cloudkms.ekmConnections.use
  • cloudkms.ekmConnections.verifyConnectivity

cloudkms.importJobs.*

  • cloudkms.importJobs.create
  • cloudkms.importJobs.get
  • cloudkms.importJobs.getIamPolicy
  • cloudkms.importJobs.list
  • cloudkms.importJobs.setIamPolicy
  • cloudkms.importJobs.useToImport

cloudkms.keyHandles.*

  • cloudkms.keyHandles.create
  • cloudkms.keyHandles.get
  • cloudkms.keyHandles.list

cloudkms.keyRings.*

  • cloudkms.keyRings.create
  • cloudkms.keyRings.createTagBinding
  • cloudkms.keyRings.deleteTagBinding
  • cloudkms.keyRings.get
  • cloudkms.keyRings.getIamPolicy
  • cloudkms.keyRings.list
  • cloudkms.keyRings.listEffectiveTags
  • cloudkms.keyRings.listTagBindings
  • cloudkms.keyRings.setIamPolicy

cloudkms.locations.get

cloudkms.locations.list

cloudkms.locations.optOutKeyDeletionMsa

cloudkms.operations.get

cloudkms.projects.showEffectiveAutokeyConfig

resourcemanager.projects.get

(roles/cloudkms.autokeyAdmin)

Enables management of AutokeyConfig.

cloudkms.autokeyConfigs.*

  • cloudkms.autokeyConfigs.get
  • cloudkms.autokeyConfigs.update

cloudkms.projects.showEffectiveAutokeyConfig

(roles/cloudkms.autokeyUser)

Grants ability to use KeyHandle resources.

cloudkms.keyHandles.*

  • cloudkms.keyHandles.create
  • cloudkms.keyHandles.get
  • cloudkms.keyHandles.list

cloudkms.operations.get

cloudkms.projects.showEffectiveAutokeyConfig

(roles/cloudkms.cryptoKeyDecrypter)

Provides ability to use Cloud KMS resources for decrypt operations only.

Lowest-level resources where you can grant this role:

  • CryptoKey

cloudkms.cryptoKeyVersions.useToDecrypt

cloudkms.locations.get

cloudkms.locations.list

resourcemanager.projects.get

(roles/cloudkms.cryptoKeyDecrypterViaDelegation)

Enables Decrypt operations via other Google Cloud services

cloudkms.cryptoKeyVersions.useToDecryptViaDelegation

cloudkms.locations.get

cloudkms.locations.list

resourcemanager.projects.get

resourcemanager.projects.list

(roles/cloudkms.cryptoKeyEncrypter)

Provides ability to use Cloud KMS resources for encrypt operations only.

Lowest-level resources where you can grant this role:

  • CryptoKey

cloudkms.cryptoKeyVersions.useToEncrypt

cloudkms.locations.get

cloudkms.locations.list

resourcemanager.projects.get

(roles/cloudkms.cryptoKeyEncrypterDecrypter)

Provides ability to use Cloud KMS resources for encrypt and decrypt operations only.

Lowest-level resources where you can grant this role:

  • CryptoKey

cloudkms.cryptoKeyVersions.useToDecrypt

cloudkms.cryptoKeyVersions.useToEncrypt

cloudkms.locations.get

cloudkms.locations.list

resourcemanager.projects.get

(roles/cloudkms.cryptoKeyEncrypterDecrypterViaDelegation)

Enables Encrypt and Decrypt operations via other Google Cloud services

cloudkms.cryptoKeyVersions.useToDecryptViaDelegation

cloudkms.cryptoKeyVersions.useToEncryptViaDelegation

cloudkms.locations.get

cloudkms.locations.list

resourcemanager.projects.get

resourcemanager.projects.list

(roles/cloudkms.cryptoKeyEncrypterViaDelegation)

Enables Encrypt operations via other Google Cloud services

cloudkms.cryptoKeyVersions.useToEncryptViaDelegation

cloudkms.locations.get

cloudkms.locations.list

resourcemanager.projects.get

resourcemanager.projects.list

(roles/cloudkms.cryptoOperator)

Enables all Crypto Operations.

cloudkms.cryptoKeyVersions.useToDecrypt

cloudkms.cryptoKeyVersions.useToEncrypt

cloudkms.cryptoKeyVersions.useToSign

cloudkms.cryptoKeyVersions.useToVerify

cloudkms.cryptoKeyVersions.viewPublicKey

cloudkms.locations.generateRandomBytes

cloudkms.locations.get

cloudkms.locations.list

resourcemanager.projects.get

(roles/cloudkms.ekmConnectionsAdmin)

Enables management of EkmConnections.

cloudkms.ekmConfigs.get

cloudkms.ekmConfigs.update

cloudkms.ekmConnections.create

cloudkms.ekmConnections.get

cloudkms.ekmConnections.list

cloudkms.ekmConnections.update

cloudkms.ekmConnections.verifyConnectivity

resourcemanager.projects.get

resourcemanager.projects.list

(roles/cloudkms.expertRawAesCbc)

Enables raw AES-CBC keys management.

cloudkms.cryptoKeyVersions.manageRawAesCbcKeys

cloudkms.locations.get

cloudkms.locations.list

resourcemanager.projects.get

resourcemanager.projects.list

(roles/cloudkms.expertRawAesCtr)

Enables raw AES-CTR keys management.

cloudkms.cryptoKeyVersions.manageRawAesCtrKeys

cloudkms.locations.get

cloudkms.locations.list

resourcemanager.projects.get

resourcemanager.projects.list

(roles/cloudkms.expertRawPKCS1)

Enables raw PKCS#1 keys management.

cloudkms.cryptoKeyVersions.manageRawPKCS1Keys

cloudkms.locations.get

cloudkms.locations.list

resourcemanager.projects.get

resourcemanager.projects.list

(roles/cloudkms.importer)

Enables ImportCryptoKeyVersion, CreateImportJob, ListImportJobs, and GetImportJob operations

cloudkms.importJobs.create

cloudkms.importJobs.get

cloudkms.importJobs.list

cloudkms.importJobs.useToImport

cloudkms.locations.get

cloudkms.locations.list

resourcemanager.projects.get

(roles/cloudkms.protectedResourcesViewer)

Enables viewing protected resources.

cloudkms.protectedResources.search

(roles/cloudkms.publicKeyViewer)

Enables GetPublicKey operations

cloudkms.cryptoKeyVersions.viewPublicKey

cloudkms.locations.get

cloudkms.locations.list

resourcemanager.projects.get

(roles/cloudkms.signer)

Enables Sign operations

cloudkms.cryptoKeyVersions.useToSign

cloudkms.locations.get

cloudkms.locations.list

resourcemanager.projects.get

(roles/cloudkms.signerVerifier)

Enables Sign, Verify, and GetPublicKey operations

cloudkms.cryptoKeyVersions.useToSign

cloudkms.cryptoKeyVersions.useToVerify

cloudkms.cryptoKeyVersions.viewPublicKey

cloudkms.locations.get

cloudkms.locations.list

resourcemanager.projects.get

(roles/cloudkms.verifier)

Enables Verify and GetPublicKey operations

cloudkms.cryptoKeyVersions.useToVerify

cloudkms.cryptoKeyVersions.viewPublicKey

cloudkms.locations.get

cloudkms.locations.list

resourcemanager.projects.get

(roles/cloudkms.viewer)

Enables Get and List operations.

cloudkms.autokeyConfigs.get

cloudkms.cryptoKeyVersions.get

cloudkms.cryptoKeyVersions.list

cloudkms.cryptoKeys.get

cloudkms.cryptoKeys.list

cloudkms.ekmConfigs.get

cloudkms.ekmConnections.get

cloudkms.ekmConnections.list

cloudkms.importJobs.get

cloudkms.importJobs.list

cloudkms.keyHandles.get

cloudkms.keyHandles.list

cloudkms.keyRings.get

cloudkms.keyRings.list

cloudkms.locations.get

cloudkms.locations.list

cloudkms.operations.get

resourcemanager.projects.get

Benutzerdefinierte Rollen

Neben vordefinierten Rollen können Sie benutzerdefinierte Rollen erstellen. Mit benutzerdefinierten Rollen können Sie das Prinzip der geringsten Berechtigung erzwingen und dafür die Mindestberechtigungen erteilen, die zum Ausführen einer bestimmten Aufgabe erforderlich sind.

Eine benutzerdefinierte Rolle enthält eine oder mehrere Berechtigungen, die in der IAM-Referenz aufgeführt sind. Berechtigungen für die Cloud Key Management Service API beginnen mit dem String cloudkms. Weitere Informationen finden Sie unter Supportstufen für Berechtigungen in benutzerdefinierten Rollen.

Informationen zu den Berechtigungen, die zum Aufrufen einer bestimmten Cloud Key Management Service API-Methode erforderlich sind, finden Sie in der API-Referenz dieser Methode.

Allgemeine Richtlinien für die Zugriffsverwaltung in Cloud KMS

Wir empfehlen, einfache projektweite Rollen wie owner, editor und viewer zu vermeiden. Diese Rollen trennen die Möglichkeit zur Verwaltung von Schlüsseln nicht von der Möglichkeit, die Schlüssel für kryptografische Vorgänge zu verwenden. Sie werden für Produktionsumgebungen nicht empfohlen. Verwenden Sie stattdessen vordefinierte Rollen oder erstellen Sie benutzerdefinierte Rollen, die Ihren Geschäftsanforderungen entsprechen.

Die folgenden Beispiele veranschaulichen einige gute Sicherheitsrichtlinien:

  • Bei einer großen oder komplexen Organisation können Sie sich für einen Ansatz wie den folgenden entscheiden:

    • Erteilen Sie Mitgliedern Ihres IT-Sicherheitsteams die Rolle "Cloud KMS-Administrator" (roles/cloudkms.admin) für alle Projekte. Wenn verschiedene Teammitglieder verschiedene Aspekte des Lebenszyklus eines Schlüssels übernehmen, können Sie diesen Teammitgliedern eine detailliertere Rolle zuweisen, z. B. die Rolle Cloud KMS-Importer“ (roles/cloudkms.importer).
    • Gewähren Sie Nutzern oder Anwendungen, die verschlüsselte Daten lesen oder schreiben, die Rolle "Cloud KMS-Verschlüsseler/Entschlüsseler" (roles/cloudkms.cryptoKeyEncrypterDecrypter).
    • Gewähren Sie Nutzern oder Anwendungen, die den öffentlichen Teil eines Schlüssels für die asymmetrische Verschlüsselung benötigen, die Rolle "Cloud KMS Public Key Viewer" (roles/cloudkms.publicKeyViewer).
    • Vordefinierte Rollen erstellen, die den geschäftlichen Anforderungen entsprechen Beispielsweise muss ein Nutzer möglicherweise die Kontingente eines Projekts überwachen und Logdaten aufrufen.
  • Für eine kleine Organisation mit einfachen Sicherheitsanforderungen können Sie einen einfacheren Ansatz verfolgen, indem Sie eine breite Rolle wie Administrator der Organisation (roles/resourcemanager.organizationAdmin) zuweisen. Dieser Ansatz wird möglicherweise nicht mit Ihren laufenden Anforderungen skaliert.

  • Hosten Sie Ihre Schlüssel möglicherweise in einem separaten Google Cloud-Projekt von den Daten, die durch diese Schlüssel geschützt sind. Ein Nutzer mit einer einfachen oder umfangreichen Rolle in einem Projekt, z. B. editor, kann diese Rolle nicht verwenden, um Zugriff auf Schlüssel in einem anderen Projekt zu gewähren.

  • Weisen Sie keinem Mitglied die Rolle owner zu. Ohne die Rolle owner kann kein Mitglied im Projekt sowohl einen Schlüssel erstellen als auch zum Entschlüsseln von Daten oder Signieren verwenden, es sei denn, diesem Mitglied wird jede dieser Berechtigungen erteilt. Wenn Sie einen umfassenden Administratorzugriff gewähren möchten, ohne die Möglichkeit zum Verschlüsseln oder Entschlüsseln zu gewähren, weisen Sie stattdessen die Rolle Cloud KMS-Administrator“ (roles/cloudkms.admin) zu.

  • Um den Zugriff auf verschlüsselte Daten wie Kundendaten zu beschränken, können Sie einschränken, wer auf den Schlüssel zugreifen kann und wer den Schlüssel zur Entschlüsselung verwenden kann. Bei Bedarf können Sie detaillierte benutzerdefinierte Rollen erstellen, die Ihren Geschäftsanforderungen entsprechen.

Berechtigungen prüfen

Für jeden Cloud KMS-Objekttyp, für den Sie detaillierte IAM-Berechtigungen festlegen können, hat dieses Objekt die Methode testIamPermissions. Die Methode testIamPermissions gibt die Berechtigungen zurück, die dem Aufrufer für dieses Objekt erteilt wurden.

Sie können keine IAM-Berechtigungen für eine Schlüsselversion festlegen, sodass der Objekttyp CryptoKeyVersion diese Methode nicht hat.

Die Methode testIamPermissions eines Objekts gibt einen TestIamPermissionsResponse zurück.

Beispiele für den Aufruf von testIamPermissions-Methoden finden Sie in der Dokumentation zum Testen von Berechtigungen in der IAM-Dokumentation.

Nächste Schritte

  • Erfahren Sie, wie IAM die Verwaltung von Berechtigungen und Zugriffsbereichen für Google Cloud-Ressourcen zentralisiert.
  • Informationen zu den verschiedenen Arten von Cloud KMS-Objekten