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.
- SEMUA
- MENGUBAH
- OTORISASI
- MEMBUAT
- PENURUNAN
- MEMODIFIKASI
- 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.
- 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
- 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
- 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
- Edit jmxremote.password dan tambahkan pengguna dan kata sandi untuk utilitas yang sesuai dengan JMX:
monitorRole QEDcontrolRole R&Dcassandra cassandrapassword
- 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
- Mulai ulang Cassandra
- 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.