Rotationspläne erstellen

Mit Secret Manager können Sie regelmäßige Rotationen Ihrer Secrets planen. Dazu sendet Secret Manager Benachrichtigungen an Pub/Sub-Themen, die mit Ihren Secrets verknüpft sind, basierend auf der von Ihnen angegebenen Rotationshäufigkeit und -zeit. Auf dieser Seite wird beschrieben, wie Sie diese Rotationspläne einrichten.

Funktionsweise von Benachrichtigungen zur Schlüsselrotation

Secret Manager löst eine SECRET_ROTATE-Nachricht an die angegebenen Pub/Sub-Themen an der next_rotation_time des Secrets aus. Es gibt zwei Möglichkeiten, diesen Zeitstempel zu ermitteln:

  1. Benutzerdefiniert: Sie können die next_rotation_time beim Erstellen oder Aktualisieren des Secrets angeben.

  2. Rotationszeitraum: Wenn Sie eine rotation_period definieren, berechnet Secret Manager automatisch die next_rotation_time. Secret Manager sendet die SECRET_ROTATE-Nachricht nach Ablauf der angegebenen rotation_period und aktualisiert dann die next_rotation_time, um die nächste Rotation zu planen.

Sie müssen einen Pub/Sub-Abonnenten konfigurieren, um die SECRET_ROTATE-Nachrichten zu empfangen und darauf zu reagieren. Möglicherweise müssen Sie auch zusätzliche Workflows als Reaktion auf diese Benachrichtigungen einrichten, z. B. eine neue Version des Secrets erstellen und die Änderungen in Ihren Anwendungen bereitstellen.

Anforderungen und Überlegungen für Zeitpläne für die Geheimschlüsselrotation

  • Pub/Sub-Themen müssen für das Secret konfiguriert werden. Informationen zum Erstellen eines Pub/Sub-Themas und -Abos finden Sie in der 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, wenn rotation_period angegeben ist.

  • next_rotation_time darf nicht auf weniger als fünf Minuten in der Zukunft festgelegt werden.

  • Die rotation_period darf nicht kürzer als eine Stunde sein. Eine Anleitung zur Formatierung von Zeitstempeln finden Sie in der Referenz zu „datetime“ in Google Cloud.

  • Secret Manager wiederholt fehlgeschlagene Versuche, Nachrichten zu senden, automatisch. Wir können jedoch nicht garantieren, dass die Nachrichten zugestellt werden, wenn es Fehlkonfigurationen im Zusammenhang mit dem Secret, der Themenkonfiguration, Berechtigungen oder Kontingenten gibt.

  • Aktive Rotationen müssen abgeschlossen sein, bevor eine andere Rotation gestartet werden kann, um zu verhindern, dass gleichzeitige Rotationen zu unerwartetem Verhalten führen. Benachrichtigungen gelten als aktiv, 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 Versuche, eine Nachricht zu senden, automatisch bis zu sieben Tage lang. Danach wird die Rotation abgebrochen.

Rotation für ein Secret konfigurieren

Sie können einen Rotationsplan mit der Google Cloud Console, der Google Cloud CLI oder der Secret Manager API konfigurieren.

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 den Tab Regionale Secrets und dann auf Regionales Secret erstellen.

  3. Geben Sie auf der Seite Regionales 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. Dadurch wird die Secret-Version automatisch erstellt.

  5. Wählen Sie in der Liste Region den Speicherort für das regionale Secret aus.

  6. Klicken Sie im Bereich Rotation das Kästchen Rotationszeitraum festlegen an.

  7. Wählen Sie in der Liste Rotationszeitraum eine der Standardoptionen aus oder wählen Sie Benutzerdefiniert aus, um einen eigenen Rotationszeitplan zu konfigurieren.

  8. Geben Sie im Feld Ab dem das Startdatum und die Startzeit des Rotationszeitraums ein.

  9. Klicken Sie auf Secret erstellen.

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.
  • LOCATION: den Speicherort des Geheimnisses in Google Cloud.
  • NEXT_ROTATION_TIME: der Zeitstempel, zu dem die erste Rotation abgeschlossen werden soll, im ISO 8601-Format, z. B. 2021-06-01T09:00:00Z.
  • ROTATION_PERIOD: Intervall in Sekunden, nach dem der Schlüssel rotiert wird. Wenn Sie den Schlüssel beispielsweise alle 259.200 Sekunden rotieren möchten, legen Sie den Wert 2592000s fest.
  • FULL_TOPIC_NAME: der vollständige Name Ihres Pub/Sub-Themas im Format projects/your-project-id/topics/your-topic-name.

Führen Sie folgenden Befehl aus:

Linux, macOS oder Cloud Shell

