Définir la date d'expiration d'un secret régional

Cette page explique comment définir une date d'expiration pour un secret nouveau ou existant, modifier le délai d'expiration la date d'un secret existant et supprimer toute date d'expiration définie précédemment pour un secret.

Présentation

Par défaut, les secrets stockés dans Secret Manager existent jusqu'à ce qu'un utilisateur les supprime. Si un secret ne doit être stocké que pendant une durée limitée et connue, vous pouvez lui associer un délai d'expiration. Au moment de l'expiration du délai configuré d'un secret, il est automatiquement supprimé.

Si vous n'avez pas d'exigences concernant la suppression du secret, envisagez d'utiliser les conditions IAM ou l'état de la version Désactivé pour révoquer l'accès en toute sécurité.

Vous pouvez saisir une date d'expiration sous la forme d'un code temporel ou d'une durée. Lorsque les métadonnées d'un secret sont récupérées, le délai d'expiration est toujours renvoyées sous forme d'horodatage, quelle que soit la façon dont elles ont été fournies.

Un délai d'expiration peut être ajouté, mis à jour ou supprimé d'un secret à tout moment.

Limites

  • L'expiration d'un secret ne peut pas se situer à moins de 60 secondes ni à plus de 100 secondes plusieurs années.

Utiliser des secrets arrivant à expiration en toute sécurité

Lorsqu'un secret expire dans Secret Manager, il est irréversiblement supprimés. Le meilleur moyen de détecter les secrets arrivant à expiration consiste à utiliser les conditions IAM pour supprimer les autorisations des comptes qui utilisent le secret avant son expiration.

Pour gérer efficacement l'accès aux secrets, définissez une condition temporelle sur les autorisations accordées.

  • Définissez une date d'expiration : les autorisations doivent expirer peu de temps avant l'expiration du secret lui-même. Cela vous permet d'identifier les workflows ou les processus qui pourraient toujours utiliser le secret de manière inattendue.

  • Surveillez les interruptions: si un workflow cesse de fonctionner après la révocation des autorisations, vous pouvez rapidement restaurer l'accès pour en limiter l'impact.

  • Ajustez-les si nécessaire: si vous avez besoin de plus de temps, vous pouvez repousser la date d'expiration du secret ou même le supprimer complètement s'il n'est plus nécessaire.

Cette approche permet de s'assurer que l'accès aux secrets est étroitement contrôlé et n'est disponible que pendant la durée nécessaire, ce qui réduit le risque d'accès non autorisé ou d'usage abusif.

Par exemple, imaginez un scénario dans lequel un compte de service doit accéder chaque jour à un secret 30 jours. Vous pouvez configurer le secret pour qu'il expire 60 jours après sa création. Cela donne une période tampon après l'utilisation prévue. Vous pouvez également configurer une liaison IAM conditionnelle pour accorder le rôle Accesseur de secrets pendant 45 jours. Si le compte de service tente à accéder au secret après 45 jours, l’autorisation lui est refusée. Les workflows qui s'appuient sur ce secret cessent de fonctionner. Un administrateur peut restaurer rapidement l'accès en attribuant le rôle Accesseur de secrets au compte de service. Cela leur laisse le temps de rechercher pourquoi le secret est toujours nécessaire après la période de 30 jours prévue, car le secret lui-même ne sera pas supprimé avant 15 jours supplémentaires.

<ph type="x-smartling-placeholder">

En outre, il est possible de créer des alertes basées sur l'avertissement de journaux des secrets qui expirent bientôt. Pour en savoir plus, consultez la section Journalisation de l'expiration de ce document.

Spécifier des codes temporels et des durées

  • Les valeurs d'horodatage doivent être au format RFC 3339, par exemple 2100-01-01T09:00:00-05:00.

  • Les valeurs de durée doivent être mises en forme en tant que nombre de secondes, en incluant le suffixe s, par exemple 86400s.

Définir la date d'expiration d'un secret

Vous pouvez définir une date et une heure d'expiration pour un secret à l'aide de la console Google Cloud, de la Google Cloud CLI ou de l'API Secret Manager.

Console

  1. Accédez à la page Secret Manager dans la console Google Cloud.

    Accéder à Secret Manager

  2. Sur la page Secret Manager, cliquez sur l'onglet Secrets régionaux, puis Cliquez sur Créer un secret régional.

  3. Sur la page Créer un secret régional, saisissez un nom pour le secret dans le champ Nom.

  4. Saisissez une valeur pour le secret (par exemple, abcd1234). Vous pouvez également importer un fichier texte contenant la valeur du secret à l'aide de l'option Importer un fichier. Cette action crée automatiquement la version du secret.

  5. Dans la liste Région, sélectionnez l'emplacement où vous souhaitez stocker votre secret régional.

  6. Accédez à Expiration, puis cochez la case Définir la date d'expiration.

  7. Saisissez la date et l'heure d'expiration au format Mois/Jour/Année, Heure:Minute AM/PM. (par exemple, 7/31/20, 1:00 AM). Vous pouvez également utiliser le sélecteur de date et d'heure pour saisir la date et l'heure d'expiration.

  8. Cliquez sur Créer un secret.

