Autorisations et rôles

Dans Cloud KMS, les ressources sont organisées hiérarchiquement. Cette hiérarchie vous aide à gérer et accorder l'accès aux ressources selon différents niveaux de précision. Les clés sont contenues dans des trousseaux de clés, et les trousseaux de clés existent au sein d'un projet. Les projets peuvent être organisés à leur tour en dossiers ou en organisations.

Cette rubrique fournit des détails supplémentaires sur la hiérarchie des ressources dans Cloud KMS. Pour en savoir plus sur les ressources Google Cloud en général, consultez la section Hiérarchie des ressources.

Hiérarchie des ressources

Le champ d'application d'un rôle IAM varie en fonction du niveau de la hiérarchie des ressources auquel le rôle a accès. Ce tableau présente les capacités effectives accordées par le rôle Chiffreur de clés cryptographiques Cloud KMS (roles/cloudkms.cryptoKeyEncrypter) à différents niveaux de la hiérarchie.

Vous pouvez gérer l'accès aux clés ou aux trousseaux de clés, mais pas aux versions de clé individuelles.

Hiérarchie des ressources Capacité
Organisation Chiffrer à l'aide de toutes les clés de tous les projets de l'organisation
Dossier Chiffrer à l'aide de toutes les clés de tous les projets du dossier
Projet Chiffrer à l'aide de toutes les clés du projet
Trousseau de clés Chiffrer à l'aide de toutes les clés du trousseau de clés
Clé Chiffrer uniquement à l'aide de cette clé

Principes de sécurité

Cloud IAM permet d'appliquer les principes de sécurité interdépendants de la séparation des tâches et du moindre privilège :

  • Lorsque vous appliquez le principe de séparation des tâches, aucun membre ne dispose de tous les accès nécessaires pour remplir une fonction métier critique. Par exemple, un employé de banque ne peut retirer des fonds d'un compte que si le titulaire du compte est physiquement présent et lance la transaction.

  • Lorsque vous appliquez le principe du moindre privilège, un membre ne dispose que du niveau d'accès minimal requis pour remplir ses fonctions spécifiques. Par exemple, un employé de banque n'a pas automatiquement la capacité d'approuver un prêt client.

Rôles prédéfinis

IAM fournit des rôles prédéfinis qui permettent d'accorder l'accès pour chaque type de ressources Google Cloud. Si aucun rôle prédéfini ne répond à vos besoins, vous pouvez créer un rôle personnalisé.

IAM propose les rôles prédéfinis suivants pour Cloud KMS :

Rôle Autorisations

Administrateur Cloud KMS
(roles/cloudkms.admin)

Fournit un accès complet aux ressources Cloud KMS, à l'exception des opérations de chiffrement et de déchiffrement.

Ressources de niveau inférieur auxquelles vous pouvez attribuer ce rôle :

  • CryptoKey
  • 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.importJobs.*
  • cloudkms.keyRings.*
  • cloudkms.locations.get
  • cloudkms.locations.list
  • resourcemanager.projects.get

Déchiffreur de CryptoKeys Cloud KMS
(roles/cloudkms.cryptoKeyDecrypter)

Permet d'utiliser les ressources Cloud KMS pour les opérations de déchiffrement seulement.

Ressources de niveau inférieur auxquelles vous pouvez attribuer ce rôle :

  • CryptoKey
  • cloudkms.cryptoKeyVersions.useToDecrypt
  • cloudkms.locations.get
  • cloudkms.locations.list
  • resourcemanager.projects.get

Déchiffreur de CryptoKeys Cloud KMS via délégation
(roles/cloudkms.cryptoKeyDecrypterViaDelegation)

Autorise les opérations de déchiffrement via d'autres services GCP

  • cloudkms.cryptoKeyVersions.useToDecryptViaDelegation
  • cloudkms.locations.get
  • cloudkms.locations.list
  • resourcemanager.projects.get
  • resourcemanager.projects.list

Chiffreur de CryptoKeys Cloud KMS
(roles/cloudkms.cryptoKeyEncrypter)

Permet d'utiliser les ressources Cloud KMS pour les opérations de chiffrement seulement.

Ressources de niveau inférieur auxquelles vous pouvez attribuer ce rôle :

  • CryptoKey
  • cloudkms.cryptoKeyVersions.useToEncrypt
  • cloudkms.locations.get
  • cloudkms.locations.list
  • resourcemanager.projects.get

Chiffreur/Déchiffreur de CryptoKeys Cloud KMS
(roles/cloudkms.cryptoKeyEncrypterDecrypter)

Permet d'utiliser les ressources Cloud KMS pour les opérations de chiffrement et de déchiffrement seulement.

