Retarder la destruction des versions de secret

Cette page explique comment configurer la destruction différée des versions de secret, mettre à jour ou supprimer le délai de destruction, et restaurer les versions de secret dont la destruction est programmée.

Lorsque vous détruisez une version de secret, le matériel du secret est détruit immédiatement et de manière permanente. En tant qu'administrateur Secret Manager, vous pouvez configurer la destruction différée des versions de secret de sorte qu'elles ne soient pas détruites immédiatement à la demande et qu'elles restent récupérables pendant une durée configurable.

Lorsque la destruction différée est activée sur le secret et que vous détruisez une version de secret, voici ce qui se produit:

  • La version est désactivée, ce qui empêche son utilisation.
  • Le système programme la destruction définitive de la version à l'issue du délai.
  • À l'expiration du délai, la version du secret est détruite de manière permanente et irrévocable.

Avantages

Cette fonctionnalité offre les avantages suivants:

  • Couche de protection supplémentaire contre la destruction accidentelle ou malveillante du matériel secret critique. Tout utilisateur disposant du rôle Gestionnaire de versions des secrets de Secret Manager peut détruire une version de secret. Cette action est irréversible. En configurant la destruction différée, vous pouvez empêcher la destruction immédiate des versions d'un secret. Vous pouvez accorder aux utilisateurs l'accès minimal requis pour gérer le cycle de vie des versions de secrets, car vous pouvez surveiller et empêcher toute destruction accidentelle des données sensibles.

  • La destruction d'une version de secret déclenche l'envoi d'une SECRET_VERSION_DESTROY_SCHEDULED aux sujets Pub/Sub configurés sur le secret. En tant qu'administrateur Secret Manager, vous pouvez annuler la destruction programmée et restaurer la version du secret en activant ou en désactivant la version du secret.

Avant de commencer

  • Activez Secret Manager API.

    Activer l'API

  • Configurez l'authentification.

    Sélectionnez l'onglet correspondant à la façon dont vous prévoyez d'utiliser les exemples de cette page :

    Console

    Lorsque vous utilisez la console Google Cloud pour accéder aux services et aux API Google Cloud, vous n'avez pas besoin de configurer l'authentification.

    gcloud

    Vous pouvez utiliser les exemples gcloud CLI de cette page dans l'un des environnements de développement suivants :

    • Cloud Shell : pour utiliser un terminal en ligne avec gcloud CLI déjà configuré, activez Cloud Shell.

      En bas de cette page, une session Cloud Shell démarre et affiche une invite de ligne de commande. L'initialisation de la session peut prendre quelques secondes.

    • Shell local : pour utiliser gcloud CLI dans un environnement de développement local, installez et initialisez gcloud CLI.

    REST

    Pour utiliser les exemples d'API REST de cette page dans un environnement de développement local, vous devez utiliser les identifiants que vous fournissez à gcloud CLI.

      Installez Google Cloud CLI, puis initialisez-la en exécutant la commande suivante :

      gcloud init

Rôles requis

Pour obtenir les autorisations nécessaires pour configurer la destruction différée des versions d'un secret, demandez à votre administrateur de vous attribuer le rôle IAM Administrateur Secret Manager (roles/secretmanager.admin) sur le secret. Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.

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

Configurer la destruction différée

Vous pouvez activer la destruction différée d'une version de secret lorsque vous créez ou mettez à jour le secret.

Console

  1. Dans la console Google Cloud, accédez à la page Secret Manager.

    Accéder à Secret Manager

  2. Suivez la procédure de création d'un secret.

  3. Accédez à la section Retarder la destruction de la version d'un secret.

  4. Cochez la case Définir la destruction différée.

  5. Dans le champ Durée du délai de destruction, saisissez la durée en jours. La valeur minimale que vous pouvez saisir est de 1 jour et la valeur maximale de 1 000 jours.

  6. Cliquez sur Créer un secret.

Pour activer cette fonctionnalité sur un secret existant, accédez à la page Modifier le secret, puis configurez le délai de destruction.

gcloud

Pour configurer le délai de destruction du secret, utilisez la commande gcloud beta secrets create.

Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

  • SECRET_ID: ID du secret ou identifiant complet du secret.
  • TTL_DURATION: durée du délai de destruction des versions de secret. Vous pouvez saisir la durée dans n'importe quel format (jours, heures ou secondes, par exemple). La durée minimale requise est d'un jour, tandis que la durée maximale peut être définie sur 1 000 jours.

Exécutez la commande suivante:

Linux, macOS ou Cloud Shell

gcloud beta secrets create SECRET_ID --version-destroy-ttl=TTL_DURATION

Windows (PowerShell)

gcloud beta secrets create SECRET_ID --version-destroy-ttl=TTL_DURATION