gcloud secrets create SECRET_ID --location=LOCATION \
  --next-rotation-time="NEXT_ROTATION_TIME" \
  --rotation-period="ROTATION_PERIOD" \
  --topics="FULL_TOPIC_NAME"

Windows (PowerShell)

gcloud secrets create SECRET_ID --location=LOCATION `
  --next-rotation-time="NEXT_ROTATION_TIME" `
  --rotation-period="ROTATION_PERIOD" `
  --topics="FULL_TOPIC_NAME"

Windows (cmd.exe)

gcloud secrets create SECRET_ID --location=LOCATION ^
  --next-rotation-time="NEXT_ROTATION_TIME" ^
  --rotation-period="ROTATION_PERIOD" ^
  --topics="FULL_TOPIC_NAME"

REST

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • LOCATION: den Speicherort des Geheimnisses in Google Cloud
  • PROJECT_ID: die Google Cloud-Projekt-ID
  • SECRET_ID: die ID des Secrets oder die voll qualifizierte Kennzeichnung für das Secret
  • TOPIC_NAME: der Name des Themas

HTTP-Methode und URL:

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

JSON-Text der Anfrage:

{
  "topics": {"name" : "projects/$PROJECT_ID/topics/$TOPIC_NAME"},
  "rotation":
    {
      "next_rotation_time": "2021-06-01T09:00:00Z",
      "rotation_period" : '2592000s'
    },
}

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.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/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.LOCATION.rep.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/secrets?secretId=SECRET_ID" | Select-Object -Expand Content

Sie sollten in etwa folgende JSON-Antwort erhalten:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID",
  "createTime": "2024-09-04T04:06:00.660420Z",
  "topics": [
    {
      "name": "projects/PROJECT_ID/topics/TOPIC_NAME"
    }
  ],
  "etag": "\"1621434abc8dc4\"",
  "rotation": {
    "nextRotationTime": "2024-09-10T09:00:00Z",
    "rotationPeriod": "2592000s"
  }
}

Rotationseinstellungen eines Secrets aktualisieren

Sie können die folgenden Rotationseinstellungen aktualisieren, wenn Sie eine Aktualisierungsanfrage stellen:

  • rotation: Dies bezieht sich auf die gesamte Rotationskonfiguration des Secrets.

  • rotation.next_rotation_time: Diese Option richtet sich speziell an den Zeitstempel, der angibt, wann die nächste Rotation erfolgen könnte.

  • rotation.rotation_period: Hiermit wird die Dauer zwischen den einzelnen Rotationen angegeben.

Verwenden Sie eine der folgenden Methoden, um die Rotationseinstellungen des Secrets zu aktualisieren:

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 den Tab Regionale Secrets.

  3. Suchen Sie das Secret, das Sie bearbeiten möchten, und klicken Sie auf das zugehörige Menü Aktionen. Klicken Sie im Menü Aktionen auf Bearbeiten.

  4. Gehen Sie zum Abschnitt Rotation. Aktualisieren Sie bei Bedarf die Rotationsdauer und klicken Sie 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.
  • LOCATION: den Speicherort des Geheimnisses in Google Cloud.
  • NEXT_ROTATION_TIME: der Zeitstempel, zu dem die erste Rotation abgeschlossen werden soll, im ISO 8601-Format, z. B. 2021-06-01T09:00:00Z.

Führen Sie folgenden Befehl aus:

Linux, macOS oder Cloud Shell

gcloud secrets update SECRET_ID --location=LOCATION \
  --next-rotation-time="NEXT_ROTATION_TIME"

Windows (PowerShell)

gcloud secrets update SECRET_ID --location=LOCATION `
  --next-rotation-time="NEXT_ROTATION_TIME"

Windows (cmd.exe)

gcloud secrets update SECRET_ID --location=LOCATION ^
  --next-rotation-time="NEXT_ROTATION_TIME"

REST

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • LOCATION: den Speicherort des Geheimnisses in Google Cloud.
  • PROJECT_ID: die Google Cloud-Projekt-ID.
  • SECRET_ID: die ID des Secrets oder die voll qualifizierte Kennzeichnung für das Secret.
  • NEXT_ROTATION_TIME: der Zeitstempel, zu dem die erste Rotation abgeschlossen werden soll, im ISO 8601-Format, z. B. 2021-06-01T09:00:00Z.

HTTP-Methode und URL:

PATCH https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/LOCATION/secrets/$SECRET_ID?updateMask=rotation.next_rotation_time

JSON-Text der Anfrage:

{
  "rotation": {"next_rotation_time": "NEXT_ROTATION_TIME"}
}

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 $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/LOCATION/secrets/$SECRET_ID?updateMask=rotation.next_rotation_time"

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 PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/LOCATION/secrets/$SECRET_ID?updateMask=rotation.next_rotation_time" | Select-Object -Expand Content

