Mengonfigurasi TLS untuk Cassandra

Topik ini menjelaskan cara mengonfigurasi autentikasi untuk komunikasi antara node Cassandra dan antara klien dan node Cassandra.

Cara mengonfigurasi TLS untuk Cassandra di platform runtime

Cassandra menyediakan komunikasi yang aman antara mesin klien dan cluster database serta antara node dalam cluster. Mengaktifkan enkripsi memastikan bahwa data dalam pengiriman tidak disusupi dan ditransfer dengan aman. Di Apigee hybrid, TLS diaktifkan secara default untuk setiap komunikasi antara node Cassandra dan antara klien dan node Cassandra.

Anda dapat mengonfigurasi autentikasi menggunakan kombinasi nama pengguna/sandi yang ditempatkan langsung dalam file penggantian atau ditambahkan ke Secret Kubernetes, seperti yang dijelaskan dalam topik ini.

Tentang autentikasi pengguna Cassandra

Platform campuran menggunakan Cassandra sebagai datastore backend untuk data bidang runtime. Secara default, setiap komunikasi klien ke Cassandra memerlukan autentikasi. Ada beberapa pengguna klien yang berkomunikasi dengan Cassandra. Sandi default disediakan untuk pengguna ini, dan Anda tidak diwajibkan untuk mengubahnya.

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

  • Pengguna DML: Digunakan oleh komunikasi 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 ruang kunci.
  • Pengguna Admin: Digunakan untuk aktivitas administratif apa pun yang dilakukan di cluster cassandra.
  • Pengguna Cassandra default: Cassandra membuat pengguna default saat Autentikasi diaktifkan dan nama penggunanya adalah cassandra
  • Pengguna JMX: Digunakan untuk mengautentikasi dan berkomunikasi dengan antarmuka JMX Cassandra.
  • Pengguna Jolokia: Digunakan untuk mengautentikasi dan berkomunikasi dengan Cassandra JMX API.

Mengubah sandi default dalam file penggantian

Apigee hybrid menyediakan sandi default untuk pengguna Cassandra. Jika ingin mengubah sandi pengguna default, Anda dapat melakukannya di file overrides.yaml. Tambahkan konfigurasi berikut, ubah sandi default ("iloveapis123") sesuai keinginan, dan terapkan perubahan ke cluster Anda.

cassandra:
   auth:
     default:  ## the password for the new default user (static username: cassandra)
       password: "iloveapis123"
     admin: ## the password for the admin user (static username: admin_user)
       password: "iloveapis123"
     ddl: ## the password for the DDL User (static username: ddl_user)
       password: "iloveapis123"
     dml: ## the password for the DML User (static username: dml_user)
       password: "iloveapis123"
     jmx:
       username: "jmxuser" ## the username for the JMX User
       password: "iloveapis123" ## the password for the JMX User
     jolokia:
       username: "jolokiauser" ## the username to access jolokia interface
       password: "iloveapis123" ## 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 di Secret Kubernetes

Bagian ini menjelaskan cara mengonfigurasi Cassandra untuk menggunakan Kubernetes Secrets untuk autentikasi.

Membuat Secret

Gunakan template berikut untuk mengonfigurasi Secret Kubernetes. Simpan template ke file dan edit atribut yang diperlukan. Perhatikan bahwa jika 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: $PASSWORD   #base64-encoded string
  admin.user: $USERNAME   #base64-encoded string
  admin.password: $PASSWORD   #base64-encoded string
  dml.user: $USERNAME   #base64-encoded string
  dml.password: $PASSWORD   #base64-encoded string
  ddl.user: $USERNAME   #base64-encoded string
  ddl.password: $PASSWORD   #base64-encoded string
  jmx.user: $USERNAME   #base64-encoded string
  jmx.password: $PASSWORD   #base64-encoded string
  jolokia.user: $USERNAME   #base64-encoded string
  jolokia.password: $PASSWORD   #base64-encoded string
  

Dengan $SECRET_NAME adalah nama yang Anda pilih untuk Secret, $APIGEE_NAMESPACE adalah namespace tempat pod Apigee di-deploy (defaultnya adalah apigee), dan $USERNAME serta $PASSWORD adalah nama pengguna dan sandi untuk setiap pengguna. Perhatikan bahwa nama pengguna dan sandi harus dienkode dengan Base64.

Terapkan Secret ke cluster. Contoh:

kubectl apply -f $SECRET_FILE

Tambahkan Secret ke file penggantian Anda:

cassandra:
  auth:
    secret: $SECRET_NAME

Terapkan penggantian Cassandra yang telah diperbarui ke cluster:

$APIGEECTL_HOME/apigeectl apply -f overrides/overrides.yaml --datastore

Memeriksa log Cassandra

Periksa log segera setelah Cassandra dimulai. Log di bawah 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...