Ressources de niveau inférieur auxquelles vous pouvez attribuer ce rôle :

  • CryptoKey
  • cloudkms.cryptoKeyVersions.useToDecrypt
  • cloudkms.cryptoKeyVersions.useToEncrypt
  • cloudkms.locations.get
  • cloudkms.locations.list
  • resourcemanager.projects.get

Chiffreur/Déchiffreur de CryptoKeys Cloud KMS via la délégation
(roles/cloudkms.cryptoKeyEncrypterDecrypterViaDelegation)

Autorise les opérations de chiffrement et de déchiffrement via d'autres services GCP

  • cloudkms.cryptoKeyVersions.useToDecryptViaDelegation
  • cloudkms.cryptoKeyVersions.useToEncryptViaDelegation
  • cloudkms.locations.get
  • cloudkms.locations.list
  • resourcemanager.projects.get
  • resourcemanager.projects.list

Chiffreur de CryptoKeys Cloud KMS via délégation
(roles/cloudkms.cryptoKeyEncrypterViaDelegation)

Autorise les opérations de chiffrement via d'autres services GCP

  • cloudkms.cryptoKeyVersions.useToEncryptViaDelegation
  • cloudkms.locations.get
  • cloudkms.locations.list
  • resourcemanager.projects.get
  • resourcemanager.projects.list

Opérateur du chiffrement Cloud KMS
(roles/cloudkms.cryptoOperator)

Permet d'effectuer toutes les opérations de chiffrement.

  • cloudkms.cryptoKeyVersions.useToDecrypt
  • cloudkms.cryptoKeyVersions.useToEncrypt
  • cloudkms.cryptoKeyVersions.useToSign
  • cloudkms.cryptoKeyVersions.useToVerify
  • cloudkms.cryptoKeyVersions.viewPublicKey
  • cloudkms.locations.*
  • resourcemanager.projects.get

Gestionnaire de clés PKCS#1 brute de l'expert Cloud KMS
(roles/cloudkms.expertRawPKCS1)

Autorise la gestion des clés PKCS#1 brutes.

  • cloudkms.cryptoKeyVersions.manageRawPKCS1Keys
  • cloudkms.locations.get
  • cloudkms.locations.list
  • resourcemanager.projects.get
  • resourcemanager.projects.list

Importateur Cloud KMS
(roles/cloudkms.importer)

Permet d'effectuer les opérations "ImportCryptoKeyVersion", "CreateImportJob", "ListImportJobs" et "GetImportJob"

  • cloudkms.importJobs.create
  • cloudkms.importJobs.get
  • cloudkms.importJobs.list
  • cloudkms.importJobs.useToImport
  • cloudkms.locations.get
  • cloudkms.locations.list
  • resourcemanager.projects.get

Lecteur de clés publiques de CryptoKeys Cloud KMS
(roles/cloudkms.publicKeyViewer)

Active les opérations GetPublicKey

  • cloudkms.cryptoKeyVersions.viewPublicKey
  • cloudkms.locations.get
  • cloudkms.locations.list
  • resourcemanager.projects.get

Signature de CryptoKey Cloud KMS autorisée
(roles/cloudkms.signer)

Permet d'effectuer des opérations Sign

  • cloudkms.cryptoKeyVersions.useToSign
  • cloudkms.locations.get
  • cloudkms.locations.list
  • resourcemanager.projects.get

Signature/validation de CryptoKey Cloud KMS autorisées
(roles/cloudkms.signerVerifier)

Permet d'effectuer des opérations Sign, Verify et GetPublicKey

  • cloudkms.cryptoKeyVersions.useToSign
  • cloudkms.cryptoKeyVersions.useToVerify
  • cloudkms.cryptoKeyVersions.viewPublicKey
  • cloudkms.locations.get
  • cloudkms.locations.list
  • resourcemanager.projects.get

Validateur de CryptoKey Cloud KMS
(roles/cloudkms.verifier)

Permet d'effectuer des opérations Verify et GetPublicKey

  • cloudkms.cryptoKeyVersions.useToVerify
  • cloudkms.cryptoKeyVersions.viewPublicKey
  • cloudkms.locations.get
  • cloudkms.locations.list
  • resourcemanager.projects.get

Lecteur Cloud KMS
(roles/cloudkms.viewer)

Permet d'effectuer des opérations "Get" et "List".

  • cloudkms.cryptoKeyVersions.get
  • cloudkms.cryptoKeyVersions.list
  • cloudkms.cryptoKeys.get
  • cloudkms.cryptoKeys.list
  • cloudkms.importJobs.get
  • cloudkms.importJobs.list
  • cloudkms.keyRings.get
  • cloudkms.keyRings.list
  • cloudkms.locations.get
  • cloudkms.locations.list
  • resourcemanager.projects.get

Rôles personnalisés

