Merotasi secret Cassandra di secret Kubernetes
Prosedur ini menjelaskan cara memutar kredensial Cassandra di secret Kubernetes di cluster Anda. Untuk merotasi kredensial dalam Hashicorp Vault, lihat Merotasi kredensial Cassandra di Hashicorp Vault.
Prosedur ini akan memungkinkan Anda merotasi kredensial Cassandra yang digunakan untuk layanan Apigee Hybrid produksi tanpa menyebabkan periode nonaktif dengan mengotomatiskan dan memicu tiga tugas:
- Rotasi kredensial pengguna
- Rollback rotasi
- Pembersihan kredensial lama dan baru
Memutar secret Cassandra di secret Kubernetes
Ada enam pasangan nama pengguna-sandi kredensial Cassandra yang dapat Anda putar:
default
(khusus rotasi sandi)admin_user
ddl_user
dml_user
jmxuser
apigee
Bersiap untuk rotasi kredensial
Untuk melakukan langkah-langkah ini, Anda harus memiliki izin untuk menjalankan kubectl apply -f
dalam cluster.
- Cadangkan database Cassandra. Pencadangan ini untuk memastikan pemulihan dapat dilakukan ke kredensial yang telah dirotasi sebelumnya. Lihat Ringkasan pencadangan Cassandra.
- Pastikan cluster dalam status yang baik, semua resource Apigee berjalan, dan tidak ada perubahan status yang tertunda.
Rotasi kredensial region tunggal
- Buat secret Kubernetes baru di namespace Apigee yang menyimpan kredensial pengguna Cassandra yang ingin Anda putar, dengan mengikuti Menetapkan nama pengguna dan sandi di secret Kubernetes.
- Lakukan prapemeriksaan rotasi.
-
Buat resource kustom SecretRotation baru menggunakan template berikut:
# 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
Dengan keterangan:
- ROTATION_NAME: Nama untuk tugas rotasi, misalnya:
sr-1-precheck
. - APIGEE_NAMESPACE: namespace Apigee Anda.
- APIGEE_ORG: ID organisasi Apigee Anda.
- ROTATION_ID: ID kustom, misalnya:
rot-1-precheck
. - TIMEOUT_MINUTES: Opsional. Mengganti default (480m == 8hr). <=0 berarti waktu tunggu tak terbatas.
- OLD_SECRET_REF: Nama secret yang saat ini digunakan oleh
apigeedatastore
. Anda dapat menemukannya menggunakan perintah berikut:kubectl -n APIGEE_NAMESPACE get apigeedatastore default -o jsonpath='{.spec.credentialRef}'
- NEW_SECRET_REF: Nama secret yang dibuat di langkah sebelumnya.
- ROTATION_NAME: Nama untuk tugas rotasi, misalnya:
-
Picu tugas prapemeriksaan rotasi dengan menerapkan file YAML rotasi:
kubectl -n APIGEE_NAMESPACE apply -f ROTATION_YAML_FILE
-
Periksa status tugas dan tunggu hingga selesai.
kubectl -n APIGEE_NAMESPACE describe sr ROTATION_NAME
Setelah tugas selesai, output akan berisi:
Status: Message: rotation complete State: complete
kubectl -n APIGEE_NAMESPACE logs sr-ROTATION_ID-rotate-job-HASH
-
Buat resource kustom SecretRotation baru menggunakan template berikut:
-
Setelah tugas prapemeriksaan rotasi selesai, lakukan rotasi:
- Lakukan perubahan berikut dalam file YAML rotasi:
- Ubah
metadata.name
menjadi nama yang menunjukkan bahwa ini bukan prapemeriksaan, misalnya:sr-1
. - Tetapkan
spec.precheck
kefalse
. - Ubah
spec.rotationId
menjadi ID baru, misalnya:rot-1
.
- Ubah
- Terapkan file lagi untuk melakukan rotasi.
kubectl -n APIGEE_NAMESPACE apply -f ROTATION_YAML_FILE
- Lakukan perubahan berikut dalam file YAML rotasi:
- Setelah tugas rotasi selesai, validasikan bahwa traffic masih mengalir dengan benar.
- Setelah memvalidasi traffic, lakukan pembersihan secret lama.
-
Lakukan perubahan berikut dalam file YAML rotasi:
- Ubah
metadata.name
menjadi nama yang menunjukkan bahwa ini adalah tugas pembersihan, misalnya:sr-1-cleanup
. - Tetapkan
spec.cassandra.jobType
keCLEANUP
.
- Ubah
- Terapkan file lagi untuk melakukan pembersihan.
kubectl -n APIGEE_NAMESPACE apply -f ROTATION_YAML_FILE
-
Periksa status tugas dan tunggu hingga selesai.
kubectl -n APIGEE_NAMESPACE describe sr ROTATION_NAME
Setelah tugas pembersihan selesai, proses rotasi selesai.
-
Lakukan perubahan berikut dalam file YAML rotasi:
- Buat cadangan database Cassandra. Pencadangan ini untuk memastikan pemulihan dapat dilakukan ke kredensial pasca-rotasi.
- Hapus secret kredensial Cassandra lama.
Rotasi kredensial multi-region
-
di setiap region, buat secret Kubernetes baru di namespace Apigee Anda yang menyimpan kredensial pengguna Cassandra yang ingin dirotasi, dengan mengikuti Menetapkan nama pengguna dan sandi di secret Kubernetes.
Kredensial harus sama di setiap region.
- Lakukan prapemeriksaan rotasi.
-
Buat resource kustom SecretRotation baru menggunakan template berikut:
# 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
Dengan keterangan:
- ROTATION_NAME: Nama untuk tugas rotasi, misalnya:
sr-1-precheck
. - APIGEE_NAMESPACE: namespace Apigee Anda.
- APIGEE_ORG: ID organisasi Apigee Anda.
- ROTATION_ID: ID kustom, misalnya:
rot-1-precheck
. - TIMEOUT_MINUTES: Opsional. Mengganti default (480m == 8hr). <=0 berarti waktu tunggu tak terbatas.
- OLD_SECRET_REF: Nama secret yang saat ini digunakan oleh
apigeedatastore
. Anda dapat menemukannya menggunakan perintah berikut:kubectl -n APIGEE_NAMESPACE get apigeedatastore default -o jsonpath='{.spec.credentialRef}'
- NEW_SECRET_REF: Nama secret yang dibuat di langkah sebelumnya.
- ROTATION_NAME: Nama untuk tugas rotasi, misalnya:
-
Di region pertama, picu tugas pra-pemeriksaan rotasi dengan menerapkan file YAML rotasi:
kubectl -n APIGEE_NAMESPACE apply -f ROTATION_YAML_FILE
-
Periksa status tugas dan tunggu hingga selesai.
kubectl -n APIGEE_NAMESPACE describe sr ROTATION_NAME
Setelah tugas selesai, output akan berisi:
Status: Message: rotation complete State: complete
kubectl -n APIGEE_NAMESPACE logs sr-ROTATION_ID-rotate-job-HASH
-
Buat resource kustom SecretRotation baru menggunakan template berikut:
-
Setelah tugas pra-pemeriksaan rotasi selesai, lakukan rotasi di region yang sama:
- Lakukan perubahan berikut dalam file YAML rotasi:
- Ubah
metadata.name
menjadi nama yang menunjukkan bahwa ini bukan prapemeriksaan, misalnya:sr-1
. - Tetapkan
spec.precheck
kefalse
. - Ubah
spec.rotationId
menjadi ID baru, misalnya:rot-1
.
- Ubah
- Terapkan file lagi untuk melakukan rotasi.
kubectl -n APIGEE_NAMESPACE apply -f ROTATION_YAML_FILE
- Lakukan perubahan berikut dalam file YAML rotasi:
- Setelah tugas rotasi selesai, validasikan bahwa traffic masih mengalir dengan benar.
- Ulangi langkah rotasi untuk wilayah lainnya.
- Setelah memvalidasi traffic, lakukan pembersihan secret lama. Anda hanya perlu melakukan pembersihan di satu region. Tidak masalah region mana yang Anda pilih.
-
Lakukan perubahan berikut dalam file YAML rotasi:
- Ubah
metadata.name
menjadi nama yang menunjukkan bahwa ini adalah tugas pembersihan, misalnya:sr-1-cleanup
. - Tetapkan
spec.cassandra.jobType
keCLEANUP
.
- Ubah
- Terapkan file lagi untuk melakukan pembersihan.
kubectl -n APIGEE_NAMESPACE apply -f ROTATION_YAML_FILE
-
Periksa status tugas dan tunggu hingga selesai.
kubectl -n APIGEE_NAMESPACE describe sr ROTATION_NAME
Setelah tugas pembersihan selesai, proses rotasi selesai.
-
Lakukan perubahan berikut dalam file YAML rotasi:
- Buat cadangan database Cassandra. Pencadangan ini untuk memastikan pemulihan dapat dilakukan ke kredensial pasca-rotasi.
- Hapus secret kredensial Cassandra lama.
Me-roll back rotasi
Lakukan langkah-langkah berikut di setiap region.
-
Buat resource kustom SecretRotation baru menggunakan template berikut:
# 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
Dengan keterangan:
- ROLLBACK_NAME: Nama untuk tugas rollback, misalnya:
sr-1-rollback
. - APIGEE_NAMESPACE: namespace Apigee Anda.
- APIGEE_ORG: ID organisasi Apigee Anda.
- ROTATION_ID: ID rotasi saat ini yang Anda rollback, misalnya:
rot-1
. - TIMEOUT_MINUTES: Opsional. Mengganti default (480m == 8hr). <=0 berarti waktu tunggu tak terbatas.
- OLD_SECRET_REF: Nama ini harus cocok dengan nama secret untuk
oldSecretRef:
dalam file YAML rotasi yang Anda gunakan dalam prosedur Rotasi satu region atau Rotasi multi-region. - NEW_SECRET_REF: ini harus cocok dengan nama secret untuk
newSecretRef:
dalam file YAML rotasi yang Anda gunakan dalam prosedur Rotasi satu region atau Rotasi multi-region.
- ROLLBACK_NAME: Nama untuk tugas rollback, misalnya:
-
Terapkan rollback:
kubectl -n APIGEE_NAMESPACE apply -f ROLLBACK_YAML_FILE
-
Periksa status tugas dan tunggu hingga selesai.
kubectl -n APIGEE_NAMESPACE describe sr ROTATION_NAME
- Setelah rollback selesai, pastikan traffic masih mengalir dengan benar.
- Jika traffic mengalir dengan benar, ulangi proses rollback di setiap region yang tersisa.
-
Setelah Anda menyelesaikan rollback dan memverifikasi bahwa traffic masih mengalir dengan benar, mulai proses pembersihan. Anda hanya perlu melakukan pembersihan di satu region. Tidak masalah region mana yang Anda pilih.
Buat perubahan berikut dalam file YAML rotasi:
- Ubah
metadata.name
menjadi nama yang menunjukkan bahwa ini adalah tugas pembersihan, misalnya:sr-1-cleanup-rollback
. - Ubah
spec.cassandra.jobType
menjadiCLEANUP_ROLLBACK
.
- Ubah
-
Terapkan file untuk memicu tugas pembersihan:
kubectl -n APIGEE_NAMESPACE apply -f ROTATION_YAML_FILE