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.
- 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".
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.
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;
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.
- SEMUA
- MENGUBAH
- MENGIZINKAN
- MEMBUAT
- DROP
- MEMODIFIKASI
- 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.
select* form emp_bonus;
Anda bisa mendapatkan daftar semua izin yang diberikan kepada 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 sebuah tabel.
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.
- 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
- 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
- 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
- Edit jmxremote.password dan tambahkan pengguna dan kata sandi untuk utilitas yang mendukung JMX:
monitorRole QED controlRole R&D cassandra cassandrapassword
- 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
- Restart Cassandra
- 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.