Contrôler la destruction d'une version de clé

Google Cloud propose deux contraintes de règles d'administration pour définir une règle de destruction de version de clé au sein d'une organisation:

  • constraints/cloudkms.minimumDestroyScheduledDuration permet de définir une durée minimale pour la durée de suppression programmée pour les nouvelles clés au sein de l'organisation.
  • constraints/cloudkms.disableBeforeDestroy permet d'exiger la désactivation d'une version de clé avant de pouvoir programmer sa destruction.

Avant de commencer

Dans les instructions de cette page, nous partons du principe que vous savez utiliser les contraintes, et que vous disposez des ressources et des rôles requis.

Ressources requises

Pour pouvoir suivre les étapes décrites sur cette page, vous devez disposer des ressources suivantes:

  • Une entreprise.
  • (Facultatif) Une ressource de dossier ou de projet au sein de votre organisation

Rôles requis

Pour obtenir les autorisations nécessaires pour gérer les règles d'administration, demandez à votre administrateur de vous attribuer le rôle IAM Administrateur des règles d'administration (roles/orgpolicy.policyAdmin) pour l'organisation. Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.

Ce rôle prédéfini contient les autorisations requises pour gérer les règles d'administration. Pour connaître les autorisations exactes requises, développez la section Autorisations requises :

Autorisations requises

Les autorisations suivantes sont requises pour gérer les règles d'administration:

  • orgpolicy.constraints.list
  • orgpolicy.policies.create
  • orgpolicy.policies.delete
  • orgpolicy.policies.list
  • orgpolicy.policies.update
  • orgpolicy.policy.get
  • orgpolicy.policy.set

Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.

Exiger une durée minimale programmée pour la destruction

La contrainte Durée minimale de destruction programmée par clé (constraints/cloudkms.minimumDestroyScheduledDuration) permet de définir une durée minimale pour la durée de destruction programmée pour les nouvelles clés. Cette contrainte remplace la durée minimale de destruction programmée au niveau du projet, du dossier ou de l'organisation. Cette contrainte réduit le risque de détruire accidentellement une clé encore nécessaire. Vous pouvez définir cette contrainte sur une valeur plus élevée pour vous assurer d'avoir le temps d'éviter la destruction d'une clé avant que celle-ci ne devienne irréversible.

Utilisez des valeurs plus élevées pour cette contrainte lorsque la destruction indésirable d'une clé serait plus dangereuse, par exemple pour les données de production soumises à des exigences de conservation des données. Utilisez des valeurs inférieures pour cette contrainte lorsque la destruction indésirable de la clé serait moins dangereuse, par exemple pour les environnements de développement ou de test. Vous pouvez également utiliser des valeurs inférieures pour permettre le déchiquetage de cryptomonnaie en temps opportun. Toutefois, en tant que valeur minimale, cette contrainte ne peut pas garantir que des clés sont créées avec une durée de destruction programmée faible.

Pour exiger une durée minimale pour la destruction programmée, procédez comme suit:

  1. Obtenez la règle actuelle pour la ressource Organisation en utilisant la commande describe. Cette commande renvoie la stratégie directement appliquée à cette ressource:

    gcloud org-policies describe \
      constraints/cloudkms.minimumDestroyScheduledDuration \
      --organization=ORGANIZATION_ID
    

    Remplacez ORGANIZATION_ID par l'identifiant unique de la ressource d'organisation. L'ID d'organisation est au format décimal et ne peut pas comporter de zéros au début.

    Vous pouvez également afficher la règle d'administration d'un dossier ou d'un projet avec les options --folder ou --project, ainsi que l'ID de dossier ou l'ID de projet, respectivement.

    La réponse renvoie la règle d'administration actuelle, le cas échéant. Le résultat ressemble à ce qui suit :

    name: organizations/ORGANIZATION_ID/policies/cloudkms.minimumDestroyScheduledDuration
    spec:
      etag: COTP+KYGELiCmsoB
      inheritFromParent: true
      rules:
      - values:
          allowedValues:
          - in:7d
      updateTime: '2023-08-17T14:00:04.424051Z'
    

    Si aucune règle n'est définie, la commande describe renvoie une erreur NOT_FOUND:

    ERROR: (gcloud.org-policies.describe) NOT_FOUND: Requested entity was not found.
    
  2. Définissez la règle sur l'organisation à l'aide de la commande set-policy. Cette commande écrase toutes les règles actuellement associées à la ressource.

    1. Créez un fichier temporaire /tmp/policy.yaml pour stocker la règle :

      name: organizations/ORGANIZATION_ID/policies/cloudkms.minimumDestroyScheduledDuration
      spec:
        rules:
        - values:
            allowedValues:
            - in:MINIMUM_DURATION
      

      Remplacez les éléments suivants :

      • ORGANIZATION_ID: ID numérique de votre organisation.
      • MINIMUM_DURATION: durée minimale de l'état Destruction programmée des clés de cette organisation, en jours. Doit correspondre à l'une des valeurs suivantes: 7d, 15d, 30d, 60d, 90d ou 120d.
    2. Exécutez la commande set-policy :

      gcloud org-policies set-policy /tmp/policy.yaml
      
  3. Affichez la règle actuellement en vigueur en utilisant describe --effective. Cette commande renvoie la règle d'administration telle qu'elle est évaluée à ce stade de la hiérarchie des ressources (héritage inclus).

    gcloud org-policies describe \
      constraints/cloudkms.minimumDestroyScheduledDuration --effective \
      --organization=ORGANIZATION_ID
    

    Le résultat ressemble à ce qui suit :

    name: organizations/ORGANIZATION_ID/policies/cloudkms.minimumDestroyScheduledDuration
    spec:
      rules:
        - values:
            allowedValues:
            - 30d
            - 15d
            - 90d
            - 60d
            - 7d
            - 120d
    

    Étant donné que cette règle d'administration a été définie au niveau de l'organisation, toutes les ressources enfants autorisant l'héritage en héritent.

