Mengonfigurasi autentikasi untuk Cassandra

Topik ini menjelaskan cara mengkonfigurasi otentikasi 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 komputer klien dan {i>database<i} cluster dan di antara node dalam cluster. Mengaktifkan enkripsi memastikan bahwa data dalam penerbangan tidak disusupi dan ditransfer dengan aman. Di Apigee Hybrid, TLS diaktifkan secara {i>default<i} untuk komunikasi apa pun antara {i>node<i} Cassandra dan antara klien dan Node Cassandra.

Anda dapat mengkonfigurasi otentikasi menggunakan kombinasi nama pengguna/sandi ditempatkan langsung di file penggantian atau ditambahkan ke Rahasia Kubernetes, seperti yang dijelaskan dalam topik ini.

Tentang autentikasi pengguna Cassandra

Platform hybrid menggunakan Cassandra sebagai datastore backend untuk runtime data bidang. Secara {i>default<i}, salah satu komunikasi klien ke Cassandra memerlukan otentikasi. Ada beberapa pengguna klien yang berkomunikasi dengan Cassandra. Sandi default disediakan untuk pengguna ini. Lihat Mengubah sandi default di file penggantian untuk langkah-langkah yang diperlukan untuk mengubah {i>password<i} {i>default<i}.

Para pengguna ini, termasuk pengguna default, dijelaskan di bawah ini:

  1. Pengguna DML: Digunakan oleh klien untuk membaca dan menulis data ke Cassandra (KMS, KVM, Cache, dan Kuota).
  2. Pengguna DDL: Digunakan oleh MART untuk tugas definisi data apa pun seperti keyspace pembuatan, pembaruan, dan penghapusan.
  3. Pengguna Admin: Digunakan untuk aktivitas administratif yang dilakukan di gugus cassandra.
  4. Pengguna Cassandra default: Cassandra membuat pengguna default saat Autentikasi diaktifkan dan nama penggunanya adalah cassandra
  5. Pengguna JMX: Digunakan untuk mengautentikasi dan berkomunikasi dengan Cassandra JMX dalam antarmuka berbasis web yang sederhana.
  6. Pengguna Jolokia: Digunakan untuk mengautentikasi dan berkomunikasi dengan Cassandra JMX Compute Engine 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 atas tugas-tugas seperti menambahkan peran pengguna dan memodifikasi skema database.

Tugas apigee-cassandra-user-setup hybrid Apigee menggunakan pengguna cassandra default untuk menetapkan 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 dijalankan, tugas tersebut memerlukan kemampuan untuk mengupdate dan mengubah konfigurasi level database baik 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 yang baru. Tanpa pengguna yang dikenal 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 langkah keamanan tambahan. Hal ini berarti meskipun pengguna cassandra default masih diaktifkan, sandi baru harus diketahui untuk mengetahui penggunaan 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 default sandi sesuai keinginan, lalu terapkan perubahan tersebut pada cluster Anda. Lihat cassandra Anda dapat melihat sandi default dalam file values.yaml Anda.

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 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.

Membuat Secret

Gunakan template berikut untuk mengonfigurasi Secret Kubernetes. Simpan template ke file YAML dan mengedit 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 Secret, APIGEE_NAMESPACE adalah namespace tempat pod Apigee di-deploy (default-nya adalah apigee), serta setiap _USERNAME dan _PASSWORD adalah nama pengguna dan sandi untuk masing-masing . Perhatikan bahwa nama pengguna dan sandi harus berenkode Base64.

Terapkan Secret ke cluster. Contoh:

kubectl apply -f SECRET_FILE

Tambahkan Secret tersebut ke file penggantian:

cassandra:
  auth:
    secret: SECRET_NAME

Terapkan penggantian Cassandra yang telah diupdate ke cluster:

helm upgrade datastore apigee-datastore/ \
--namespace apigee \
--atomic \
-f OVERRIDES_FILE.yaml

Memeriksa log Cassandra

Periksa log segera setelah Cassandra memulai. 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...