Rotationspläne in Secret Manager erstellen

Mit Secret Manager können Sie regelmäßige Rotationen Ihrer Secrets planen. Secret Manager sendet dazu Benachrichtigungen an Pub/Sub-Themen, die Ihren Secrets zugeordnet 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 Rotation von Secrets

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

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

  2. Rotationszeitraum: Wenn Sie einen rotation_period definieren, berechnet Secret Manager automatisch den 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. das Erstellen einer neuen Version des Secrets und das Bereitstellen der Änderungen für Ihre Anwendungen.

Anforderungen und wichtige Aspekte für Secret-Rotationspläne

  • 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 Google Cloud -Referenz zu Datum und Uhrzeit.

  • Secret Manager wiederholt zwar automatisch fehlgeschlagene Versuche, Nachrichten zu senden, wir können jedoch keine erfolgreiche Zustellung garantieren, wenn es Fehlkonfigurationen in Bezug auf das Secret, die Themenkonfiguration, Berechtigungen oder Kontingente 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 Rotationszeitplan 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 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. Rufen Sie den Bereich Rotation auf und setzen Sie ein Häkchen bei Rotationszeitraum festlegen.

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

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

  8. 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.
  • 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: Das Intervall in Sekunden, in dem der Schlüssel rotiert werden soll. Wenn Sie den Schlüssel beispielsweise alle 2.592.000 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 \
  --replication-policy "automatic" \
  --next-rotation-time="NEXT_ROTATION_TIME" \
  --rotation-period="ROTATION_PERIOD" \
  --topics="FULL_TOPIC_NAME"

Windows (PowerShell)

gcloud secrets create SECRET_ID `
  --replication-policy "automatic" `
  --next-rotation-time="NEXT_ROTATION_TIME" `
  --rotation-period="ROTATION_PERIOD" `
  --topics="FULL_TOPIC_NAME"

Windows (cmd.exe)

gcloud secrets create SECRET_ID ^
  --replication-policy "automatic" ^
  --next-rotation-time="NEXT_ROTATION_TIME" ^
  --rotation-period="ROTATION_PERIOD" ^
  --topics="FULL_TOPIC_NAME"

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
  • TOPIC_NAME: der Name des Themas

HTTP-Methode und URL:

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

JSON-Text der Anfrage:

{
  "replication":{
    "automatic":{}
  },
  "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.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-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 Einstellungen für die Rotation aktualisieren, wenn Sie eine Aktualisierungsanfrage stellen:

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

  • rotation.next_rotation_time: Dies bezieht sich speziell auf den Zeitstempel, der angibt, wann die nächste Rotation stattfinden könnte.

  • rotation.rotation_period: Gibt die Dauer zwischen den einzelnen Rotationen an.

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. Suchen Sie das Geheimnis, das Sie bearbeiten möchten, und klicken Sie auf das Menü Aktionen, das mit diesem Geheimnis verknüpft ist. Klicken Sie im Menü Aktionen auf Bearbeiten.

  3. Gehen Sie zum Abschnitt Rotation. Aktualisieren Sie den Rotationszeitraum nach Bedarf 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.
  • 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 \
  --next-rotation-time="NEXT_ROTATION_TIME"

Windows (PowerShell)

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

Windows (cmd.exe)

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

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.
  • 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.googleapis.com/v1/projects/$PROJECT_ID/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.googleapis.com/v1/projects/$PROJECT_ID/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.googleapis.com/v1/projects/$PROJECT_ID/secrets/$SECRET_ID?updateMask=rotation.next_rotation_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-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

Verwenden Sie eine der folgenden Methoden, um die Secret-Rotation zu deaktivieren:

Console

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

    Zu Secret Manager

  2. Suchen Sie das Secret, das Sie bearbeiten möchten, und klicken Sie auf das Menü Aktionen, das mit diesem Secret verknüpft ist. Klicken Sie im Menü Aktionen auf Bearbeiten.

  3. Gehen Sie zum Abschnitt Rotation. Entfernen Sie das Häkchen bei 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

Führen Sie folgenden Befehl aus:

Linux, macOS oder Cloud Shell

gcloud secrets update SECRET_ID \
    --remove-next-rotation-time

Windows (PowerShell)

gcloud secrets update SECRET_ID `
    --remove-next-rotation-time

Windows (cmd.exe)

gcloud secrets update SECRET_ID ^
    --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

Führen Sie folgenden Befehl aus:

Linux, macOS oder Cloud Shell

gcloud secrets update SECRET_ID \
    --remove-rotation-schedule

Windows (PowerShell)

gcloud secrets update SECRET_ID `
    --remove-rotation-schedule

Windows (cmd.exe)

gcloud secrets update SECRET_ID ^
    --remove-rotation-schedule

REST

Nächste Rotationszeit eines Secrets entfernen

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

HTTP-Methode und URL:

PATCH https://secretmanager.googleapis.com/v1/projects/$PROJECT_ID/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.googleapis.com/v1/projects/$PROJECT_ID/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.googleapis.com/v1/projects/$PROJECT_ID/secrets/$SECRET_ID?updateMask=rotation.next_rotation_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-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:

  • 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.googleapis.com/v1/projects/$PROJECT_ID/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.googleapis.com/v1/projects/$PROJECT_ID/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.googleapis.com/v1/projects/$PROJECT_ID/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