Secret Manager vous permet de planifier des rotations périodiques de vos secrets. Pour ce faire, Secret Manager envoie des notifications aux sujets Pub/Sub associés à vos secrets, en fonction de la fréquence et de la date de rotation que vous spécifiez. Cette page explique comment configurer ces calendriers de rotation.
Fonctionnement des notifications de rotation des secrets
Secret Manager déclenche un message SECRET_ROTATE
aux sujets Pub/Sub désignés au moment de la prochaine date de rotation (next_rotation_time
) du secret. Pour déterminer cet horodatage, vous pouvez procéder de deux façons:
-
Défini par l'utilisateur: vous pouvez spécifier l'
next_rotation_time
lorsque vous créez ou mettez à jour le secret. -
Période de rotation: si vous définissez un
rotation_period
, Secret Manager calcule automatiquement lenext_rotation_time
. Secret Manager envoie le messageSECRET_ROTATE
une fois lerotation_period
spécifié écoulé, puis met à jour lenext_rotation_time
pour planifier la prochaine rotation.
Vous devez configurer un abonné Pub/Sub pour recevoir les messages SECRET_ROTATE
et agir en conséquence.
Vous devrez peut-être également configurer des workflows supplémentaires en réponse à ces notifications, par exemple en créant une nouvelle version du secret et en déployant les modifications dans vos applications.
Exigences et considérations concernant les calendriers de rotation des secrets
-
Les sujets Pub/Sub doivent être configurés sur le secret. Pour savoir comment créer un sujet et un abonnement Pub/Sub, consultez le guide de démarrage rapide de Pub/Sub. Pour savoir comment configurer des sujets sur un secret, consultez la page Notifications d'événements pour Secret Manager.
-
next_rotation_time
doit être défini sirotation_period
est spécifié. -
La valeur
next_rotation_time
ne peut pas être fixée sur moins de cinq minutes dans le futur. -
La valeur
rotation_period
ne peut pas être inférieure à une heure. Pour en savoir plus sur la mise en forme des horodatages, consultez la documentation de référence sur la date et l'heure Google Cloud. -
Bien que Secret Manager relance automatiquement les tentatives d'envoi de messages infructueuses, nous ne pouvons pas garantir la distribution si des erreurs de configuration sont liées au secret, à la configuration du sujet, aux autorisations ou aux quotas.
-
Les rotations en cours doivent être terminées avant de démarrer une autre rotation afin d'empêcher les rotations simultanées de générer un comportement inattendu. Les notifications sont considérées comme en cours pendant que Secret Manager tente d'envoyer le message à Pub/Sub. Les rotations planifiées sont ignorées en cas de rotation en cours. Pour les tentatives infructueuses d'envoi d'un message, Secret Manager tente automatiquement d'envoyer le message pendant sept jours au maximum, après quoi la rotation est annulée.
Configurer la rotation sur un secret
Vous pouvez configurer un calendrier de rotation à l'aide de la console Google Cloud, de 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 à la section Rotation, puis cochez la case Définir la période de rotation.
-
Dans la liste Période de rotation, sélectionnez l'une des options par défaut ou Personnalisé pour configurer votre propre calendrier de rotation.
-
Dans le champ À partir du, saisissez la date et l'heure de début de la période de rotation.
-
Cliquez sur Créer un 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.
- NEXT_ROTATION_TIME: code temporel à partir duquel effectuer la première rotation au format ISO 8601, par exemple
2021-06-01T09:00:00Z
. - ROTATION_PERIOD: intervalle, en secondes, pour faire pivoter la clé. Par exemple, pour faire pivoter la clé toutes les 2 592 000 s, vous devez définir la valeur
2592000s
. - FULL_TOPIC_NAME: nom complet de votre sujet Pub/Sub au format
projects/your-project-id/topics/your-topic-name
.
Exécutez la commande suivante :
Linux, macOS ou Cloud Shell
gcloud secrets create SECRET_ID --location=LOCATION \ --next-rotation-time="NEXT_ROTATION_TIME" \ --rotation-period="ROTATION_PERIOD" \ --topics="FULL_TOPIC_NAME"
Windows (PowerShell)
gcloud secrets create SECRET_ID --location=LOCATION ` --next-rotation-time="NEXT_ROTATION_TIME" ` --rotation-period="ROTATION_PERIOD" ` --topics="FULL_TOPIC_NAME"
Windows (cmd.exe)
gcloud secrets create SECRET_ID --location=LOCATION ^ --next-rotation-time="NEXT_ROTATION_TIME" ^ --rotation-period="ROTATION_PERIOD" ^ --topics="FULL_TOPIC_NAME"
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
- TOPIC_NAME: nom du sujet
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 :
{ "topics": {"name" : "projects/$PROJECT_ID/topics/$TOPIC_NAME"}, "rotation": { "next_rotation_time": "2021-06-01T09:00:00Z", "rotation_period" : '2592000s' }, }
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-04T04:06:00.660420Z", "topics": [ { "name": "projects/PROJECT_ID/topics/TOPIC_NAME" } ], "etag": "\"1621434abc8dc4\"", "rotation": { "nextRotationTime": "2024-09-10T09:00:00Z", "rotationPeriod": "2592000s" } }
Mettre à jour les paramètres de rotation d'un secret
Vous pouvez modifier les paramètres de rotation suivants lorsque vous envoyez une requête de mise à jour:
-
rotation
: fait référence à l'ensemble de la configuration de rotation du secret. -
rotation.next_rotation_time
: cible spécifiquement l'horodatage indiquant quand la prochaine rotation peut se produire. -
rotation.rotation_period
: spécifie la durée entre chaque rotation.
Pour mettre à jour les paramètres de rotation 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.
-
Recherchez le secret que vous souhaitez modifier, puis cliquez sur le menu
Actions associé à ce secret. Dans le menu Actions, cliquez sur Modifier. -
Accédez à la section Rotation. Modifiez la période de rotation si nécessaire, 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.
- NEXT_ROTATION_TIME: code temporel à partir duquel effectuer la première rotation au format ISO 8601, par exemple
2021-06-01T09:00:00Z
.
Exécutez la commande suivante :
Linux, macOS ou Cloud Shell
gcloud secrets update SECRET_ID --location=LOCATION \ --next-rotation-time="NEXT_ROTATION_TIME"
Windows (PowerShell)
gcloud secrets update SECRET_ID --location=LOCATION ` --next-rotation-time="NEXT_ROTATION_TIME"
Windows (cmd.exe)
gcloud secrets update SECRET_ID --location=LOCATION ^ --next-rotation-time="NEXT_ROTATION_TIME"
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.
- NEXT_ROTATION_TIME: code temporel à partir duquel effectuer la première rotation au format ISO 8601, par exemple
2021-06-01T09:00:00Z
.
Méthode HTTP et URL :
PATCH https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/LOCATION/secrets/$SECRET_ID?updateMask=rotation.next_rotation_time
Corps JSON de la requête :
{ "rotation": {"next_rotation_time": "NEXT_ROTATION_TIME"} }
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 $(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/$SECRET_ID?updateMask=rotation.next_rotation_time"
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 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=rotation.next_rotation_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-04T04:06:00.660420Z", "topics": [ { "name": "projects/PROJECT_ID/topics/TOPIC_NAME" } ], "etag": "\"1621434abc8dc4\"", "rotation": { "nextRotationTime": "2024-09-10T09:00:00Z", "rotationPeriod": "2592000s" } }
Désactiver la rotation sur un secret
Pour désactiver la rotation des secrets, 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.
-
Recherchez le secret que vous souhaitez modifier, puis cliquez sur le menu
Actions associé à ce secret. Dans le menu Actions, cliquez sur Modifier. -
Accédez à la section Rotation. Décochez la case Définir la période de rotation, puis cliquez sur Mettre à jour le secret.
gcloud
Supprimer la next_rotation_time
d'un secret
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-next-rotation-time
Windows (PowerShell)
gcloud secrets update SECRET_ID --location=LOCATION ` --remove-next-rotation-time
Windows (cmd.exe)
gcloud secrets update SECRET_ID --location=LOCATION ^ --remove-next-rotation-time
Supprimez le calendrier de rotation d'un secret. Cela supprime à la fois next_rotation_time
et rotation_period
.
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-rotation-schedule
Windows (PowerShell)
gcloud secrets update SECRET_ID --location=LOCATION ` --remove-rotation-schedule
Windows (cmd.exe)
gcloud secrets update SECRET_ID --location=LOCATION ^ --remove-rotation-schedule
REST
Supprimer la date de rotation suivante d'un secret
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
Méthode HTTP et URL :
PATCH https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/LOCATION/secrets/$SECRET_ID?updateMask=rotation.next_rotation_time
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 $(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/$SECRET_ID?updateMask=rotation.next_rotation_time"
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 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=rotation.next_rotation_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-04T04:06:00.660420Z", "topics": [ { "name": "projects/PROJECT_ID/topics/TOPIC_NAME" } ], "etag": "\"16214530fa18d3\"" }
Supprimez le calendrier de rotation d'un secret. Cela supprime à la fois la date de la prochaine rotation et la période de rotation.
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
Méthode HTTP et URL :
PATCH https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/LOCATION/secrets/$SECRET_ID?updateMask=rotation
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 $(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/$SECRET_ID?updateMask=rotation"
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 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=rotation" | 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-04T04:06:00.660420Z", "topics": [ { "name": "projects/PROJECT_ID/topics/TOPIC_NAME" } ], "etag": "\"16214530fa18d3\"" }