Exiger la désactivation des clés avant destruction

La contrainte Restreindre la destruction des clés aux clés désactivées (constraints/cloudkms.disableBeforeDestroy) vous permet d'exiger la désactivation d'une clé avant de pouvoir programmer sa destruction. Il est recommandé de désactiver une clé avant de la détruire, car cela vous aide à vérifier que la clé n'est pas utilisée. Vous pouvez combiner cette contrainte avec une stratégie Identity and Access Management (IAM) afin de créer un processus de destruction en plusieurs étapes qui nécessite la coopération de plusieurs rôles.

Pour utiliser cette contrainte afin de créer un processus de destruction en plusieurs étapes, assurez-vous qu'aucun utilisateur ne dispose à la fois des autorisations cloudkms.cryptoKeyVersions.update et cloudkms.cryptoKeyVersions.destroy. Ce cas d'utilisation nécessite l'utilisation de rôles personnalisés.

Pour exiger qu'une clé soit à l'état désactivée avant de pouvoir programmer sa destruction, procédez comme suit:

gcloud

  1. Obtenez la règle actuelle pour la ressource Organisation en utilisant la commande describe. Cette commande renvoie la stratégie directement appliquée à cette ressource:

    gcloud org-policies describe \
      constraints/cloudkms.disableBeforeDestroy \
      --organization=ORGANIZATION_ID
    

    Remplacez ORGANIZATION_ID par l'identifiant unique de la ressource d'organisation. L'ID d'organisation est au format décimal et ne peut pas comporter de zéros au début.

    Vous pouvez également afficher la règle d'administration d'un dossier ou d'un projet avec les options --folder ou --project, ainsi que l'ID de dossier ou l'ID de projet, respectivement.

    La réponse renvoie la règle d'administration actuelle, le cas échéant. Le résultat ressemble à ce qui suit :

    name: organizations/ORGANIZATION_ID/policies/cloudkms.disableBeforeDestroy
    spec:
      etag: CPvY+KYGENDwgxA=
      rules:
      - enforce: true
      updateTime: '2023-08-17T14:19:39.033618Z'
    

    Si aucune règle n'est définie, la commande describe renvoie une erreur NOT_FOUND:

    ERROR: (gcloud.org-policies.describe) NOT_FOUND: Requested entity was not found.
    
  2. Définissez la règle sur l'organisation à l'aide de la commande set-policy. Cette commande écrase toute règle déjà associée à la ressource.

    1. Créez un fichier temporaire /tmp/policy.yaml pour stocker la règle :

      name: organizations/ORGANIZATION_ID/policies/cloudkms.disableBeforeDestroy
      spec:
        rules:
        - enforce: true
      

      Remplacez ORGANIZATION_ID par l'identifiant unique de la ressource d'organisation.

    2. Exécutez la commande set-policy :

      gcloud org-policies set-policy /tmp/policy.yaml
      
  3. Affichez la règle actuellement en vigueur en utilisant describe --effective. Cette commande renvoie la règle d'administration telle qu'elle est évaluée à ce stade de la hiérarchie des ressources (héritage inclus).

    gcloud org-policies describe \
      constraints/cloudkms.disableBeforeDestroy --effective \
      --organization=ORGANIZATION_ID
    

    Le résultat ressemble à ce qui suit :

    name: organizations/ORGANIZATION_ID/policies/cloudkms.minimumDestroyScheduledDuration
    spec:
      rules:
      - enforce: true
    

    Étant donné que cette règle d'administration a été définie au niveau de l'organisation, toutes les ressources enfants autorisant l'héritage en héritent.

Étapes suivantes