Ablaufdatum für ein Secret festlegen

Auf dieser Seite wird beschrieben, wie Sie ein Ablaufdatum für ein neues oder vorhandenes Secret festlegen, das Ablaufdatum eines vorhandenen Secrets ändern und ein zuvor festgelegtes Ablaufdatum aus einem Secret entfernen.

Ü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 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.

Um den Zugriff auf Secrets effektiv zu verwalten, legen Sie eine zeitbasierte Bedingung für die gewährten Berechtigungen fest.

  • Ablaufdatum festlegen: Berechtigungen sollten kurz vor dem Ablauf des Secrets selbst ablaufen. So können Sie Workflows oder Prozesse identifizieren, in denen das Secret möglicherweise noch unerwartet verwendet wird.

  • Auf Störungen achten: Wenn Workflows nach dem Widerrufen von Berechtigungen nicht mehr funktionieren, können Sie den Zugriff schnell wiederherstellen, um die Auswirkungen zu minimieren.

  • Bei Bedarf anpassen: Wenn Sie mehr Zeit benötigen, können Sie das Ablaufdatum des Secrets verlängern oder es sogar ganz entfernen, wenn es nicht mehr benötigt wird.

Dieser Ansatz trägt dazu bei, dass der Zugriff auf Secrets streng kontrolliert wird und nur so lange wie nötig verfügbar ist. Dadurch wird das Risiko eines unbefugten Zugriffs oder Missbrauchs verringert.

Stellen Sie sich beispielsweise ein Szenario vor, in dem ein Dienstkonto 30 Tage lang täglich auf ein Secret zugreifen muss. Sie können das Ablaufdatum des Secrets auf 60 Tage nach der Erstellung festlegen. So wird ein Pufferzeitraum nach der erwarteten Nutzung geschaffen. Sie können auch eine bedingte IAM-Bindung einrichten, 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 die Berechtigung verweigert. Alle Workflows, die auf diesem Secret basieren, funktionieren nicht mehr. Ein Administrator kann den Zugriff schnell wiederherstellen, indem er dem Dienstkonto wieder die Rolle „Zugriffsperson für Secret“ zuweist. So haben sie Zeit, zu untersuchen, warum das Secret nach dem erwarteten Zeitraum von 30 Tagen noch benötigt wird, da das Secret selbst weitere 15 Tage lang nicht gelöscht wird.

Darüber hinaus ist es möglich, Benachrichtigungen basierend auf Logwarnungen zu Secrets zu erstellen, die bald ablaufen. Weitere Informationen finden Sie in diesem Dokument im Abschnitt Ablaufprotokollierung.

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.

Ablaufdatum eines Secrets festlegen

Sie können ein Ablaufdatum und eine Ablaufzeit für ein Secret über die Google Cloud Console, die Google Cloud CLI oder die Secret Manager API festlegen.

Console

  1. Rufen Sie in der Google Cloud Console die Seite Secret Manager auf.

    Zu Secret Manager

  2. Klicken Sie auf der Seite Secret Manager auf Secret erstellen.

  3. Geben Sie auf der Seite Secret erstellen im Feld Name einen Namen für das Secret ein.

  4. Geben Sie einen Wert für das Secret ein (z. B. abcd1234). Sie können auch eine Textdatei mit dem Secret-Wert über die Option Datei hochladen hochladen. Durch diese Aktion wird die Secret-Version automatisch erstellt.

  5. Gehen Sie zu Ablauf und wählen Sie das Kästchen Ablaufdatum festlegen aus.

  6. Geben Sie das Ablaufdatum und die Uhrzeit im Format Monat/Tag/Jahr, Stunde:Minute AM/PM ein, z. B. 7/31/20, 1:00 AM. Sie können auch die Datums- und Uhrzeitauswahl verwenden, um das Ablaufdatum und die Ablaufzeit einzugeben.

  7. Klicken Sie auf Secret erstellen.

gcloud

Ablaufendes Secret mit einem Zeitstempel erstellen

Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:

  • SECRET_ID: die ID des Secrets oder die voll qualifizierte Kennzeichnung für das Secret
  • TIMESTAMP: die Ablaufzeit im RFC 3339-Format, z. B. 2100-01-01T09:00:00-05:00

Führen Sie folgenden Befehl aus:

Linux, macOS oder Cloud Shell

gcloud secrets create SECRET_ID \
    --replication-policy "automatic" \
    --expire-time "TIMESTAMP"

Windows (PowerShell)

gcloud secrets create SECRET_ID `
    --replication-policy "automatic" `
    --expire-time "TIMESTAMP"

