Rotazione dei secret di Cassandra nei secret di Kubernetes
Questa procedura descrive la rotazione delle credenziali Cassandra nei secret di Kubernetes nel cluster. Per la rotazione delle credenziali in Hashicorp Vault, consulta Rotazione delle credenziali Cassandra in Hashicorp Vault.
Questa procedura ti consente di ruotare le credenziali Cassandra utilizzate per i servizi Apigee Hybrid di produzione senza causare tempi di inattività automatizzando e attivando tre attività:
- Rotazione delle credenziali utente
- Rollback della rotazione
- Pulizia delle credenziali vecchie e nuove
Esegui la rotazione dei secret Cassandra nei secret di Kubernetes
Esistono sei coppie di nome utente e password di credenziali Cassandra che puoi ruotare:
default
(solo rotazione della password)admin_user
ddl_user
dml_user
jmxuser
apigee
Prepararsi per la rotazione delle credenziali
Per eseguire questi passaggi, devi disporre dell'autorizzazione per eseguire kubectl apply -f
all'interno del cluster.
- Esegui il backup del database Cassandra. Questo backup serve a garantire il recupero delle credenziali pre-ruotate. Consulta la panoramica del backup di Cassandra.
- Assicurati che il cluster sia in uno stato corretto, che tutte le risorse Apigee siano in esecuzione e che non siano in attesa modifiche dello stato.
Rotazione delle credenziali in una singola regione
- Crea un nuovo secret Kubernetes nello spazio dei nomi Apigee contenente le credenziali utente di Cassandra che vuoi ruotare, seguendo le istruzioni riportate in Impostare nomi utente e password in un secret Kubernetes.
- Esegui il controllo preliminare della rotazione.
-
Crea una nuova risorsa personalizzata SecretRotation utilizzando il seguente modello:
# 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
Dove:
- ROTATION_NAME: un nome per il job di rotazione, ad esempio
sr-1-precheck
. - APIGEE_NAMESPACE: lo spazio dei nomi Apigee.
- APIGEE_ORG: il tuo ID organizzazione Apigee.
- ROTATION_ID: un identificatore personalizzato, ad esempio
rot-1-precheck
. - TIMEOUT_MINUTES: facoltativo. Sostituisce il valore predefinito (480 min = 8 ore). <=0 indica un timeout infinito.
- OLD_SECRET_REF: il nome del secret attualmente utilizzato da
apigeedatastore
. Puoi trovarlo utilizzando il seguente comando:kubectl -n APIGEE_NAMESPACE get apigeedatastore default -o jsonpath='{.spec.credentialRef}'
- NEW_SECRET_REF: il nome della chiave creata nel passaggio precedente.
- ROTATION_NAME: un nome per il job di rotazione, ad esempio
-
Attiva il job di precontrollo della rotazione applicando il file YAML di rotazione:
kubectl -n APIGEE_NAMESPACE apply -f ROTATION_YAML_FILE
-
Controlla lo stato del job e attendi il completamento.
kubectl -n APIGEE_NAMESPACE describe sr ROTATION_NAME
Al termine del job, l'output conterrà:
Status: Message: rotation complete State: complete
kubectl -n APIGEE_NAMESPACE logs sr-ROTATION_ID-rotate-job-HASH
-
Crea una nuova risorsa personalizzata SecretRotation utilizzando il seguente modello:
-
Al termine del job di precontrollo della rotazione, esegui la rotazione:
- Apporta le seguenti modifiche al file YAML della rotazione:
- Cambia
metadata.name
con un nome che indichi che non si tratta di un controllo preliminare, ad esempiosr-1
. - Imposta
spec.precheck
sufalse
. - Modifica
spec.rotationId
con un nuovo identificatore, ad esempiorot-1
.
- Cambia
- Applica di nuovo il file per eseguire la rotazione.
kubectl -n APIGEE_NAMESPACE apply -f ROTATION_YAML_FILE
- Apporta le seguenti modifiche al file YAML della rotazione:
- Al termine del job di rotazione, verifica che il traffico continui a fluire correttamente.
- Dopo aver convalidato il traffico, esegui la pulizia dei vecchi secret.
-
Apporta le seguenti modifiche al file YAML della rotazione:
- Modifica
metadata.name
con un nome che indichi che si tratta di un job di pulizia, ad esempiosr-1-cleanup
. - Imposta
spec.cassandra.jobType
suCLEANUP
.
- Modifica
- Applica di nuovo il file per eseguire la pulizia.
kubectl -n APIGEE_NAMESPACE apply -f ROTATION_YAML_FILE
-
Controlla lo stato del job e attendi il completamento.
kubectl -n APIGEE_NAMESPACE describe sr ROTATION_NAME
Al termine del job di pulizia, il processo di rotazione è completato.
-
Apporta le seguenti modifiche al file YAML della rotazione:
- Esegui un backup del database Cassandra. Questo backup serve a garantire il recupero delle credenziali dopo la rotazione.
- Elimina il vecchio secret della credenziale Cassandra.
Rotazione delle credenziali in più regioni
-
In ogni regione, crea un nuovo secret Kubernetes nello spazio dei nomi Apigee che contenga le credenziali utente Cassandra che vuoi ruotare, seguendo le istruzioni riportate in Impostare nomi utente e password in un secret Kubernetes.
Le credenziali devono essere le stesse in ogni regione.
- Esegui il controllo preliminare della rotazione.
-
Crea una nuova risorsa personalizzata SecretRotation utilizzando il seguente modello:
# 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
Dove:
- ROTATION_NAME: un nome per il job di rotazione, ad esempio
sr-1-precheck
. - APIGEE_NAMESPACE: lo spazio dei nomi Apigee.
- APIGEE_ORG: il tuo ID organizzazione Apigee.
- ROTATION_ID: un identificatore personalizzato, ad esempio
rot-1-precheck
. - TIMEOUT_MINUTES: facoltativo. Sostituisce il valore predefinito (480 min = 8 ore). <=0 indica un timeout infinito.
- OLD_SECRET_REF: il nome del secret attualmente utilizzato da
apigeedatastore
. Puoi trovarlo utilizzando il seguente comando:kubectl -n APIGEE_NAMESPACE get apigeedatastore default -o jsonpath='{.spec.credentialRef}'
- NEW_SECRET_REF: il nome della chiave creata nel passaggio precedente.
- ROTATION_NAME: un nome per il job di rotazione, ad esempio
-
Nella prima regione, attiva il job di precontrollo della rotazione applicando il file YAML di rotazione:
kubectl -n APIGEE_NAMESPACE apply -f ROTATION_YAML_FILE
-
Controlla lo stato del job e attendi il completamento.
kubectl -n APIGEE_NAMESPACE describe sr ROTATION_NAME
Al termine del job, l'output conterrà:
Status: Message: rotation complete State: complete
kubectl -n APIGEE_NAMESPACE logs sr-ROTATION_ID-rotate-job-HASH
-
Crea una nuova risorsa personalizzata SecretRotation utilizzando il seguente modello:
-
Al termine del job di precontrollo della rotazione, esegui la rotazione nella stessa regione:
- Apporta le seguenti modifiche al file YAML della rotazione:
- Cambia
metadata.name
con un nome che indichi che non si tratta di un controllo preliminare, ad esempiosr-1
. - Imposta
spec.precheck
sufalse
. - Modifica
spec.rotationId
con un nuovo identificatore, ad esempiorot-1
.
- Cambia
- Applica di nuovo il file per eseguire la rotazione.
kubectl -n APIGEE_NAMESPACE apply -f ROTATION_YAML_FILE
- Apporta le seguenti modifiche al file YAML della rotazione:
- Al termine del job di rotazione, verifica che il traffico continui a fluire correttamente.
- Ripeti i passaggi di rotazione per le regioni rimanenti.
- Dopo aver convalidato il traffico, esegui la pulizia dei vecchi secret. Devi eseguire la pulizia solo in una singola regione. Non importa quale regione scegli.
-
Apporta le seguenti modifiche al file YAML della rotazione:
- Modifica
metadata.name
con un nome che indichi che si tratta di un job di pulizia, ad esempiosr-1-cleanup
. - Imposta
spec.cassandra.jobType
suCLEANUP
.
- Modifica
- Applica di nuovo il file per eseguire la pulizia.
kubectl -n APIGEE_NAMESPACE apply -f ROTATION_YAML_FILE
-
Controlla lo stato del job e attendi il completamento.
kubectl -n APIGEE_NAMESPACE describe sr ROTATION_NAME
Al termine del job di pulizia, il processo di rotazione è completato.
-
Apporta le seguenti modifiche al file YAML della rotazione:
- Esegui un backup del database Cassandra. Questo backup serve a garantire il recupero delle credenziali dopo la rotazione.
- Elimina il vecchio secret della credenziale Cassandra.
Eseguire il rollback di una rotazione
Esegui i seguenti passaggi in ogni regione.
-
Crea una nuova risorsa personalizzata SecretRotation utilizzando il seguente modello:
# 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
Dove:
- ROLLBACK_NAME: un nome per il job di rollback, ad esempio:
sr-1-rollback
. - APIGEE_NAMESPACE: lo spazio dei nomi Apigee.
- APIGEE_ORG: il tuo ID organizzazione Apigee.
- ROTATION_ID: l'ID della rotazione corrente di cui stai eseguendo il rollback, ad esempio
rot-1
. - TIMEOUT_MINUTES: facoltativo. Sostituisce il valore predefinito (480 min = 8 ore). <=0 indica un timeout infinito.
- OLD_SECRET_REF: deve corrispondere al nome della chiave segreta per
oldSecretRef:
nel file YAML di rotazione utilizzato nella procedura di rotazione in una singola regione o rotazione in più regioni. - NEW_SECRET_REF: deve corrispondere al nome del secret per
newSecretRef:
nel file YAML di rotazione utilizzato nella procedura di rotazione in una singola regione o rotazione in più regioni.
- ROLLBACK_NAME: un nome per il job di rollback, ad esempio:
-
Applica il rollback:
kubectl -n APIGEE_NAMESPACE apply -f ROLLBACK_YAML_FILE
-
Controlla lo stato del job e attendi il completamento.
kubectl -n APIGEE_NAMESPACE describe sr ROTATION_NAME
- Al termine dei rollback, verifica che il traffico continui a scorrere correttamente.
- Quando il traffico scorre correttamente, ripeti la procedura di rollback in ogni regione rimanente.
-
Una volta completato il rollback e verificato che il traffico continua a scorrere correttamente, avvia la procedura di pulizia. Devi eseguire la pulizia solo in una singola regione. Non importa quale regione scegli.
Apporta le seguenti modifiche al file YAML della rotazione:
- Modifica
metadata.name
con un nome che indichi che si tratta di un job di pulizia, ad esempiosr-1-cleanup-rollback
. - Modifica
spec.cassandra.jobType
inCLEANUP_ROLLBACK
.
- Modifica
-
Applica il file per attivare il job di pulizia:
kubectl -n APIGEE_NAMESPACE apply -f ROTATION_YAML_FILE