Windows (cmd.exe)

gcloud beta secrets create SECRET_ID --version-destroy-ttl=TTL_DURATION

La réponse contient le nouveau secret.

REST

Avant d'utiliser les données de requête, effectuez les remplacements suivants:

  • PROJECT_ID: ID du projet Google Cloud dans lequel vous souhaitez créer le secret
  • SECRET_ID: ID du secret ou identifiant complet du secret.
  • TTL_DURATION: durée du délai de destruction des versions du secret. Saisissez la durée en secondes. Notez que la durée minimale requise est d'un jour, tandis que la durée maximale peut être définie sur 1 000 jours.

Méthode HTTP et URL :

POST https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets?secretId=SECRET_ID

Corps JSON de la requête :

{"replication": {"automatic": {}}, "version_destroy_ttl":"TTL_DURATION"}

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json et exécutez la commande suivante:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets?secretId=SECRET_ID"

PowerShell

Enregistrez le corps de la requête dans un fichier nommé request.json et exécutez la commande suivante:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets?secretId=SECRET_ID" | Select-Object -Expand Content

Vous devriez recevoir une réponse JSON de ce type :

{
  "name":"projects/PROJECT_ID/secrets/SECRET_ID",
  "replication":{
     "automatic":{

     }
  },
  "createTime":"2023-10-16T17:10:16.345401Z",
  "etag":"\"1607d90ee3d84c\"",
  "versionDestroyTtl":"TTL_DURATION"
}

La destruction différée ne s'applique pas dans les cas suivants:

  • Lorsqu'un secret est supprimé, tout le matériel du secret et les versions de secret associées sont immédiatement supprimés.
  • Lorsqu'une date d'expiration est définie pour le secret et que celui-ci expire, toutes ses versions sont immédiatement détruites, même si la destruction différée est activée sur le secret.

Mettre à jour la durée du délai de destruction

Console

  1. Dans la console Google Cloud, accédez à la page Secret Manager.

    Accéder à Secret Manager

  2. Modifiez votre secret en utilisant l'une des options suivantes:

    • Cliquez sur Autres actions associées au secret que vous souhaitez modifier, puis sélectionnez Modifier dans le menu.
    • Cliquez sur le nom du secret pour accéder à la page Détails du secret. Sur la page Détails du secret, cliquez sur Modifier le secret.
  3. Accédez à la section Retarder la destruction de la version d'un secret.

  4. Dans le champ Durée du délai de destruction, saisissez la nouvelle durée.

  5. Cliquez sur Mettre à jour le secret.

gcloud

Pour mettre à jour le délai de destruction, utilisez la commande gcloud beta secrets update.

Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

  • SECRET_ID: ID du secret ou identifiant complet du secret
  • TTL_DURATION: durée du délai de destruction des versions du secret.

Exécutez la commande suivante:

Linux, macOS ou Cloud Shell

gcloud beta secrets update SECRET_ID --version-destroy-ttl=TTL_DURATION

Windows (PowerShell)

gcloud beta secrets update SECRET_ID --version-destroy-ttl=TTL_DURATION

Windows (cmd.exe)

gcloud beta secrets update SECRET_ID --version-destroy-ttl=TTL_DURATION

La réponse contient le secret mis à jour.

REST

Avant d'utiliser les données de requête, effectuez les remplacements suivants:

  • PROJECT_ID : ID de projet Google Cloud
  • SECRET_ID: ID du secret ou identifiant complet du secret
  • TTL_DURATION: durée du délai de destruction des versions du secret.

Méthode HTTP et URL :

PATCH https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=version_destroy_ttl

Corps JSON de la requête :

{
  "version_destroy_ttl":"TTL_DURATION"
}

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json et exécutez la commande suivante:

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=version_destroy_ttl"

PowerShell

Enregistrez le corps de la requête dans un fichier nommé request.json et exécutez la commande suivante:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=version_destroy_ttl" | Select-Object -Expand Content

Vous devriez recevoir une réponse JSON de ce type :

{
  "name":"projects/PROJECT_ID/secrets/SECRET_ID",
  "replication":{
     "automatic":{

     }
  },
  "createTime":"2023-10-16T17:10:16.345401Z",
  "etag":"\"1607d90ee3d84c\"",
  "versionDestroyTtl":"TTL_DURATION"
}

Les versions de secrets affectées par le délai de destruction dépendent des éléments suivants:

  • Lorsque la destruction différée est définie pour la première fois sur le secret, la durée du délai de destruction affecte toutes les versions actives (activées et désactivées) du secret.
  • Lorsque la durée du délai de destruction est mise à jour ou supprimée, les modifications ne s'appliquent qu'aux nouvelles versions de secrets sur lesquelles l'action de destruction est tentée. Les versions de secrets dont la destruction est déjà programmée continueront d'être détruites au moment de la destruction programmée.

