Cassandra Otentikasi & Otorisasi JMX: Buat Pengguna

Ada dua jenis keamanan di dalamnya Apache Cassandra dan perusahaan Datastax.

  • Otentikasi Internal
  • Authorization

Apa itu Otentikasi dan Otorisasi Internal

Otentikasi internal pada dasarnya memvalidasi koneksi pengguna. Pengguna diautentikasi dengan login dan kata sandi. Semua akun pengguna dikelola Cassandra secara internal.

Otorisasi internal berkaitan dengan izin pengguna. Ini berkaitan dengan tindakan apa yang dapat dilakukan pengguna. Misalnya kita bisa memberikan izin kepada pengguna seperti pengguna mana yang hanya memiliki izin membaca data, pengguna mana yang memiliki izin menulis data, dan pengguna mana yang memiliki izin menghapus data.

Namun, Otentikasi juga dapat dikontrol secara eksternal dengan Kerberos (Kerberos digunakan untuk mengelola kredensial dengan aman) dan LDAP (LDAP digunakan untuk menyimpan informasi resmi tentang akun, seperti apa yang boleh mereka akses).

Otentikasi eksternal adalah otentikasi yang didukung dengan Kerberos dan LDAP. Apache Cassandra tidak mendukung otentikasi eksternal.

Hanya perusahaan datastax yang mendukung autentikasi eksternal dengan Kerberos dan LDAP. Sedangkan otentikasi internal didukung keduanya Apache Cassandra serta perusahaan Datastax.

Konfigurasikan Otentikasi dan Otorisasi

In Cassandra, secara default opsi autentikasi dan otorisasi dinonaktifkan. Anda harus mengkonfigurasi CassandraFile .yaml untuk mengaktifkan otentikasi dan otorisasi.

Open CassandraFile .yaml dan baris batalkan komentar yang berhubungan dengan autentikasi dan otorisasi internal.

Konfigurasikan Otentikasi dan Otorisasi

  • In CassandraFile .yaml, secara default, nilai autentikator adalah 'AllowAllAuthenticator'. Ubah nilai autentikator ini dari 'AllowAllAuthenticator' menjadi 'com.datastax.bdp.cassandra.auth.PasswordAuthenticator'.
  • Demikian pula, di CassandraFile .yaml, secara default, nilai pemberi otorisasi akan menjadi 'AllowAllAuthorizor'. Ubah nilai pemberi otorisasi ini dari 'AllowAllAuthorizor' menjadi 'com.datastax.bdp.cassandra.auth.'CassandraPemberi Kuasa'.

Masuk

Sekarang otentikasi diaktifkan, jika Anda mencoba mengakses keyspace apa pun, Cassandra akan mengembalikan kesalahan.

Secara default, Cassandra menyediakan akun super dengan nama pengguna 'cassandra' dan kata sandi 'cassandra'. Dengan masuk ke 'Cassandra' Akun, Anda dapat melakukan apa pun yang Anda inginkan.

Mari kita lihat tangkapan layar di bawah ini, di mana Anda tidak akan diizinkan untuk login jika Anda tidak menggunakan default Cassandra "nama pengguna dan kata sandi".

Masuk

Sekarang, di tangkapan layar kedua, Anda dapat melihat setelah menggunakannya Cassandra kredensial login default, Anda dapat login.

Anda juga dapat membuat pengguna lain dengan akun ini. Disarankan untuk mengubah kata sandi dari default. Berikut contoh loginnya Cassandra pengguna dan ubah kata sandi default.

Masuk

alter user cassandra with password 'newpassword';

Buat Pengguna Baru

Akun baru dapat dibuat dengan 'Cassandra' Akun.

Untuk membuat pengguna baru, login, kata sandi ditentukan beserta apakah pengguna tersebut pengguna super atau bukan. Hanya Pengguna Super yang dapat membuat pengguna baru.

create user robin with password 'manager' superuser;
create user robin with password 'newhire';

Anda bisa mendapatkan daftar semua pengguna dengan sintaksis berikut.

list users;

Buat Pengguna Baru

Pengguna dapat dikeluarkan dengan sintaks berikut.

drop user laura;

Authorization

Otorisasi adalah pemberian izin kepada pengguna tentang tindakan apa yang dapat dilakukan oleh pengguna tertentu.

Berikut adalah sintaks umum untuk memberikan izin kepada pengguna.

GRANT permission ON resource TO user

Ada beberapa jenis izin yang dapat diberikan kepada pengguna.

  1. SEMUA
  2. MENGUBAH
  3. MENGIZINKAN
  4. MEMBUAT
  5. DROP
  6. MEMODIFIKASI
  7. MEMILIH