Windows (cmd.exe)

gcloud secrets create SECRET_ID ^
    --replication-policy "automatic" ^
    --expire-time "TIMESTAMP"

Ablaufendes Secret mit einer Dauer erstellen

Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:

  • SECRET_ID: die ID des Secrets oder die voll qualifizierte Kennzeichnung für das Secret
  • DURATION: Die Ablaufdauer in Sekunden, z. B. 86400s

Führen Sie folgenden Befehl aus:

Linux, macOS oder Cloud Shell

gcloud secrets create SECRET_ID \
  --replication-policy "automatic" \
  --ttl "DURATION"

Windows (PowerShell)

gcloud secrets create SECRET_ID `
  --replication-policy "automatic" `
  --ttl "DURATION"

Windows (cmd.exe)

gcloud secrets create SECRET_ID ^
  --replication-policy "automatic" ^
  --ttl "DURATION"

REST

Ablaufendes Secret mit einem Zeitstempel erstellen

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: die Google Cloud Projekt-ID
  • SECRET_ID: die ID des Secrets oder die voll qualifizierte Kennzeichnung für das Secret
  • TIMESTAMP: die Ablaufzeit im RFC 3339-Format, z. B. 2100-01-01T09:00:00-05:00

HTTP-Methode und URL:

POST https://secretmanager.googleapis.com/v1/projects/$PROJECT_ID/secrets?secretId=$SECRET_ID

JSON-Text der Anfrage:

{
  "replication": {"automatic": {}},
  "expire_time": "TIMESTAMP"
}

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.googleapis.com/v1/projects/$PROJECT_ID/secrets?secretId=$SECRET_ID"

PowerShell

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.googleapis.com/v1/projects/$PROJECT_ID/secrets?secretId=$SECRET_ID" | Select-Object -Expand Content

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID",
  "createTime": "2024-09-04T03:58:38.200877Z",
  "expireTime": "2024-09-04T09:25:39Z",
  "etag": "\"162143305d282d\""
}

Ablaufendes Secret mit einer Dauer erstellen

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: die Google Cloud Projekt-ID
  • SECRET_ID: die ID des Secrets oder die voll qualifizierte Kennzeichnung für das Secret
  • DURATION: Die Ablaufdauer in Sekunden, z. B. 86400s

HTTP-Methode und URL:

POST https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets?secretId=SECRET_ID

JSON-Text der Anfrage:

{
  "replication": {"automatic": {}},
  "ttl": "DURATION"
}

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets?secretId=SECRET_ID"

PowerShell

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets?secretId=SECRET_ID" | Select-Object -Expand Content

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID",
  "createTime": "2024-09-04T03:58:38.200877Z",
  "expireTime": "2024-09-04T09:25:39Z",
  "etag": "\"162143305d282d\""
}

Ablaufdatum eines Secrets aktualisieren

Verwenden Sie eine der folgenden Methoden, um das Ablaufdatum und die Ablaufzeit des Secrets zu aktualisieren:

Console

  1. Rufen Sie in der Google Cloud Console die Seite Secret Manager auf.

    Zu Secret Manager

  2. Wenn Sie ein Secret bearbeiten möchten, suchen Sie es in der Liste und klicken Sie dann auf das Menü Aktionen, das mit diesem Secret verknüpft ist. Klicken Sie im Menü Aktionen auf Bearbeiten.

  3. Gehen Sie zum Abschnitt Ablauf. Aktualisieren Sie das Ablaufdatum und die Ablaufzeit und klicken Sie auf Secret aktualisieren.

gcloud

Ablauf eines Secrets mit einem Zeitstempel aktualisieren

Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:

  • SECRET_ID: die ID des Secrets oder die voll qualifizierte Kennzeichnung für das Secret
  • TIMESTAMP: die Ablaufzeit im RFC 3339-Format, z. B. 2100-01-01T09:00:00-05:00

Führen Sie folgenden Befehl aus:

Linux, macOS oder Cloud Shell

gcloud secrets update SECRET_ID \
  --expire-time "TIMESTAMP"

Windows (PowerShell)

gcloud secrets update SECRET_ID `
  --expire-time "TIMESTAMP"

Windows (cmd.exe)

gcloud secrets update SECRET_ID ^
  --expire-time "TIMESTAMP"

Ablauf eines Secrets mit einer Dauer aktualisieren

Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:

  • SECRET_ID: die ID des Secrets oder die voll qualifizierte Kennzeichnung für das Secret
  • DURATION: Die Ablaufdauer in Sekunden, z. B. 86400s

Führen Sie folgenden Befehl aus:

Linux, macOS oder Cloud Shell

gcloud secrets update SECRET_ID \
    --ttl "DURATION"

Windows (PowerShell)

gcloud secrets update SECRET_ID `
    --ttl "DURATION"

