Secret Manager est compatible avec les calendriers de rotation des secrets. Secret Manager envoie des messages aux sujets Pub/Sub configurés sur le secret en fonction de la fréquence de rotation et de la date de rotation fournies. Cette section vous explique comment configurer des programmations ponctuelles ou périodiques sur vos secrets pour recevoir des notifications lorsqu'il est temps d'alterner les secrets.
Avantages de la rotation des secrets :
- Limitez la durée pendant laquelle un secret piraté reste valide et expose une faille.
- Exercez un flux de rotation en continu pour garantir la fiabilité des processus.
Fonctionnement
Secret Manager envoie un message SECRET_ROTATE
aux sujets Pub/Sub configurés sur le secret au moment de la prochaine date de rotation (next_rotation_time
) du secret. Cet horodatage est défini de deux manières:
Fournie par l'utilisateur lors de la création ou de la mise à jour du secret.
Si un
rotation_period
est fourni, Secret Manager enverra un messageSECRET_ROTATE
après larotation_period
écoulée.next_rotation_time
sera mis à jour pour refléter la nouvelle date de la prochaine rotation.
Vous devez configurer un abonné Pub/Sub pour recevoir les messages SECRET_ROTATE
et agir en conséquence. Si nécessaire, mettez en œuvre des workflows supplémentaires, tels que l'ajout d'une nouvelle version de secret et le déclenchement de déploiements d'applications.
Remarques
La gestion des règles de rotation n'est disponible que dans l'API
v1
de Secret Manager et dans Google Cloud CLI.Les sujets Pub/Sub doivent être configurés sur le secret. Pour découvrir 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 valeurrotation_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 gcloud datetime.Erreurs de distribution: Secret Manager relance automatiquement les tentatives infructueuses d'envoi d'un message. Secret Manager n'offre aucune garantie quant à la distribution en cas d'erreur de configuration de la configuration, des autorisations ou des quotas des secrets ou des sujets.
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.
Examples
Configurer la rotation sur un secret
Créez un secret avec un next_rotation_time
qui alterne tous les 30 jours à compter du 1er juin 2021 :
gcloud
gcloud secrets create secret-id \ --replication-policy "automatic" \ --next-rotation-time="2021-06-01T09:00:00Z" \ --rotation-period="2592000s" \ --topics="full-topic-name"
API
curl "https://secretmanager.googleapis.com/v1/projects/${PROJECT_ID}/secrets?secretId=${SECRET_ID}" \
--request "POST" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer $(gcloud auth print-access-token)" \
--data-binary @- <<EOF
{
"replication":{
"automatic":{}
},
"topics": {"name" : "projects/${PROJECT_ID}/topics/${TOPIC_NAME}"},
"rotation":
{
"next_rotation_time": "2021-06-01T09:00:00Z",
"rotation_period" : '2592000s'
},
}
EOF
Mettre à jour les paramètres de rotation d'un secret
Les chemins d'accès updateMask valides pour la rotation incluent : rotation
, rotation.next_rotation_time
, rotation.rotation_period
.
Pour mettre à jour la prochaine date de rotation (next_rotation_time
) d'un secret:
gcloud
gcloud secrets update secret-id \ --next-rotation-time "2022-06-01T09:00:00Z"
API
$ curl "https://secretmanager.googleapis.com/v1/projects/${PROJECT_ID}/secrets/${SECRET_ID}?updateMask=rotation.next_rotation_time" \
--request "PATCH" \
--header "Authorization: Bearer $(gcloud auth print-access-token)" \
--header "Content-Type: application/json" \
--data-binary @- <<EOF
{
"rotation": {"next_rotation_time": "2040-06-01T09:00:00Z"}
}
EOF
Désactiver la rotation sur un secret
Pour supprimer la next_rotation_time
d'un secret:
gcloud
gcloud secrets update secret-id \ --remove-next-rotation-time
API
$ curl "https://secretmanager.googleapis.com/v1/projects/${PROJECT_ID}/secrets/${SECRET_ID}?updateMask=rotation.next_rotation_time" \
--request "PATCH" \
--header "Authorization: Bearer $(gcloud auth print-access-token)" \
--header "Content-Type: application/json" \
--data-binary @- <<EOF
{}
EOF
Supprimez le calendrier de rotation d'un secret. Cela supprime à la fois next_rotation_time
et rotation_period
.
gcloud
gcloud secrets update secret-id \ --remove-rotation-schedule
API
$ curl "https://secretmanager.googleapis.com/v1/projects/${PROJECT_ID}/secrets/${SECRET_ID}?updateMask=rotation" \
--request "PATCH" \
--header "Authorization: Bearer $(gcloud auth print-access-token)" \
--header "Content-Type: application/json" \
--data-binary @- <<EOF
{}
EOF
Étape suivante
Découvrez comment activer les clés de chiffrement gérées par le client (CMEK) pour Secret Manager.
Découvrez comment utiliser les ETags pour le contrôle de simultanéité optimiste.