Cassandra Security: Buat Pengguna & Otentikasi dengan JMX

Daftar Isi:

Anonim

Ada dua jenis keamanan di Apache Cassandra dan Datastax enterprise.

  • Otentikasi Internal
  • Otorisasi

Dalam tutorial ini, Anda akan belajar,

  • Apa itu Otentikasi dan Otorisasi Internal
  • Konfigurasikan Otentikasi dan Otorisasi
  • Masuk
  • Buat Pengguna Baru
  • Otorisasi
  • Mengonfigurasi Firewall
  • Mengaktifkan Otentikasi JMX

Apa itu Otentikasi dan Otorisasi Internal

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

Otorisasi internal berhubungan dengan izin pengguna. Ini berkaitan dengan tindakan apa yang dapat dilakukan pengguna. Misalnya, kita dapat 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 hapus data.

Namun, Autentikasi juga dapat dikontrol secara eksternal dengan Kerberos (Kerberos digunakan untuk mengelola kredensial dengan aman) dan LDAP (LDAP digunakan untuk menyimpan informasi otoritatif tentang akun, seperti apa yang diizinkan untuk diakses).

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

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

Konfigurasikan Otentikasi dan Otorisasi

Di Cassandra, secara default opsi otentikasi dan otorisasi dinonaktifkan. Anda harus mengkonfigurasi file Cassandra.yaml untuk mengaktifkan otentikasi dan otorisasi.

Buka file Cassandra.yaml dan hapus komentar yang berhubungan dengan otentikasi dan otorisasi internal.

  • Dalam file Cassandra.yaml, secara default, nilai pengautentikasi adalah 'AllowAllAuthenticator'. Ubah nilai pengautentikasi ini dari 'AllowAllAuthenticator' menjadi 'com.datastax.bdp.cassandra.auth.PasswordAuthenticator'.
  • Demikian pula, di file Cassandra.yaml, secara default, nilai authorizer adalah 'AllowAllAuthorizor'. Ubah nilai pemberi otorisasi ini dari 'AllowAllAuthorizor' menjadi 'com.datastax.bdp.cassandra.auth.CassandraAuthorizor'.

Masuk

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

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

Mari kita lihat screenshot di bawah ini, di mana itu tidak akan memungkinkan Anda untuk login jika Anda tidak menggunakan "username" dan "password" Cassandra default.

Sekarang, di tangkapan layar kedua, Anda dapat melihat setelah menggunakan kredensial masuk default Cassandra, Anda dapat masuk.

Anda juga dapat membuat pengguna lain dengan akun ini. Dianjurkan untuk mengubah kata sandi dari default. Berikut adalah contoh login pengguna Cassandra dan mengubah kata sandi default.

alter user cassandra with password 'newpassword';

Buat Pengguna Baru

Akun baru dapat dibuat dengan akun 'Cassandra'.

Untuk membuat pengguna baru, masuk, kata sandi ditentukan bersama dengan apakah pengguna itu 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 sintaks berikut.

list users;

Pengguna dapat dijatuhkan dengan sintaks berikut.

drop user laura;

Otorisasi

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

Berikut adalah sintaks umum untuk memberikan izin kepada pengguna.

GRANT permission ON resource TO user

Ada jenis izin berikut yang dapat diberikan kepada pengguna.

  1. SEMUA
  2. MENGUBAH
  3. OTORISASI
  4. MEMBUAT
  5. PENURUNAN
  6. MEMODIFIKASI
  7. PILIH

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 di mana pengguna 'laura' mencoba mengakses tabel emp_bonus. Laura hanya memiliki izin untuk mengakses dev.emp dan tidak ada izin ke tabel ini dev.emp_bonus itulah sebabnya kesalahan dikembalikan.

select* form emp_bonus;

Anda bisa mendapatkan daftar semua izin yang ditetapkan untuk pengguna. Berikut adalah contoh mendapatkan informasi izin.

list all permissions of laura;

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

list all permissions on dev.emp;

Mengonfigurasi Firewall

Jika firewall berjalan, port berikut harus dibuka untuk komunikasi antar node termasuk beberapa port Cassandra. Jika port Cassandra tidak akan dibuka, node Cassandra akan bertindak sebagai server database mandiri daripada bergabung dengan cluster database.

Port Klien Cassandra

Nomor Port

Deskripsi

9042

Port Klien Cassandra

9160

Penghematan Port Klien Cassandra

Port Cassandra Internode

Nomor Port

Deskripsi

7000

Komunikasi cluster ruas Cassandra

7001

Komunikasi cluster ruas Cassandra SSL

7199

Port pemantauan Cassandra JMX

Pelabuhan Umum

Nomor porta

Deskripsi

22

Port SSH

8888

Situs Web OpsCenter. Permintaan http browser.

Port Cassandra OpsCenter

Nomor Port

Deskripsi

61620

Port pemantauan OpsCenter.

61621

Port agen opscenter

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 OpsCenter dan nodetool dikonfigurasi untuk menggunakan otentikasi.

Prosedur

Ada langkah-langkah berikut untuk mengaktifkan otentikasi JMX.

  1. Di 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 ubah namanya menjadi jmxremote.password.
cp />jdk_install_dir/lib/management/jmxremote.password.template /etc/cassandra/jmxremote.password
  1. Ubah kepemilikan jmxremote.password menjadi pengguna tempat Anda menjalankan Cassandra dan ubah izin menjadi hanya baca
chown cassandra:cassandra /etc/cassandra/jmxremote.passwordchmod 400 /etc/cassandra/jmxremote.password
  1. Edit jmxremote.password dan tambahkan pengguna dan kata sandi untuk utilitas yang sesuai dengan JMX:
monitorRole QEDcontrolRole R&Dcassandra cassandrapassword
  1. Tambahkan pengguna Cassandra dengan izin baca dan tulis ke /jdk_install_location/lib/management/jmxremote.access
monitorRole readonlycassandra readwritecontrolRole readwrite \create javax.management.monitor.,javax.management.timer. \unregister
  1. Mulai ulang Cassandra
  2. Jalankan nodetool dengan pengguna dan kata sandi Cassandra.
$ nodetool status -u cassandra -pw cassandra

Ringkasan:

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