Windows (cmd.exe)

gcloud secrets update SECRET_ID ^
    --ttl "DURATION"

REST

Ablauf eines Secrets mit einem Zeitstempel aktualisieren

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: die Google Cloud Projekt-ID
  • SECRET_ID: die ID des Secrets oder die voll qualifizierte Kennzeichnung für das Secret
  • TOKEN: Ihr eigenes Oauth2.0-Zugriffstoken
  • TIMESTAMP: die Ablaufzeit im RFC 3339-Format, z. B. 2100-01-01T09:00:00-05:00

HTTP-Methode und URL:

PATCH https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=expire_time

JSON-Text der Anfrage:

{"expire_time": "TIMESTAMP"}

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

curl -X PATCH \
-H "Authorization: Bearer TOKEN" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=expire_time"

PowerShell

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

$headers = @{ "Authorization" = "Bearer TOKEN" }

Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=expire_time" | Select-Object -Expand Content

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID",
  "createTime": "2024-09-04T03:58:38.200877Z",
  "expireTime": "2024-09-04T09:25:39Z",
  "etag": "\"162143305d282d\""
}

Ablauf eines Secrets mit einer Dauer aktualisieren

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: die Google Cloud Projekt-ID
  • SECRET_ID: die ID des Secrets oder die voll qualifizierte Kennzeichnung für das Secret
  • DURATION: Die Ablaufdauer in Sekunden, z. B. 86400s

HTTP-Methode und URL:

PATCH https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=ttl

JSON-Text der Anfrage:

{"ttl": "DURATION"}

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

curl -X PATCH \
-H "Authorization: Bearer TOKEN" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=ttl"

PowerShell

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

$headers = @{ "Authorization" = "Bearer TOKEN" }

Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=ttl" | Select-Object -Expand Content

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID",
  "createTime": "2024-09-04T03:58:38.200877Z",
  "expireTime": "2024-09-04T09:25:39Z",
  "etag": "\"162143305d282d\""
}

Ablaufdatum eines Secrets entfernen

Verwenden Sie eine der folgenden Methoden, um das Ablaufdatum und die Ablaufzeit des Secrets zu entfernen:

Console

  1. Rufen Sie in der Google Cloud Console die Seite Secret Manager auf.

    Zu Secret Manager

  2. Wenn Sie ein Secret bearbeiten möchten, suchen Sie es in der Liste und klicken Sie dann auf das Menü Aktionen, das mit diesem Secret verknüpft ist. Klicken Sie im Menü Aktionen auf Bearbeiten.

  3. Gehen Sie zum Abschnitt Ablauf. Entfernen Sie das Häkchen neben Ablaufdatum festlegen und klicken Sie dann auf Secret aktualisieren.

gcloud

Ersetzen Sie folgende Werte, bevor sie einen der Befehlsdaten verwenden:

  • SECRET_ID: die ID des Secrets oder die voll qualifizierte Kennzeichnung für das Secret

Führen Sie folgenden Befehl aus:

Linux, macOS oder Cloud Shell

gcloud secrets update SECRET_ID \
  --remove-expiration

Windows (PowerShell)

gcloud secrets update SECRET_ID `
  --remove-expiration

Windows (cmd.exe)

gcloud secrets update SECRET_ID ^
  --remove-expiration

REST

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • PROJECT_ID: die Google Cloud Projekt-ID
  • SECRET_ID: die ID des Secrets oder die voll qualifizierte Kennzeichnung für das Secret
  • TOKEN: Ihr eigenes Oauth2.0-Zugriffstoken

HTTP-Methode und URL:

PATCH https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=expire_time

JSON-Text der Anfrage:

{}

Wenn Sie die Anfrage senden möchten, wählen Sie eine der folgenden Optionen aus:

curl

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

curl -X PATCH \
-H "Authorization: Bearer TOKEN" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=expire_time"

PowerShell

Speichern Sie den Anfragetext in einer Datei mit dem Namen request.json und führen Sie den folgenden Befehl aus:

$headers = @{ "Authorization" = "Bearer TOKEN" }

Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=expire_time" | Select-Object -Expand Content

Sie sollten eine JSON-Antwort ähnlich wie diese erhalten:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID",
  "createTime": "2024-09-04T03:58:38.200877Z",
  "etag": "\"162143305d282d\""
}

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