Merotasi secret Cassandra di secret Kubernetes
Prosedur ini menjelaskan cara merotasi 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 mengganti 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
Merotasi secret Cassandra di secret Kubernetes
Ada enam pasangan kredensial Cassandra (nama pengguna+sandi) yang dapat diubah:
- Default*
- Admin
- DDL
- DML
- JMX
- Jolokia
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 dilakukan untuk memastikan pemulihan dapat dilakukan ke kredensial pra-rotasi. Lihat Ringkasan pencadangan Cassandra.
- Pastikan cluster dalam kondisi baik, semua resource Apigee berjalan, dan tidak ada perubahan status yang menunggu persetujuan.
Rotasi kredensial region tunggal
- Buat secret Kubernetes baru di namespace Apigee yang menyimpan kredensial pengguna Cassandra yang ingin Anda ganti, dengan mengikuti Menetapkan nama pengguna dan sandi di secret Kubernetes.
- Lakukan prapengecekan 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:
- 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 nilai default (480m == 8 jam). <=0 berarti waktu tunggu tak terbatas.
- PRECHECK : Memicu eksekusi uji coba. Jika disetel ke benar (true), proses rotasi akan melalui semua langkah kecuali benar-benar menerapkan kredensial baru.
- 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 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:
- Lakukan perubahan berikut dalam file YAML rotasi:
- Ubah
metadata.name
menjadi nama yang menunjukkan bahwa ini bukan pra-pemeriksaan, 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, validasi bahwa traffic masih mengalir dengan benar.
- Setelah memvalidasi traffic Anda, lakukan pembersihan rahasia 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
. - Pastikan
spec.precheck
disetel kefalse
.
- 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:
-
Perbarui file penggantian dan tetapkan
cassandra.auth.secret
ke nama rahasia baru (newSecretRef
).cassandra: auth: secret: NEW_SECRET_REF
- Buat cadangan database Cassandra. Pencadangan ini dilakukan untuk memastikan pemulihan dapat dilakukan ke kredensial setelah dirotasi.
- 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 Anda ganti, dengan mengikuti Menetapkan nama pengguna dan sandi di secret Kubernetes.
Kredensial harus sama di setiap region.
- Lakukan prapengecekan 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:
- 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 nilai default (480m == 8 jam). <=0 berarti waktu tunggu tak terbatas.
- PRECHECK : Memicu eksekusi uji coba. Jika disetel ke benar (true), proses rotasi akan melalui semua langkah kecuali benar-benar menerapkan kredensial baru.
- 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 pra-pemeriksaan, 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, validasi bahwa traffic masih mengalir dengan benar.
- Ulangi langkah-langkah rotasi untuk wilayah lainnya.
- Setelah memvalidasi traffic Anda, lakukan pembersihan rahasia lama. Anda hanya perlu melakukan pembersihan di satu region. Tidak masalah wilayah 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
. - Pastikan
spec.precheck
disetel kefalse
.
- 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:
-
Perbarui file penggantian dan tetapkan
cassandra.auth.secret
ke nama rahasia baru (newSecretRef
).cassandra: auth: secret: NEW_SECRET_REF
- Buat cadangan database Cassandra. Pencadangan ini dilakukan untuk memastikan pemulihan dapat dilakukan ke kredensial setelah dirotasi.
- 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:
- 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 batalkan, misalnya:
rot-1
. - TIMEOUT_MINUTES: Opsional. Mengganti nilai default (480m == 8 jam). <=0 berarti waktu tunggu tak terbatas.
- OLD_SECRET_REF: Ini harus cocok dengan nama rahasia 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 rahasia 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 berjalan dengan benar.
- Jika traffic berjalan dengan benar, ulangi proses rollback di setiap wilayah yang tersisa.
-
Setelah Anda menyelesaikan rollback dan memverifikasi bahwa traffic masih berjalan dengan benar, mulai proses pembersihan. Anda hanya perlu melakukan pembersihan di satu region. Tidak masalah wilayah 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
-
Periksa status tugas dan tunggu hingga selesai.
kubectl -n APIGEE_NAMESPACE describe sr ROTATION_NAME
Setelah tugas pembersihan selesai, proses rollback selesai.
-
Perbarui file penggantian Anda dan tetapkan
cassandra.auth.secret
ke nama secret lama (oldSecretRef
).cassandra: auth: secret: OLD_SECRET_REF