In diesem Thema wird gezeigt, wie Sie ein Ablaufdatum für ein Secret in Secret Manager festlegen. Außerdem wird beschrieben, wie das Ablaufdatum für ein Secret aktualisiert oder entfernt wird.
Übersicht
Standardmäßig sind in Secret Manager gespeicherte Secrets vorhanden, bis sie von einem Nutzer gelöscht werden. Wenn ein Secret nur für eine bekannte, begrenzte Zeit gespeichert werden soll, können Sie eine Ablaufzeit anhängen. Nach der konfigurierten Ablaufzeit eines Secrets wird es automatisch gelöscht.
Wenn keine Notwendigkeit zum Löschen des Secrets besteht, können Sie IAM-Bedingungen oder den Versionsstatus "Deaktiviert" verwenden, um den Zugriff auf sichere Weise zu widerrufen.
Sie können eine Ablaufzeit entweder als Zeitstempel oder als Dauer eingeben. Beim Abrufen von Secret-Metadaten wird die Ablaufzeit immer als Zeitstempel zurückgegeben, unabhängig davon, wie sie angegeben wurde.
Ein Ablauf kann jederzeit einem Secret hinzugefügt, aktualisiert oder entfernt werden.
Beschränkungen
Der Ablauf von Secrets ist nur in der Secret Manager
v1
API und über das gcloud-Befehlszeilentool verfügbar.Der Ablaufzeitpunkt eines Secrets darf nicht weniger als 60 Sekunden oder nicht mehr als 100 Jahre entfernt sein.
Ablaufende Secrets sicher verwenden
Wenn ein Secret in Secret Manager abläuft, wird es unwiderruflich gelöscht. Die beste Möglichkeit zum Erkennen von Secrets, die bald ablaufen, ist die Verwendung von IAM-Bedingungen, um vor dem Ablauf Berechtigungen aus den Konten zu entfernen, die das Secret verwenden.
Hängen Sie dazu, wenn Sie Berechtigungen für ein Secret gewähren, eine zeitbasierte Bedingung an die Bindung an. Die Bindung sollte ablaufen, wenn das Secret voraussichtlich nicht mehr verwendet wird, aber früh genug, sodass die entfernten Berechtigungen bemerkt werden, bevor das Secret abläuft. Wenn Workflows, von denen man glaubte, dass sie das Secret nicht mehr verwenden, nach dem Widerrufen von Berechtigungen nicht mehr funktionieren, können Berechtigungen wieder hinzugefügt werden, um das Problem schnell zu beheben. Wenn mehr Zeit benötigt wird, kann der Secret-Ablauf aktualisiert oder sogar entfernt werden.
Angenommen, ein Dienstkonto soll planmäßig über einen Zeitraum von 30 Tagen täglich auf ein Secret zugreifen. Der Secret-Ablauf kann dann auf 60 Tage ab der Erstellung festgelegt werden und eine bedingte IAM-Bindung kann verwendet werden, um dem Dienstkonto für 45 Tage die Rolle "Zugriffsperson für Secret" zuzuweisen. Wenn das Dienstkonto versucht, nach 45 Tagen auf das Secret zuzugreifen, wird der Fehler "Berechtigung verweigert" zurückgegeben und die Workflows, die das Secret erfordern, würden fehlschlagen. Ein Administrator kann dem Dienstkonto dann wieder die Rolle "Zugriffsperson für Secret" zuweisen, um das Problem während der Untersuchung schnell zu beheben, da das Secret selbst weitere 15 Tage lang nicht gelöscht werden würde.
Darüber hinaus ist es möglich, Benachrichtigungen basierend auf Logwarnungen zu Secrets zu erstellen, die bald ablaufen. Weitere Informationen finden Sie unter Ablauf-Logging.
Zeitstempel und Dauer angeben
Zeitstempelwerte müssen als RFC 3339 formatiert sein, z. B.
2100-01-01T09:00:00-05:00
.Werte für die Dauer müssen als Anzahl von Sekunden mit dem Suffix "s" formatiert werden, z. B.
86400s
.
Ablaufendes Secret erstellen
So erstellen Sie ein ablaufendes Secret mit einem Zeitstempel:
gcloud
Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, installieren oder aktualisieren Sie zuerst die Google Cloud CLI auf Version 378.0.0 oder höher. In Compute Engine oder GKE müssen Sie sich mit dem Bereich cloud-platform authentifizieren.
gcloud secrets create "SECRET_ID" \
--replication-policy "automatic" \
--expire-time "TIMESTAMP"
API
In diesen Beispielen wird curl verwendet, um die Verwendung mit der API zu demonstrieren. Sie können Zugriffstokens mit gcloud auth print-access-token generieren. In Compute Engine oder GKE müssen Sie sich mit dem Bereich cloud-platform authentifizieren.
curl "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets?secretId=SECRET_ID" \
--request "POST" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--data-binary @- <<EOF
{
"replication": {"automatic": {}},
"expire_time": "TIMESTAMP"
}
EOF
So erstellen Sie ein ablaufendes Secret mit einer Dauer:
gcloud
Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, installieren oder aktualisieren Sie zuerst die Google Cloud CLI auf Version 378.0.0 oder höher. In Compute Engine oder GKE müssen Sie sich mit dem Bereich cloud-platform authentifizieren.
gcloud secrets create "SECRET_ID" \
--replication-policy "automatic" \
--ttl "DURATION"
API
In diesen Beispielen wird curl verwendet, um die Verwendung mit der API zu demonstrieren. Sie können Zugriffstokens mit gcloud auth print-access-token generieren. In Compute Engine oder GKE müssen Sie sich mit dem Bereich cloud-platform authentifizieren.
curl "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets?secretId=SECRET_ID" \
--request "POST" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--data-binary @- <<EOF
{
"replication": {"automatic": {}},
"ttl": "DURATION"
}
EOF
Ablauf eines Secrets aktualisieren
Auf jedes Secret kann ein neuer Ablauf angewendet werden, unabhängig davon, ob es bereits einen hat. Für jedes Secret kann jeweils nur ein Ablauf konfiguriert werden. Das Aktualisieren des Ablaufs eines Secrets, das bereits einen hat, überschreibt den vorhandenen Ablauf.
So aktualisieren Sie den Ablauf eines Secrets mithilfe eines Zeitstempels:
gcloud
Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, installieren oder aktualisieren Sie zuerst die Google Cloud CLI auf Version 378.0.0 oder höher. In Compute Engine oder GKE müssen Sie sich mit dem Bereich cloud-platform authentifizieren.
gcloud secrets update "SECRET_ID" \
--expire-time "TIMESTAMP"
API
In diesen Beispielen wird curl verwendet, um die Verwendung mit der API zu demonstrieren. Sie können Zugriffstokens mit gcloud auth print-access-token generieren. In Compute Engine oder GKE müssen Sie sich mit dem Bereich cloud-platform authentifizieren.
curl "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=expire_time" \
--request "PATCH" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--data-binary @- <<EOF
{
"expire_time": "TIMESTAMP"
}
EOF
So aktualisieren Sie die Ablaufzeit eines Secrets mithilfe einer Dauer:
gcloud
Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, installieren oder aktualisieren Sie zuerst die Google Cloud CLI auf Version 378.0.0 oder höher. In Compute Engine oder GKE müssen Sie sich mit dem Bereich cloud-platform authentifizieren.
gcloud secrets update "SECRET_ID" \
--ttl "DURATION"
API
In diesen Beispielen wird curl verwendet, um die Verwendung mit der API zu demonstrieren. Sie können Zugriffstokens mit gcloud auth print-access-token generieren. In Compute Engine oder GKE müssen Sie sich mit dem Bereich cloud-platform authentifizieren.
curl "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=ttl" \
--request "PATCH" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--data-binary @- <<EOF
{
"ttl": "DURATION"
}
EOF
Ablauf eines Secrets entfernen
gcloud
Wenn Sie Secret Manager in der Befehlszeile verwenden möchten, installieren oder aktualisieren Sie zuerst die Google Cloud CLI auf Version 378.0.0 oder höher. In Compute Engine oder GKE müssen Sie sich mit dem Bereich cloud-platform authentifizieren.
gcloud secrets update "SECRET_ID" \
--remove-expiration
API
In diesen Beispielen wird curl verwendet, um die Verwendung mit der API zu demonstrieren. Sie können Zugriffstokens mit gcloud auth print-access-token generieren. In Compute Engine oder GKE müssen Sie sich mit dem Bereich cloud-platform authentifizieren.
Wenn Sie expire_time
oder ttl
in updateMask
aufnehmen, aber für beides keine Werte angeben, wird der Ablauf entfernt.
curl "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=ttl" \
--request "PATCH" \
--header "Content-Type: application/json" \
--header "Authorization: Bearer ACCESS_TOKEN" \
--data-binary '{}'
Ablauf-Logging
Cloud-Audit-Logs werden nicht erzeugt, wenn ein Secret automatisch abläuft.
Stattdessen schreibt Secret Manager Logs in bestimmten Intervallen bis zum Ablauf eines Secrets in die Secret Manager-Secret
-Ressource.
Logzeit | Secret-Ereignistyp |
---|---|
30 Tage vor Ablauf | EXPIRES_IN_30_DAYS |
7 Tage vor Ablauf | EXPIRES_IN_7_DAYS |
1 Tag vor Ablauf | EXPIRES_IN_1_DAY |
6 Stunden vor Ablauf | EXPIRES_IN_6_HOURS |
1 Stunde vor Ablauf | EXPIRES_IN_1_HOUR |
Beim Ablauf | EXPIRED |
Informationen zum Aufrufen dieser Logs finden Sie in der Kurzanleitung zum Logging. Sie können logbasierte Messwerte erstellen und damit Benachrichtigungen für bevorstehende Ablaufzeiten erstellen.
Nächste Schritte
- Weitere Informationen zum Einrichten von Rotationsplänen für Secrets
- Informationen zum Aktivieren von vom Kunden verwalteten Verschlüsselungsschlüsseln (CMEK) für Secret Manager