Berikut adalah contoh pemberian izin kepada pengguna.

Create user laura with password 'newhire'; 
grant all on dev.emp to laura;
revoke all on dev.emp to laura;
grant select on dev.emp to laura;

Pengguna baru 'laura' dibuat dengan kata sandi 'newhire'.

Berikut adalah contoh dimana pengguna 'laura' mencoba mengakses tabel emp_bonus. Laura hanya memiliki izin untuk mengakses dev.emp dan tidak ada izin untuk tabel ini dev.emp_bonus itulah sebabnya kesalahan muncul.

Authorization

select* form emp_bonus;

Anda bisa mendapatkan daftar semua izin yang diberikan kepada pengguna. Berikut adalah contoh mendapatkan informasi izin.

Authorization

list all permissions of laura;

Anda juga dapat mencantumkan semua izin pada sumber daya. Berikut adalah contoh mendapatkan izin dari sebuah tabel.

Authorization

list all permissions on dev.emp;

Mengkonfigurasi Firewall

Jika firewall sedang berjalan, port berikut harus dibuka untuk komunikasi antar node termasuk beberapa Cassandra pelabuhan. Jika Cassandra port tidak akan dibuka, Cassandra Node-node akan bertindak sebagai server basis data yang berdiri sendiri dan tidak akan bergabung dengan klaster basis data.

Cassandra Port Klien

Nomor Port Uraian Teknis
9042 Cassandra Pelabuhan Klien
9160 Cassandra Penghematan Pelabuhan Klien

Cassandra Port ruas

Nomor Port Uraian Teknis
7000 Cassandra komunikasi cluster antar ruas
7001 Cassandra Komunikasi kluster internode SSL
7199 Cassandra Pelabuhan pemantauan JMX

Pelabuhan Umum

Nomor Port Uraian Teknis
22 Pelabuhan SSH
8888 Situs Web OpsCenter. Permintaan http peramban.

Cassandra Port OpsCenter

Nomor Port Uraian Teknis
61620 Port pemantauan OpsCenter.
61621 Port agen pusat operasi

Mengaktifkan Otentikasi JMX

Dengan pengaturan default Cassandra, JMX hanya dapat diakses dari localhost. Jika Anda ingin mengakses JMX dari jarak jauh, ubah pengaturan LOCAL_JMX di Cassandra-env.sh dan aktifkan otentikasi atau SSL.

Setelah mengaktifkan otentikasi JMX, pastikan Pusat Operasi dan nodetool dikonfigurasi untuk menggunakan otentikasi.

Prosedur

Ada langkah-langkah berikut untuk mengaktifkan autentikasi JMX.

  1. Dalam file cassandra-env.sh, tambahkan atau perbarui baris berikut.
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.authenticate=true"
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.password.file=/etc/cassandra/jmxremote.password"

Juga, ubah pengaturan LOCAL_JMX di Cassandra-env.sh

LOCAL_JMX=no
  1. Salin jmxremote.password.template dari /jdk_install_location/lib/management/ ke /etc/cassandra/ dan ganti namanya menjadi jmxremote.password.
cp />jdk_install_dir/lib/management/jmxremote.password.template /etc/cassandra/jmxremote.password
  1. Ubah kepemilikan jmxremote.password menjadi pengguna yang Anda jalankan Cassandra dengan dan ubah izin menjadi hanya baca
chown cassandra:cassandra /etc/cassandra/jmxremote.password 
chmod 400 /etc/cassandra/jmxremote.password
  1. Edit jmxremote.password dan tambahkan pengguna dan kata sandi untuk utilitas yang mendukung JMX:
monitorRole QED 
controlRole R&D 
cassandra cassandrapassword
  1. Tambahkan Cassandra pengguna dengan izin baca dan tulis ke /jdk_install_location/lib/management/jmxremote.access
monitorRole readonly
cassandra readwrite
controlRole readwrite \
create javax.management.monitor.,javax.management.timer. \ 
unregister
  1. Restart Cassandra
  2. Jalankan nodetool dengan Cassandra pengguna dan kata sandi.
$ nodetool status -u cassandra -pw cassandra

Ringkasan

Tutorial ini menjelaskan tentang keamanan di Cassandra dan mengkonfigurasi CassandraFile .yaml untuk mengaktifkan keamanan. Selain itu juga dijelaskan bagaimana akun pengguna baru dapat dibuat, pemberian izin, konfigurasi firewall, dan sebagainya.