Désactiver la destruction différée

Console

  1. Dans la console Google Cloud, accédez à la page Secret Manager.

    Accéder à Secret Manager

  2. Modifiez votre secret en utilisant l'une des options suivantes:

    • Cliquez sur Autres actions associées au secret que vous souhaitez modifier, puis sélectionnez Modifier dans le menu.
    • Cliquez sur le nom du secret pour accéder à la page Détails du secret. Sur la page Détails du secret, cliquez sur Modifier le secret.
  3. Accédez à la section Retarder la destruction de la version d'un secret.

  4. Décochez la case Définir la destruction différée.

  5. Cliquez sur Mettre à jour le secret.

gcloud

Pour supprimer le délai de destruction, utilisez la commande gcloud beta secrets update.

Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

  • SECRET_ID: ID du secret ou identifiant complet du secret

Exécutez la commande suivante:

Linux, macOS ou Cloud Shell

gcloud beta secrets update SECRET_ID --remove-version-destroy-ttl

Windows (PowerShell)

gcloud beta secrets update SECRET_ID --remove-version-destroy-ttl

Windows (cmd.exe)

gcloud beta secrets update SECRET_ID --remove-version-destroy-ttl

La réponse contient le secret mis à jour.

REST

Avant d'utiliser les données de requête, effectuez les remplacements suivants:

  • PROJECT_ID : ID de projet Google Cloud
  • SECRET_ID: ID du secret ou identifiant complet du secret

Méthode HTTP et URL :

PATCH https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=version_destroy_ttl

Corps JSON de la requête :

{}

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json et exécutez la commande suivante:

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=version_destroy_ttl"

PowerShell

Enregistrez le corps de la requête dans un fichier nommé request.json et exécutez la commande suivante:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=version_destroy_ttl" | Select-Object -Expand Content

Vous devriez recevoir une réponse JSON de ce type :

{
  "name":"projects/PROJECT_ID/secrets/SECRET_ID",
  "replication":{
     "automatic":{

     }
  },
  "createTime":"2023-10-16T17:10:16.345401Z",
  "etag":"\"1607d90ee3d84c\""
}

Tester la destruction différée des versions de secrets

Console

  1. Dans la console Google Cloud, accédez à la page Secret Manager.

    Accéder à Secret Manager

  2. Cliquez sur le nom du secret. La page Détails du secret s'affiche.

  3. Sur la page Détails du secret, dans le tableau Versions, sélectionnez une version de secret.

  4. Dans la colonne Actions, cliquez sur Afficher plus, puis sur Détruire.

  5. Dans la boîte de dialogue qui s'affiche, cliquez sur Programmer la destruction des versions sélectionnées.

gcloud

Pour détruire une version de secret, utilisez la commande gcloud beta secrets versions destroy.

Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

  • SECRET_VERSION_ID: ID de la version ou identifiant complet de la version
  • SECRET_ID: ID du secret ou identifiant complet du secret

Exécutez la commande suivante:

Linux, macOS ou Cloud Shell

gcloud beta secrets versions destroy SECRET_VERSION_ID --secret=SECRET_ID

Windows (PowerShell)

gcloud beta secrets versions destroy SECRET_VERSION_ID --secret=SECRET_ID

Windows (cmd.exe)

gcloud beta secrets versions destroy SECRET_VERSION_ID --secret=SECRET_ID

La réponse contient la version détruite du secret.

REST

Avant d'utiliser les données de requête, effectuez les remplacements suivants:

  • PROJECT_ID : ID de projet Google Cloud
  • SECRET_ID: ID du secret ou identifiant complet du secret
  • VERSION_ID: ID de la version ou identifiant complet de la version

Méthode HTTP et URL :

POST https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID/:destroy

Corps JSON de la requête :

{}

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json et exécutez la commande suivante:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID/:destroy"

PowerShell

Enregistrez le corps de la requête dans un fichier nommé request.json et exécutez la commande suivante:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID/:destroy" | Select-Object -Expand Content

Vous devriez recevoir une réponse JSON de ce type :

{
  "name":"projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID",
  "createTime":"2023-10-16T17:21:55.920036Z",
  "state":"DISABLED",
  "replicationStatus":{
     "automatic":{

     }
  },
  "etag":"\"1607d8b2fc1cf4\"",
  "scheduledDestroyTime":"2023-10-16T17:26:57.459395960Z"
}

La version du secret est immédiatement désactivée et programmée pour destruction à l'expiration du délai de destruction. Vous pouvez consulter la date et l'heure exactes auxquelles la version sera détruite dans la colonne Destruction programmée le de la table Versions.

Restaurer les versions de secret

