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 et de la date de rotation fournies. Cette rubrique vous explique comment configurer des programmations ponctuelles ou périodiques pour vos secrets afin de recevoir des notifications lorsqu'il est temps d'effectuer une rotation.
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 niveau de l'objet next_rotation_time
du secret. Cet horodatage est défini 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 un messageSECRET_ROTATE
après l'expirationrotation_period
.next_rotation_time
sera mis à jour pour refléter la nouvelle date de rotation suivante.
Vous devez configurer un abonné Pub/Sub pour recevoir et traiter les messages SECRET_ROTATE
. Si nécessaire, mettez en œuvre des workflows supplémentaires, tels que l'ajout d'une nouvelle version de secret et le déclenchement du déploiement d'applications.
Notes
La gestion des stratégies de rotation n'est disponible que dans l'API Secret Manager
v1
et 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 durée de l'élémentrotation_period
ne peut pas être inférieure à une heure. Pour en savoir plus sur le format des codes temporels, consultez la documentation de référence de gcloud datetime.Erreurs de distribution: Secret Manager relance automatiquement les tentatives d'envoi de message ayant échoué. Secret Manager n'offre aucune garantie en ce qui concerne la diffusion en cas d'erreur de configuration concernant la configuration des secrets ou des sujets, les autorisations ou les quotas.
Les rotations en cours de transfert doivent se terminer avant qu'une autre rotation puisse être lancée afin d'éviter que les rotations simultanées ne produisent 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. Secret Manager relance automatiquement les tentatives d'envoi de message ayant échoué pendant 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 l'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
{
"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
Étapes suivantes
Découvrez comment activer les clés de chiffrement gérées par le client (CMEK) pour Secret Manager.
Découvrez comment utiliser des ETag pour un contrôle de simultanéité optimiste.