Topik ini menjelaskan cara mengonfigurasi autentikasi untuk komunikasi antara node Cassandra serta antara klien dan node Cassandra.
Cara mengonfigurasi autentikasi untuk Cassandra di bidang runtime
Cassandra menyediakan komunikasi yang aman antara mesin klien dan cluster database, serta antara node dalam cluster. Mengaktifkan enkripsi memastikan bahwa data saat beroperasi tidak disusupi dan ditransfer dengan aman. Pada Apigee Hybrid, TLS diaktifkan secara default untuk komunikasi apa pun antara node Cassandra serta antara klien dan node Cassandra.
Anda dapat mengonfigurasi autentikasi menggunakan kombinasi nama pengguna/sandi yang ditempatkan langsung di file penggantian atau ditambahkan ke Secret Kubernetes, seperti yang dijelaskan dalam topik ini.
Tentang autentikasi pengguna Cassandra
Platform hybrid menggunakan Cassandra sebagai datastore backend untuk data bidang runtime. Secara default, komunikasi klien ke Cassandra memerlukan autentikasi. Ada beberapa pengguna klien yang berkomunikasi dengan Cassandra. Sandi default diberikan untuk pengguna ini. Lihat Mengubah sandi default di file penggantian guna mengetahui langkah-langkah yang diperlukan untuk mengubah sandi default.
Pengguna ini, termasuk pengguna default, dijelaskan di bawah:
- Pengguna DML: Digunakan oleh klien untuk membaca dan menulis data ke Cassandra (KMS, KVM, Cache, dan Kuota).
- Pengguna DDL: Digunakan oleh MART untuk tugas definisi data apa pun seperti pembuatan, pembaruan, dan penghapusan keyspace.
- Pengguna Admin: Digunakan untuk aktivitas administratif yang dilakukan di cluster cassandra.
- Pengguna Cassandra default: Cassandra membuat pengguna default saat Authentication diaktifkan, dan nama pengguna adalah
cassandra
- Pengguna JMX: Digunakan untuk mengautentikasi dan berkomunikasi dengan antarmuka Cassandra JMX.
- Pengguna Jolokia: Digunakan untuk mengautentikasi dan berkomunikasi dengan Cassandra JMX API.
Tentang pengguna Cassandra default
Saat cluster hybrid Apigee dibuat dan autentikasi Cassandra diaktifkan, akun pengguna awal adalah pengguna Cassandra default, yang diidentifikasi dengan nama pengguna cassandra
. Pengguna cassandra
default berfungsi sebagai superuser, yang bertanggung jawab untuk berbagai tugas seperti menambahkan peran pengguna dan mengubah skema database.
Tugas apigee-cassandra-user-setup
hybrid Apigee menggunakan pengguna cassandra
default untuk membuat peran baru dan memperbarui sandi yang terkait dengan pengguna default ini. Eksekusi tugas apigee-cassandra-user-setup
terjadi selama penginstalan awal instance hybrid Apigee, upgrade instance berikutnya, dan penyediaan instance baru sebagai bagian dari perluasan region.
Saat tugas apigee-cassandra-user-setup
hybrid Apigee dieksekusi, tugas tersebut memerlukan kemampuan untuk mengupdate dan mengubah konfigurasi level database sebagai bagian dari penginstalan baru atau upgrade. Pengguna cassandra
default adalah satu-satunya pengguna yang dijamin akan ada saat tugas apigee-cassandra-user-setup
menyiapkan pod Cassandra baru. Tanpa pengguna yang diketahui dengan akses superuser, upgrade hybrid Apigee dan perluasan region tidak akan berfungsi dengan benar.
Sandi pengguna cassandra
default diubah setelah penggunaan awal sebagai bagian dari tindakan keamanan tambahan. Ini berarti meskipun pengguna cassandra
default masih diaktifkan, sandi baru harus diketahui untuk menggunakan pengguna cassandra
default. Pengguna cassandra
default tidak digunakan oleh komponen lain kecuali tugas apigee-cassandra-user-setup
sebagai bagian dari penginstalan baru dan perluasan region.
Mengubah sandi default di file penggantian
Sebagai praktik terbaik keamanan, sebaiknya ubah sandi default untuk Cassandra. Anda dapat melakukannya di file overrides.yaml
. Tambahkan konfigurasi berikut, ubah sandi default sesuai keinginan, dan terapkan perubahan pada cluster Anda. Lihat
cassandra
. Anda dapat melihat sandi default di file values.yaml
.
cassandra: auth: default: ## the password for the new default user (static username: cassandra) password: "NEW_PASSWORD" admin: ## the password for the admin user (static username: admin_user) password: "NEW_PASSWORD" ddl: ## the password for the DDL User (static username: ddl_user) password: "NEW_PASSWORD" dml: ## the password for the DML User (static username: dml_user) password: "NEW_PASSWORD" jmx: username: "jmxuser" ## the username for the JMX User password: "NEW_PASSWORD" ## the password for the JMX User jolokia: username: "jolokiauser" ## the username to access jolokia interface password: "NEW_PASSWORD" ## the password for jolokia user
Perhatikan hal-hal berikut:
- Rotasi Certificate Authority (CA) tidak didukung.
- Sertifikat server yang dibuat dengan frasa sandi tidak didukung.
Menetapkan nama pengguna dan sandi dalam Secret Kubernetes
Bagian ini menjelaskan cara mengonfigurasi Cassandra agar menggunakan Secret Kubernetes untuk autentikasi.
Buat Secret
Gunakan template berikut untuk mengonfigurasi Secret Kubernetes. Simpan template ke file YAML dan edit atribut yang diperlukan, misalnya my-secret.yaml
.
Perhatikan bahwa jika Anda menggunakan opsi ini, Anda harus memberikan nama pengguna dengan setiap sandi.
apiVersion: v1 kind: Secret metadata: name: SECRET_NAME namespace: APIGEE_NAMESPACE type: Opaque data: default.password: DEFAULT_PASSWORD #base64-encoded string admin.user: ADMIN_USERNAME #base64-encoded string admin.password: ADMIN_PASSWORD #base64-encoded string dml.user: DML_USERNAME #base64-encoded string dml.password: DML_PASSWORD #base64-encoded string ddl.user: DDL_USERNAME #base64-encoded string ddl.password: DDL_PASSWORD #base64-encoded string jmx.user: JMX_USERNAME #base64-encoded string jmx.password: JMX_PASSWORD #base64-encoded string jolokia.user: JOLOKIA_USERNAME #base64-encoded string jolokia.password: JOLOKIA_PASSWORD #base64-encoded string
Dengan SECRET_NAME adalah nama yang Anda pilih untuk Rahasia, APIGEE_NAMESPACE adalah namespace tempat pod Apigee di-deploy (default-nya adalah apigee
), dan setiap _USERNAME dan _PASSWORD adalah nama pengguna dan sandi untuk setiap pengguna. Perhatikan bahwa nama pengguna dan sandi harus berenkode Base64.
Terapkan Rahasia ke cluster. Contoh:
kubectl apply -f SECRET_FILE
Tambahkan Secret ke file penggantian:
cassandra: auth: secret: SECRET_NAME
Terapkan penggantian Cassandra yang telah diupdate ke cluster:
Helm
helm upgrade datastore apigee-datastore/ \ --namespace apigee \ --atomic \ -f OVERRIDES_FILE.yaml
apigeectl
$APIGEECTL_HOME/apigeectl apply -f OVERRIDES_FILE.yaml --datastore
Memeriksa log Cassandra
Periksa log segera setelah Cassandra dimulai. Log di bawah ini menunjukkan bahwa koneksi klien Cassandra dienkripsi.
kubectl logs apigee-cassandra-2 -n apigee -f INFO 00:44:36 Starting listening for CQL clients on /10.0.2.12:9042 (encrypted)... INFO 00:44:36 Binding thrift service to /10.0.2.12:9160 INFO 00:44:36 enabling encrypted thrift connections between client and server INFO 00:44:36 Listening for thrift clients...