gcloud

Créer un secret arrivant à expiration à l'aide d'un code temporel

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
  • LOCATION : emplacement Google Cloud du secret
  • TIMESTAMP: délai d'expiration au format RFC 3339, par exemple 2100-01-01T09:00:00-05:00

Exécutez la commande suivante :

Linux, macOS ou Cloud Shell

gcloud secrets create SECRET_ID --location=LOCATION \
    --expire-time "TIMESTAMP"

Windows (PowerShell)

gcloud secrets create SECRET_ID --location=LOCATION `
    --expire-time "TIMESTAMP"

Windows (cmd.exe)

gcloud secrets create SECRET_ID --location=LOCATION ^
    --expire-time "TIMESTAMP"

Créer un secret arrivant à expiration avec une durée

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
  • LOCATION : emplacement Google Cloud du secret
  • DURATION : durée d'expiration en secondes (par exemple, 86400s)

Exécutez la commande suivante :

Linux, macOS ou Cloud Shell

gcloud secrets create SECRET_ID --location=LOCATION \
  --ttl "DURATION"

Windows (PowerShell)

gcloud secrets create SECRET_ID --location=LOCATION `
  --ttl "DURATION"

Windows (cmd.exe)

gcloud secrets create SECRET_ID --location=LOCATION ^
  --ttl "DURATION"

REST

Créer un secret arrivant à expiration à l'aide d'un code temporel

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

  • LOCATION : emplacement Google Cloud du secret
  • PROJECT_ID : ID de projet Google Cloud
  • SECRET_ID: ID du secret ou identifiant complet du secret
  • TIMESTAMP : date d'expiration au format RFC 3339, par exemple 2100-01-01T09:00:00-05:00

Méthode HTTP et URL :

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

Corps JSON de la requête :

{"expire_time": "TIMESTAMP"}

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, puis 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.LOCATION.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/LOCATION/secrets?secretId=$SECRET_ID"

PowerShell

Enregistrez le corps de la requête dans un fichier nommé request.json, puis 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.LOCATION.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/LOCATION/secrets?secretId=$SECRET_ID" | Select-Object -Expand Content

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

{
  "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID",
  "createTime": "2024-09-04T03:58:38.200877Z",
  "expireTime": "2024-09-04T09:25:39Z",
  "etag": "\"162143305d282d\""
}

Créer un secret arrivant à expiration avec une durée

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

  • LOCATION: emplacement Google Cloud du secret
  • PROJECT_ID : ID de projet Google Cloud
  • SECRET_ID: ID du secret ou identifiant complet du secret
  • DURATION : durée d'expiration en secondes (par exemple, 86400s)

Méthode HTTP et URL :

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

Corps JSON de la requête :