Sie sollten in etwa folgende JSON-Antwort erhalten:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID",
  "createTime": "2024-09-04T04:06:00.660420Z",
  "topics": [
    {
      "name": "projects/PROJECT_ID/topics/TOPIC_NAME"
    }
  ],
  "etag": "\"1621434abc8dc4\"",
  "rotation": {
    "nextRotationTime": "2024-09-10T09:00:00Z",
    "rotationPeriod": "2592000s"
  }
}

Rotation für ein Secret deaktivieren

Sie haben folgende Möglichkeiten, die Secret-Rotation zu deaktivieren:

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 den Tab Regionale Secrets.

  3. Suchen Sie das Secret, das Sie bearbeiten möchten, und klicken Sie auf das zugehörige Menü Aktionen. Klicken Sie im Menü Aktionen auf Bearbeiten.

  4. Gehen Sie zum Abschnitt Rotation. Entfernen Sie das Häkchen aus dem Kästchen Rotationszeitraum festlegen und klicken Sie dann auf Secret aktualisieren.

gcloud

next_rotation_time eines Secrets entfernen

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
  • LOCATION: den Speicherort des Geheimnisses in Google Cloud

Führen Sie folgenden Befehl aus:

Linux, macOS oder Cloud Shell

gcloud secrets update SECRET_ID --location=LOCATION \
    --remove-next-rotation-time

Windows (PowerShell)

gcloud secrets update SECRET_ID --location=LOCATION `
    --remove-next-rotation-time

Windows (cmd.exe)

gcloud secrets update SECRET_ID --location=LOCATION ^
    --remove-next-rotation-time

So entfernen Sie den Rotationsplan eines Secrets. Dadurch werden sowohl die next_rotation_time als auch die rotation_period entfernt.

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
  • LOCATION: den Speicherort des Geheimnisses in Google Cloud

Führen Sie folgenden Befehl aus:

Linux, macOS oder Cloud Shell

gcloud secrets update SECRET_ID --location=LOCATION \
    --remove-rotation-schedule

Windows (PowerShell)

gcloud secrets update SECRET_ID --location=LOCATION `
    --remove-rotation-schedule

Windows (cmd.exe)

gcloud secrets update SECRET_ID --location=LOCATION ^
    --remove-rotation-schedule

REST

Nächste Rotationszeit eines Secrets entfernen

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • LOCATION: den Speicherort des Geheimnisses in Google Cloud
  • PROJECT_ID: die Google Cloud-Projekt-ID
  • SECRET_ID: die ID des Secrets oder die voll qualifizierte Kennzeichnung für das Secret

HTTP-Methode und URL:

PATCH https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/LOCATION/secrets/$SECRET_ID?updateMask=rotation.next_rotation_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 $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/LOCATION/secrets/$SECRET_ID?updateMask=rotation.next_rotation_time"

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 PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/LOCATION/secrets/$SECRET_ID?updateMask=rotation.next_rotation_time" | Select-Object -Expand Content

Sie sollten in etwa folgende JSON-Antwort erhalten:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID",
  "createTime": "2024-09-04T04:06:00.660420Z",
  "topics": [
    {
      "name": "projects/PROJECT_ID/topics/TOPIC_NAME"
    }
  ],
  "etag": "\"16214530fa18d3\""
}

So entfernen Sie den Rotationsplan eines Secrets. Dadurch werden sowohl die nächste Rotationszeit als auch der Rotationszeitraum entfernt.

Ersetzen Sie diese Werte in den folgenden Anfragedaten:

  • LOCATION: den Speicherort des Geheimnisses in Google Cloud
  • PROJECT_ID: die Google Cloud-Projekt-ID
  • SECRET_ID: die ID des Secrets oder die voll qualifizierte Kennzeichnung für das Secret

HTTP-Methode und URL:

PATCH https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/LOCATION/secrets/$SECRET_ID?updateMask=rotation

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 $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/LOCATION/secrets/$SECRET_ID?updateMask=rotation"

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 PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.LOCATION.rep.googleapis.com/v1/projects/$PROJECT_ID/locations/LOCATION/secrets/$SECRET_ID?updateMask=rotation" | Select-Object -Expand Content

Sie sollten in etwa folgende JSON-Antwort erhalten:

{
  "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID",
  "createTime": "2024-09-04T04:06:00.660420Z",
  "topics": [
    {
      "name": "projects/PROJECT_ID/topics/TOPIC_NAME"
    }
  ],
  "etag": "\"16214530fa18d3\""
}

Nächste Schritte