Cassandra-Secrets in Kubernetes-Secrets rotieren
In diesem Verfahren wird beschrieben, wie Sie Cassandra-Anmeldedaten in Kubernetes-Secrets in Ihrem Cluster rotieren. Informationen zum Rotieren von Anmeldedaten in Hashicorp Vault finden Sie unter Cassandra-Anmeldedaten in Hashicorp Vault rotieren.
Mit diesem Verfahren können Sie die für die Produktions-Apigee Hybrid-Dienste verwendeten Cassandra-Anmeldedaten tauschen, ohne Ausfallzeiten zu verursachen. Dazu werden drei Aufgaben automatisiert und ausgelöst:
- Rotation der Nutzeranmeldedaten
- Rollback der Rotation
- Bereinigung alter und neuer Anmeldedaten
Cassandra-Secrets in Kubernetes-Secrets rotieren
Es gibt sechs Paare aus Nutzername und Passwort für Cassandra-Anmeldedaten, die Sie rotieren können:
default
(nur Passwortrotation)admin_user
ddl_user
dml_user
jmxuser
apigee
Rotation von Anmeldedaten vorbereiten
Für die Ausführung dieser Schritte benötigen Sie die Berechtigung zum Ausführen von kubectl apply -f
im Cluster.
- Sichern Sie die Cassandra-Datenbank. Diese Sicherung soll dafür sorgen, dass eine Wiederherstellung der zuvor rotierten Anmeldedaten möglich ist. Weitere Informationen finden Sie unter Cassandra-Sicherungsübersicht.
- Prüfen Sie, ob der Cluster fehlerfrei ist, alle Apigee-Ressourcen ausgeführt werden und keine Statusänderungen ausstehend sind.
Rotation von Anmeldedaten für eine einzelne Region
- Erstellen Sie in Ihrem Apigee-Namespace ein neues Kubernetes-Secret mit den Cassandra-Nutzer-Anmeldedaten, die Sie rotieren möchten. Folgen Sie dazu der Anleitung unter Nutzernamen und Passwörter in einem Kubernetes-Secret festlegen.
- Führen Sie die Vorprüfung der Rotation durch.
-
Erstellen Sie mit der folgenden Vorlage eine neue benutzerdefinierte SecretRotation-Ressource:
# rotation-k8s-secrets.yaml apiVersion: apigee.cloud.google.com/v1alpha1 kind: SecretRotation metadata: name: ROTATION_NAME namespace: APIGEE_NAMESPACE spec: organizationId: APIGEE_ORG rotationId: ROTATION_ID timeoutMinutes: TIMEOUT_MINUTES # optional. 480 recommended. precheck: true cassandra: oldSecretRef: OLD_SECRET_REF newSecretRef: NEW_SECRET_REF jobType: ROTATE
Wobei:
- ROTATION_NAME: Ein Name für den Rotationsjob, z. B.
sr-1-precheck
. - APIGEE_NAMESPACE: Ihr Apigee-Namespace.
- APIGEE_ORG: Ihre Apigee-Organisations-ID.
- ROTATION_ID: Eine benutzerdefinierte Kennung, z. B.
rot-1-precheck
. - TIMEOUT_MINUTES: Optional. Überschreibt den Standardwert (480 Minuten = 8 Stunden). „<=0“ bedeutet ein unbegrenztes Zeitlimit.
- OLD_SECRET_REF: Der Name des Secrets, der derzeit von der
apigeedatastore
verwendet wird. Sie können ihn mit dem folgenden Befehl ermitteln:kubectl -n APIGEE_NAMESPACE get apigeedatastore default -o jsonpath='{.spec.credentialRef}'
- NEW_SECRET_REF: Der im vorherigen Schritt erstellte Secret-Name.
- ROTATION_NAME: Ein Name für den Rotationsjob, z. B.
-
Lösen Sie den Job für die Vorabprüfung der Rotation aus, indem Sie die YAML-Datei für die Rotation anwenden:
kubectl -n APIGEE_NAMESPACE apply -f ROTATION_YAML_FILE
-
Prüfen Sie den Jobstatus und warten Sie, bis er abgeschlossen ist.
kubectl -n APIGEE_NAMESPACE describe sr ROTATION_NAME
Nach Abschluss des Jobs enthält die Ausgabe Folgendes:
Status: Message: rotation complete State: complete
kubectl -n APIGEE_NAMESPACE logs sr-ROTATION_ID-rotate-job-HASH
-
Erstellen Sie mit der folgenden Vorlage eine neue benutzerdefinierte SecretRotation-Ressource:
-
Führen Sie die Rotation aus, sobald der Job zur Vorabprüfung der Rotation abgeschlossen ist:
- Nehmen Sie die folgenden Änderungen an der YAML-Datei für die Rotation vor:
- Ersetzen Sie
metadata.name
durch einen Namen, der angibt, dass es sich nicht um eine Vorprüfung handelt, z. B.sr-1
. - Setzen Sie
spec.precheck
auffalse
. - Ändern Sie
spec.rotationId
in eine neue Kennung, z. B.rot-1
.
- Ersetzen Sie
- Wenden Sie die Datei noch einmal an, um die Drehung auszuführen.
kubectl -n APIGEE_NAMESPACE apply -f ROTATION_YAML_FILE
- Nehmen Sie die folgenden Änderungen an der YAML-Datei für die Rotation vor:
- Prüfen Sie nach Abschluss des Rotationsjobs, ob der Traffic weiterhin korrekt fließt.
- Nachdem Sie den Traffic validiert haben, bereinigen Sie die alten Secrets.
-
Nehmen Sie die folgenden Änderungen an der YAML-Datei für die Rotation vor:
- Ändern Sie
metadata.name
in einen Namen, der angibt, dass es sich um einen Bereinigungsjob handelt, z. B.sr-1-cleanup
. - Setzen Sie
spec.cassandra.jobType
aufCLEANUP
.
- Ändern Sie
- Wenden Sie die Datei noch einmal an, um die Bereinigung durchzuführen.
kubectl -n APIGEE_NAMESPACE apply -f ROTATION_YAML_FILE
-
Prüfen Sie den Jobstatus und warten Sie, bis er abgeschlossen ist.
kubectl -n APIGEE_NAMESPACE describe sr ROTATION_NAME
Sobald der Bereinigungsjob abgeschlossen ist, ist der Rotationsprozess abgeschlossen.
-
Nehmen Sie die folgenden Änderungen an der YAML-Datei für die Rotation vor:
- Erstellen Sie eine Sicherung der Cassandra-Datenbank. Diese Sicherung soll dafür sorgen, dass eine Wiederherstellung nach der Rotation der Anmeldedaten möglich ist.
- Löschen Sie das alte Cassandra-Anmeldedaten-Secret.
Rotation von Anmeldedaten für mehrere Regionen
-
Erstellen Sie in jeder Region ein neues Kubernetes-Secret in Ihrem Apigee-Namespace, das die Cassandra-Nutzeranmeldedaten enthält, die Sie rotieren möchten. Folgen Sie dazu der Anleitung unter Nutzernamen und Passwörter in einem Kubernetes-Secret festlegen.
Die Anmeldedaten müssen in jeder Region identisch sein.
- Führen Sie die Vorprüfung der Rotation durch.
-
Erstellen Sie mit der folgenden Vorlage eine neue benutzerdefinierte SecretRotation-Ressource:
# rotation-k8s-secrets.yaml apiVersion: apigee.cloud.google.com/v1alpha1 kind: SecretRotation metadata: name: ROTATION_NAME namespace: APIGEE_NAMESPACE spec: organizationId: APIGEE_ORG rotationId: ROTATION_ID timeoutMinutes: TIMEOUT_MINUTES # optional. 480 recommended. precheck: true cassandra: oldSecretRef: OLD_SECRET_REF newSecretRef: NEW_SECRET_REF jobType: ROTATE
Wobei:
- ROTATION_NAME: Ein Name für den Rotationsjob, z. B.
sr-1-precheck
. - APIGEE_NAMESPACE: Ihr Apigee-Namespace.
- APIGEE_ORG: Ihre Apigee-Organisations-ID.
- ROTATION_ID: Eine benutzerdefinierte Kennung, z. B.
rot-1-precheck
. - TIMEOUT_MINUTES: Optional. Überschreibt den Standardwert (480 Minuten = 8 Stunden). „<=0“ bedeutet ein unbegrenztes Zeitlimit.
- OLD_SECRET_REF: Der Name des Secrets, der derzeit von der
apigeedatastore
verwendet wird. Sie können ihn mit dem folgenden Befehl ermitteln:kubectl -n APIGEE_NAMESPACE get apigeedatastore default -o jsonpath='{.spec.credentialRef}'
- NEW_SECRET_REF: Der im vorherigen Schritt erstellte Secret-Name.
- ROTATION_NAME: Ein Name für den Rotationsjob, z. B.
-
Lösen Sie in der ersten Region den Job für die Vorprüfung der Rotation aus, indem Sie die YAML-Datei für die Rotation anwenden:
kubectl -n APIGEE_NAMESPACE apply -f ROTATION_YAML_FILE
-
Prüfen Sie den Jobstatus und warten Sie, bis er abgeschlossen ist.
kubectl -n APIGEE_NAMESPACE describe sr ROTATION_NAME
Nach Abschluss des Jobs enthält die Ausgabe Folgendes:
Status: Message: rotation complete State: complete
kubectl -n APIGEE_NAMESPACE logs sr-ROTATION_ID-rotate-job-HASH
-
Erstellen Sie mit der folgenden Vorlage eine neue benutzerdefinierte SecretRotation-Ressource:
-
Führen Sie nach Abschluss des Jobs zur Vorabprüfung der Rotation die Rotation in derselben Region aus:
- Nehmen Sie die folgenden Änderungen an der YAML-Datei für die Rotation vor:
- Ersetzen Sie
metadata.name
durch einen Namen, der angibt, dass es sich nicht um eine Vorprüfung handelt, z. B.sr-1
. - Setzen Sie
spec.precheck
auffalse
. - Ändern Sie
spec.rotationId
in eine neue Kennung, z. B.rot-1
.
- Ersetzen Sie
- Wenden Sie die Datei noch einmal an, um die Drehung auszuführen.
kubectl -n APIGEE_NAMESPACE apply -f ROTATION_YAML_FILE
- Nehmen Sie die folgenden Änderungen an der YAML-Datei für die Rotation vor:
- Prüfen Sie nach Abschluss des Rotationsjobs, ob der Traffic weiterhin korrekt fließt.
- Wiederholen Sie die Schritte für die Drehung für die verbleibenden Regionen.
- Nachdem Sie den Traffic validiert haben, bereinigen Sie die alten Secrets. Sie müssen die Bereinigung nur in einer Region ausführen. Es spielt keine Rolle, welche Region Sie auswählen.
-
Nehmen Sie die folgenden Änderungen an der YAML-Datei für die Rotation vor:
- Ändern Sie
metadata.name
in einen Namen, der angibt, dass es sich um einen Bereinigungsjob handelt, z. B.sr-1-cleanup
. - Setzen Sie
spec.cassandra.jobType
aufCLEANUP
.
- Ändern Sie
- Wenden Sie die Datei noch einmal an, um die Bereinigung durchzuführen.
kubectl -n APIGEE_NAMESPACE apply -f ROTATION_YAML_FILE
-
Prüfen Sie den Jobstatus und warten Sie, bis er abgeschlossen ist.
kubectl -n APIGEE_NAMESPACE describe sr ROTATION_NAME
Sobald der Bereinigungsjob abgeschlossen ist, ist der Rotationsprozess abgeschlossen.
-
Nehmen Sie die folgenden Änderungen an der YAML-Datei für die Rotation vor:
- Erstellen Sie eine Sicherung der Cassandra-Datenbank. Diese Sicherung soll dafür sorgen, dass eine Wiederherstellung nach der Rotation der Anmeldedaten möglich ist.
- Löschen Sie das alte Cassandra-Anmeldedaten-Secret.
Rotation rückgängig machen
Führen Sie die folgenden Schritte in jeder Region aus.
-
Erstellen Sie mit der folgenden Vorlage eine neue benutzerdefinierte SecretRotation-Ressource:
# rollback-k8s-secrets.yaml apiVersion: apigee.cloud.google.com/v1alpha1 kind: SecretRotation metadata: name: ROLLBACK_NAME namespace: APIGEE_NAMESPACE spec: organizationId: APIGEE_ORG rotationId: ROTATION_ID # match the current rotation. timeoutMinutes: TIMEOUT_MINUTES # optional. precheck: false cassandra: oldSecretRef: OLD_SECRET_REF # Must match the previous oldSecretRef. newSecretRef: NEW_SECRET_REF # Must match the previous newSecretRef. jobType: ROLLBACK
Wobei:
- ROLLBACK_NAME: Ein Name für den Rollback-Job, z. B.
sr-1-rollback
. - APIGEE_NAMESPACE: Ihr Apigee-Namespace.
- APIGEE_ORG: Ihre Apigee-Organisations-ID.
- ROTATION_ID: Die ID der aktuellen Rotation, die Sie rückgängig machen möchten, z. B.
rot-1
. - TIMEOUT_MINUTES: Optional. Überschreibt den Standardwert (480 Minuten = 8 Stunden). „<=0“ bedeutet ein unbegrenztes Zeitlimit.
- OLD_SECRET_REF: Dieser muss mit dem Secret-Namen für
oldSecretRef:
in der Rotations-YAML-Datei übereinstimmen, die Sie bei der Rotation für eine einzelne Region oder der Rotation für mehrere Regionen verwendet haben. - NEW_SECRET_REF: Dieser muss mit dem Secret-Namen für
newSecretRef:
in der Rotations-YAML-Datei übereinstimmen, die Sie beim Verfahren zur Rotation für eine einzelne Region oder Rotation für mehrere Regionen verwendet haben.
- ROLLBACK_NAME: Ein Name für den Rollback-Job, z. B.
-
Führen Sie das Rollback aus:
kubectl -n APIGEE_NAMESPACE apply -f ROLLBACK_YAML_FILE
-
Prüfen Sie den Jobstatus und warten Sie, bis er abgeschlossen ist.
kubectl -n APIGEE_NAMESPACE describe sr ROTATION_NAME
- Prüfen Sie nach Abschluss der Rollbacks, ob der Traffic weiterhin korrekt fließt.
- Wenn der Traffic richtig fließt, wiederholen Sie den Rollback-Vorgang in allen verbleibenden Regionen.
-
Sobald Sie das Rollback abgeschlossen und bestätigt haben, dass der Traffic weiterhin korrekt fließt, beginnen Sie mit der Bereinigung. Sie müssen die Bereinigung nur in einer Region ausführen. Es spielt keine Rolle, welche Region Sie auswählen.
Nehmen Sie die folgenden Änderungen an der YAML-Datei für die Rotation vor:
- Ändern Sie
metadata.name
in einen Namen, der darauf hinweist, dass es sich um einen Bereinigungsjob handelt, z. B.sr-1-cleanup-rollback
. - Ändern Sie
spec.cassandra.jobType
zuCLEANUP_ROLLBACK
.
- Ändern Sie
-
Wenden Sie die Datei an, um den Bereinigungsjob auszulösen:
kubectl -n APIGEE_NAMESPACE apply -f ROTATION_YAML_FILE