Cette page explique comment définir une date d'expiration pour un secret nouveau ou existant, modifier la date d'expiration d'un secret existant et supprimer toute date d'expiration précédemment définie 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 Désactivé de la version pour révoquer l'accès de manière sécurisée.
Vous pouvez saisir une date d'expiration sous la forme d'un code temporel ou d'une durée. Lors de la récupération des métadonnées d'un secret, le délai d'expiration est toujours renvoyé sous forme d'horodatage, quelle que soit la façon dont il a été fourni.
Un délai d'expiration peut être ajouté, mis à jour ou supprimé d'un secret à tout moment.
Limites
-
Le délai d'expiration d'un secret ne peut pas être situé à moins de 60 secondes ni à plus de 100 ans.
Utiliser des secrets arrivant à expiration en toute sécurité
Lorsqu'un secret expire dans Secret Manager, il est supprimé de manière irréversible. 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. Vous pouvez ainsi identifier les workflows ou les processus qui utilisent toujours le secret de manière inattendue.
-
Surveillez les perturbations: si des workflows cessent de fonctionner après la révocation d'autorisations, vous pouvez rapidement restaurer l'accès pour minimiser l'impact.
-
Ajustez si nécessaire: si vous avez besoin de plus de temps, vous pouvez prolonger la date d'expiration du secret ou même le supprimer complètement s'il n'est plus nécessaire.
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
-
Accédez à la page Secret Manager dans la console Google Cloud.
-
Sur la page Secret Manager, cliquez sur l'onglet Secrets régionaux, puis sur Créer un secret régional.
-
Sur la page Créer un secret régional, saisissez un nom pour le secret dans le champ Nom.
-
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. -
Dans la liste Région, sélectionnez l'emplacement où vous souhaitez stocker votre secret régional.
-
Accédez à Expiration, puis cochez la case Définir la date d'expiration.
-
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. -
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: date 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 avec une date d'expiration à l'aide d'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 avec une date d'expiration à l'aide d'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
-
Accédez à la page Secret Manager dans la console Google Cloud.
-
Sur la page Secret Manager, cliquez sur l'onglet Secrets régionaux.
-
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. -
Accédez à la section Expiration. Modifiez la date et l'heure d'expiration, puis cliquez sur Mettre à jour la clé secrète.
gcloud
Mettre à jour l'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 dans laquelle vous avez stocké les données secrètes
- TIMESTAMP: date 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 l'expiration d'un secret à l'aide d'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 l'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 l'expiration d'un secret à l'aide d'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
-
Accédez à la page Secret Manager dans la console Google Cloud.
-
Sur la page Secret Manager, cliquez sur l'onglet Secrets régionaux.
-
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. -
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
Cloud Audit Logs 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.