Vous pouvez restaurer une version de secret dont la destruction est programmée en activant ou en désactivant la version de secret.

Activer une version de secret dont la destruction est programmée

Console

  1. Dans la console Google Cloud, accédez à la page Secret Manager.

    Accéder à Secret Manager

  2. Cliquez sur le nom du secret. La page Détails du secret s'affiche.

  3. Sur la page Détails du secret, dans la table Versions, sélectionnez la version du secret dont la destruction est programmée.

  4. Dans la colonne Actions, cliquez sur Afficher plus, puis sur Activer.

  5. Dans la boîte de dialogue qui s'affiche, cliquez sur Activer les versions sélectionnées.

gcloud

Pour activer une version de secret dont la destruction est programmée, utilisez la commande gcloud beta secrets versions enable.

Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

  • SECRET_VERSION_ID: ID de la version ou identifiant complet de la version
  • SECRET_ID: ID du secret ou identifiant complet du secret

Exécutez la commande suivante:

Linux, macOS ou Cloud Shell

gcloud beta secrets versions enable SECRET_VERSION_ID --secret=SECRET_ID

Windows (PowerShell)

gcloud beta secrets versions enable SECRET_VERSION_ID --secret=SECRET_ID

Windows (cmd.exe)

gcloud beta secrets versions enable SECRET_VERSION_ID --secret=SECRET_ID

La réponse contient la version activée du secret.

REST

Avant d'utiliser les données de requête, effectuez les remplacements suivants:

  • PROJECT_ID : ID de projet Google Cloud
  • SECRET_ID: ID du secret ou identifiant complet du secret
  • VERSION_ID: ID de la version ou identifiant complet de la version

Méthode HTTP et URL :

POST https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID/:enable

Corps JSON de la requête :

{}

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json et exécutez la commande suivante:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID/:enable"

PowerShell

Enregistrez le corps de la requête dans un fichier nommé request.json et exécutez la commande suivante:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID/:enable" | Select-Object -Expand Content

Vous devriez recevoir une réponse JSON de ce type :

{
  "name":"projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID",
  "createTime":"2023-10-16T17:21:55.920036Z",
  "state":"ENABLED",
  "replicationStatus":{
     "automatic":{

     }
  },
  "etag":"\"1607d8b3e8e1bc\""
}

Désactiver une version de secret dont la destruction est programmée

Console

  1. Dans la console Google Cloud, accédez à la page Secret Manager.

    Accéder à Secret Manager

  2. Cliquez sur le nom du secret. La page Détails du secret s'affiche.

  3. Sur la page Détails du secret, dans la table Versions, sélectionnez la version du secret dont la destruction est programmée.

  4. Dans la colonne Actions, cliquez sur Afficher plus, puis sur Désactiver.

  5. Dans la boîte de dialogue qui s'affiche, cliquez sur Désactiver les versions sélectionnées.

gcloud

Pour désactiver une version de secret dont la destruction est programmée, utilisez la commande gcloud beta secrets versions disabled.

Avant d'utiliser les données de la commande ci-dessous, effectuez les remplacements suivants :

  • SECRET_VERSION_ID: ID de la version ou identifiant complet de la version
  • SECRET_ID: ID du secret ou identifiant complet du secret

Exécutez la commande suivante:

Linux, macOS ou Cloud Shell

gcloud beta secrets versions disable SECRET_VERSION_ID --secret=SECRET_ID

Windows (PowerShell)

gcloud beta secrets versions disable SECRET_VERSION_ID --secret=SECRET_ID

Windows (cmd.exe)

gcloud beta secrets versions disable SECRET_VERSION_ID --secret=SECRET_ID

La réponse contient la version désactivée du secret.

REST

Avant d'utiliser les données de requête, effectuez les remplacements suivants:

  • PROJECT_ID : ID de projet Google Cloud
  • SECRET_ID: ID du secret ou identifiant complet du secret
  • VERSION_ID: ID de la version ou identifiant complet de la version

Méthode HTTP et URL :

POST https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID/:disable

Corps JSON de la requête :

{}

Pour envoyer votre requête, choisissez l'une des options suivantes :

curl

Enregistrez le corps de la requête dans un fichier nommé request.json et exécutez la commande suivante:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID/:disable"

PowerShell

Enregistrez le corps de la requête dans un fichier nommé request.json et exécutez la commande suivante:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID/:disable" | Select-Object -Expand Content

Vous devriez recevoir une réponse JSON de ce type :

{
  "name":"projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID",
  "createTime":"2023-10-16T17:21:55.920036Z",
  "state":"DISABLED",
  "replicationStatus":{
     "automatic":{

     }
  },
  "etag":"\"1607d8b3e8e1bc\""
}

Étapes suivantes