Secret Manager unterstützt Rotationspläne für Secrets. Secret Manager sendet Nachrichten an Pub/Sub-Themen, die basierend auf der angegebenen Rotationshäufigkeit und Rotationszeit für das Secret konfiguriert wurden. In diesem Thema erfahren Sie, wie Sie einmalige oder regelmäßige Zeitpläne für Ihre Secrets einrichten, um Benachrichtigungen zu erhalten, wenn das Secret rotiert wird.
Regelmäßige Rotation von Secrets hilft bei Folgendem:
- Zeitraum begrenzen, für die ein gehacktes Secret gültig bleibt und eine Sicherheitslücke verursacht
- Kontinuierlich einen Rotationsworkflow ausführen, um die Prozesszuverlässigkeit zu gewährleisten
Funktionsweise
Secret Manager sendet eine SECRET_ROTATE
-Nachricht an die Pub/Sub-Themen, die für das Secret am next_rotation_time
des Secrets konfiguriert wurden. Dieser Zeitstempel kann auf eine von zwei Arten festgelegt werden:
Wird vom Nutzer beim Erstellen oder Aktualisieren des Secrets bereitgestellt.
Wenn
rotation_period
angegeben ist, sendet Secret Manager nach der verstrichenenrotation_period
eineSECRET_ROTATE
-Nachricht.next_rotation_time
wird entsprechend der neuen nächsten Rotationszeit aktualisiert.
Sie müssen einen Pub/Sub-Abonnenten konfigurieren, um die SECRET_ROTATE
-Nachrichten zu empfangen und zu bearbeiten. Implementieren Sie bei Bedarf zusätzliche Workflows, z. B. zum Hinzufügen einer neuen Secret-Version und zum Auslösen der Anwendungsbereitstellung.
Notes
Rotationsrichtlinien können nur in der Secret Manager
v1
API und der Google Cloud CLI verwaltet werden.Pub/Sub-Themen müssen für das Secret konfiguriert werden. Informationen zum Erstellen eines Pub/Sub-Themas und -Abos finden Sie unter Pub/Sub-Kurzanleitung. Informationen zum Konfigurieren von Themen für ein Secret finden Sie unter Ereignisbenachrichtigungen für Secret Manager.
next_rotation_time
muss festgelegt werden, wennrotation_period
angegeben ist.next_rotation_time
darf nicht auf weniger als fünf Minuten in der Zukunft festgelegt werden.rotation_period
darf nicht kürzer als eine Stunde sein. Eine Anleitung zur Formatierung von Zeitstempeln finden Sie in der Referenz zu gcloud datetime.Zustellungsfehler: Secret Manager wiederholt fehlgeschlagene Sendeversuche automatisch. Secret Manager gibt keine Garantien in Bezug auf die Übermittlung, falls bei der Secret- oder Themenkonfiguration, Berechtigungen oder Kontingenten eine falsche Konfiguration vorliegt.
In-Flight-Rotationen müssen abgeschlossen sein, bevor eine andere Rotation gestartet werden kann, um zu verhindern, dass gleichzeitige Rotationen unerwartetes Verhalten verursachen. Benachrichtigungen gelten als in Bearbeitung, während Secret Manager versucht, die Nachricht an Pub/Sub zu senden. Geplante Rotationen werden übersprungen, wenn eine Rotation aktiv ist. Secret Manager wiederholt fehlgeschlagene Sendeversuche automatisch bis zu sieben Tage lang. Danach wird die Rotation abgebrochen.
Beispiele
Rotation für ein Secret konfigurieren
Erstellen Sie ein Secret mit einer next_rotation_time
, das ab dem 1. Juni 2021 alle 30 Tage rotiert wird:
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
Rotationseinstellungen eines Secrets aktualisieren
Gültige updateMask-Pfade für die Rotation sind: rotation
, rotation.next_rotation_time
, rotation.rotation_period
.
Aktualisieren Sie den next_rotation_time
eines Secrets:
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
Rotation für ein Secret deaktivieren
Entfernen Sie den next_rotation_time
eines Secrets:
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
Entfernen Sie den Rotationsplan eines Secrets. Dadurch werden sowohl next_rotation_time
als auch rotation_period
entfernt.
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
Nächste Schritte
Vom Kunden verwaltete Verschlüsselungsschlüssel (CMEK) für Secret Manager aktivieren
ETags für eine optimistische Nebenläufigkeitserkennung verwenden