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 méthode la fréquence de rotation et la date de rotation. Cette rubrique vous explique comment configurer ou des calendriers périodiques de vos secrets pour recevoir des notifications lorsqu'il est temps de effectuer la rotation du secret.
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é sur le secret au niveau du next_rotation_time
. Cet horodatage est
de l'une des deux manières suivantes:
Fournie par l'utilisateur lors de la création ou de la mise à jour du secret.
Si un
rotation_period
est fourni, Secret Manager envoie uneSECRET_ROTATE
message après le délai derotation_period
écoulé.next_rotation_time
sera remplacé par pour refléter la nouvelle date de rotation.
Vous devez configurer un abonné Pub/Sub pour recevoir les messages SECRET_ROTATE
et agir en conséquence.
pour en savoir plus. Si nécessaire, implémentez des workflows supplémentaires, comme l'ajout d'une nouvelle version de secret.
et le déclenchement des déploiements de l'application.
Remarques
La gestion des règles de rotation n'est disponible que dans Secret Manager l'API
v1
et la 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. Larotation_period
ne peut pas durer moins d'une heure. Pour obtenir des conseils sur le format d'horodatage, consultez la documentation de référence sur gcloud datetime.Erreurs de distribution: Secret Manager relance automatiquement les tentatives ayant échoué pour envoyer un message. Secret Manager n'offre aucune garantie concernant la livraison en cas de mauvaise configuration concernant la configuration des secrets ou des sujets, les autorisations ou les quotas.
Les rotations en cours doivent être terminées avant qu'une autre rotation puisse être lancée dans l'ordre pour éviter que des rotations simultanées ne génèrent un comportement inattendu. Les notifications sont considéré comme en cours de transfert pendant que Secret Manager tente d'envoyer le message Pub/Sub. Les rotations planifiées sont ignorées en cas de rotation en cours. Secret Manager relancera automatiquement les tentatives ayant échoué d'envoi d'un message pour jusqu'à sept jours, 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
.
Mettez à jour le 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
Supprimez l'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 des clés de chiffrement gérées par le client (CMEK) pour Secret Manager.
Apprenez à utiliser les ETag pour un contrôle de simultanéité optimiste.