Créer des calendriers de rotation dans Secret Manager

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:

  1. Fournie par l'utilisateur lors de la création ou de la mise à jour du secret.

  2. Si un rotation_period est fourni, Secret Manager envoie une SECRET_ROTATE message après le délai de rotation_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 si rotation_period est spécifié.

  • La valeur next_rotation_time ne peut pas être fixée sur moins de cinq minutes dans le futur. La rotation_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