En plus des rôles prédéfinis, vous pouvez créer des rôles personnalisés. Les rôles personnalisés vous permettent d'appliquer le principe du moindre privilège en accordant au rôle les autorisations minimales requises pour effectuer une tâche donnée.

Un rôle personnalisé inclut une ou plusieurs des autorisations listées dans la documentation de référence IAM. Les autorisations associées à l'API Cloud Key Management Service commencent par la chaîne cloudkms. Pour en savoir plus, consultez la section Niveaux de compatibilité des autorisations dans les rôles personnalisés.

Pour en savoir plus sur les autorisations requises pour appeler une méthode API Cloud Key Management Service spécifique, consultez la documentation de référence de l'API de cette méthode.

Consignes générales pour la gestion des accès dans Cloud KMS

Nous vous recommandons d'éviter d'utiliser des rôles de base à l'échelle du projet, tels que owner, editor et viewer. Ces rôles ne séparent pas la capacité de gestion des clés de la capacité à utiliser les clés pour les opérations de chiffrement, et ne sont pas recommandés pour les environnements de production. Utilisez plutôt des rôles prédéfinis ou créez des rôles personnalisés qui reflètent les besoins de votre entreprise.

Les exemples suivants illustrent quelques bonnes consignes de sécurité :

  • Pour une organisation de grande taille ou complexe, vous pouvez adopter une approche semblable à celle-ci :

    • Attribuez aux membres de votre équipe de sécurité informatique le rôle d'administrateur Cloud KMS (roles/cloudkms.admin) sur tous les projets. Si différents membres de l'équipe gèrent différents aspects du cycle de vie d'une clé, vous pouvez leur attribuer un rôle plus précis, tel que le rôle "Importateur Cloud KMS" (roles/cloudkms.importer).
    • Attribuez le rôle "Chiffreur/Déchiffreur Cloud KMS" (roles/cloudkms.cryptoKeyEncrypterDecrypter) aux utilisateurs ou aux applications qui lisent ou écrivent des données chiffrées.
    • Attribuez le rôle "Lecteur de clés publiques Cloud KMS" (roles/cloudkms.publicKeyViewer) aux utilisateurs ou aux applications qui ont besoin d'afficher la partie publique d'une clé utilisée pour le chiffrement asymétrique.
    • Créez des rôles prédéfinis correspondant aux besoins de votre entreprise. Par exemple, le même utilisateur peut avoir besoin de surveiller les quotas d'un projet et d'afficher les données de journal.
  • Pour une petite organisation ayant des exigences de sécurité simples, vous pouvez choisir d'adopter une approche plus simple en attribuant un rôle étendu tel que Administrateur de l'organisation (roles/resourcemanager.organizationAdmin). Toutefois, cette approche pourrait ne pas suivre l'évolution de vos besoins.

  • Envisagez d'héberger vos clés dans un projet Google Cloud distinct des données protégées par ces clés. Un utilisateur disposant d'un rôle de base ou hautement privilégié dans un projet, tel que editor, ne peut pas utiliser ce rôle pour obtenir un accès non autorisé aux clés d'un autre projet.

  • Évitez d'attribuer le rôle owner à un membre. Sans le rôle owner, aucun membre du projet ne peut créer une clé et l'utiliser pour déchiffrer des données ou pour les signer, sauf si chacune de ces autorisations est accordée à ce membre. Pour accorder un accès administrateur étendu sans autoriser le chiffrement ou le déchiffrement, attribuez plutôt le rôle d'administrateur Cloud KMS (roles/cloudkms.admin).

  • Pour limiter l'accès aux données chiffrées, telles que les données client, vous pouvez limiter l'accès des membres qui peuvent accéder à la clé et de ceux qui peuvent utiliser la clé pour le déchiffrement. Si nécessaire, vous pouvez créer des rôles personnalisés précis pour répondre aux besoins de votre entreprise.

Vérifier les autorisations

Pour chaque type d'objet Cloud KMS pour lequel vous pouvez définir des autorisations IAM précises, cet objet dispose d'une méthode testIamPermissions. La méthode testIamPermissions renvoie l'ensemble des autorisations accordées à l'appelant pour cet objet.

Vous ne pouvez pas définir d'autorisations IAM sur une version de clé. Le type d'objet CryptoKeyVersion ne dispose donc pas de cette méthode.

La méthode testIamPermissions d'un objet renvoie une réponse TestIamPermissionsResponse.

Pour obtenir des exemples d'appels de méthodes testIamPermissions, consultez la documentation sur les autorisations de test dans la documentation IAM.

Étape suivante

  • Découvrez comment IAM centralise la gestion des autorisations et des niveaux d'accès pour les ressources Google Cloud.
  • Découvrez les différents types d'objets Cloud KMS.