{"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, puis 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.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets?secretId=SECRET_ID"

PowerShell

Enregistrez le corps de la requête dans un fichier nommé request.json, puis 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.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets?secretId=SECRET_ID" | Select-Object -Expand Content

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

{
  "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID",
  "createTime": "2024-09-04T03:58:38.200877Z",
  "expireTime": "2024-09-04T09:25:39Z",
  "etag": "\"162143305d282d\""
}

Modifier la date d'expiration d'un secret

Pour mettre à jour la date et l'heure d'expiration du secret, utilisez l'une des méthodes suivantes:

Console

  1. Accédez à la page Secret Manager dans la console Google Cloud.

    Accéder à Secret Manager

  2. Sur la page Secret Manager, cliquez sur l'onglet Secrets régionaux.

  3. Pour modifier un secret, localisez-le dans la liste, puis cliquez sur le bouton Menu Actions associé à cette action secret. Dans le menu Actions, cliquez sur Modifier.

  4. Accédez à la section Expiration. Modifiez la date et l'heure d'expiration, puis cliquez sur Mettre à jour le secret

gcloud

Mettre à jour la date d'expiration d'un secret à l'aide d'un code temporel

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
  • LOCATION: région Google Cloud où vous avez stocké les données secrètes
  • TIMESTAMP: délai d'expiration au format RFC 3339, par exemple 2100-01-01T09:00:00-05:00

Exécutez la commande suivante :

Linux, macOS ou Cloud Shell

gcloud secrets update SECRET_ID --location=LOCATION \
  --expire-time "TIMESTAMP"

Windows (PowerShell)

gcloud secrets update SECRET_ID --location=LOCATION `
  --expire-time "TIMESTAMP"

Windows (cmd.exe)

gcloud secrets update SECRET_ID --location=LOCATION ^
  --expire-time "TIMESTAMP"

Mettre à jour la date d'expiration d'un secret avec une durée

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
  • LOCATION : emplacement Google Cloud du secret
  • DURATION: durée d'expiration en secondes (par exemple 86400s)

Exécutez la commande suivante :

Linux, macOS ou Cloud Shell

gcloud secrets update SECRET_ID --location=LOCATION \
    --ttl "DURATION"

Windows (PowerShell)

gcloud secrets update SECRET_ID --location=LOCATION `
    --ttl "DURATION"

Windows (cmd.exe)

gcloud secrets update SECRET_ID --location=LOCATION ^
    --ttl "DURATION"

REST

Mettre à jour la date d'expiration d'un secret à l'aide d'un code temporel

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

  • LOCATION : emplacement Google Cloud du secret
  • PROJECT_ID : ID de projet Google Cloud
  • SECRET_ID: ID du secret ou identifiant complet du secret
  • TOKEN : votre propre jeton d'accès OAuth2.0
  • TIMESTAMP : date d'expiration au format RFC 3339, par exemple 2100-01-01T09:00:00-05:00

Méthode HTTP et URL :

PATCH https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID?updateMask=expire_time

Corps JSON de la requête :

{"expire_time": "TIMESTAMP"}

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, puis exécutez la commande suivante :

curl -X PATCH \
-H "Authorization: Bearer TOKEN" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID?updateMask=expire_time"

PowerShell

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

$headers = @{ "Authorization" = "Bearer TOKEN" }

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

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

{
  "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID",
  "createTime": "2024-09-04T03:58:38.200877Z",
  "expireTime": "2024-09-04T09:25:39Z",
  "etag": "\"162143305d282d\""
}

Mettre à jour la date d'expiration d'un secret avec une durée

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

  • LOCATION: emplacement Google Cloud du secret
  • PROJECT_ID : ID de projet Google Cloud
  • SECRET_ID: ID du secret ou identifiant complet du secret
  • DURATION : durée d'expiration en secondes (par exemple, 86400s)

Méthode HTTP et URL :

PATCH https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID?updateMask=ttl

Corps JSON de la requête :

{"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, puis exécutez la commande suivante :

curl -X PATCH \
-H "Authorization: Bearer TOKEN" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID?updateMask=ttl"

PowerShell

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

$headers = @{ "Authorization" = "Bearer TOKEN" }

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

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

{
  "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID",
  "createTime": "2024-09-04T03:58:38.200877Z",
  "expireTime": "2024-09-04T09:25:39Z",
  "etag": "\"162143305d282d\""
}

Supprimer la date d'expiration d'un secret

Pour supprimer la date et l'heure d'expiration du secret, utilisez l'une des méthodes suivantes :

Console

  1. Accédez à la page Secret Manager dans la console Google Cloud.

    Accéder à Secret Manager

  2. Sur la page Secret Manager, cliquez sur l'onglet Secrets régionaux.

  3. Pour modifier un secret, recherchez-le dans la liste, puis cliquez sur le menu Actions associé à ce secret. Dans le menu Actions, cliquez sur Modifier.

  4. Accédez à la section Expiration. Décochez la case Définir la date d'expiration, puis cliquez sur Mettre à jour le secret.

gcloud

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
  • LOCATION: emplacement Google Cloud du secret

Exécutez la commande suivante :

Linux, macOS ou Cloud Shell

gcloud secrets update SECRET_ID --location=LOCATION \
  --remove-expiration

Windows (PowerShell)

gcloud secrets update SECRET_ID --location=LOCATION `
  --remove-expiration

Windows (cmd.exe)

gcloud secrets update SECRET_ID --location=LOCATION ^
  --remove-expiration

REST

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

  • LOCATION: emplacement Google Cloud du secret
  • PROJECT_ID : ID de projet Google Cloud
  • SECRET_ID: ID du secret ou identifiant complet du secret
  • TOKEN: votre propre jeton d'accès Oauth2.0

Méthode HTTP et URL :

PATCH https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID?updateMask=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, puis exécutez la commande suivante :

curl -X PATCH \
-H "Authorization: Bearer TOKEN" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID?updateMask=ttl"

PowerShell

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

$headers = @{ "Authorization" = "Bearer TOKEN" }

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

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

{
  "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID",
  "createTime": "2024-09-04T03:58:38.200877Z",
  "etag": "\"162143305d282d\""
}

Journalisation des délais d'expiration

Les journaux d'audit Cloud ne sont pas générés lorsqu'un secret expire automatiquement. À la place, Secret Manager écrit les journaux dans la ressource Secret de Secret Manager à des intervalles spécifiques menant à l'expiration du secret.

Durée des journaux Type d'événement secret
30 jours avant l'expiration. EXPIRES_IN_30_DAYS
sept jours avant l'expiration. EXPIRES_IN_7_DAYS
1 jour avant l'expiration EXPIRES_IN_1_DAY
six heures avant l'expiration EXPIRES_IN_6_HOURS
1 heure avant l'expiration EXPIRES_IN_1_HOUR
à l'expiration EXPIRED

Consultez le guide de démarrage rapide de Logging pour savoir comment afficher ces journaux. Vous pouvez créer des métriques basées sur les journaux et les utiliser pour créer des alertes pour les expirations à venir.

Étape suivante