Cassandra Uwierzytelnianie i autoryzacja JMX: Utwórz użytkownika
Istnieją dwa rodzaje zabezpieczeń Apache Cassandra i przedsiębiorstwo Datastax.
- Uwierzytelnianie wewnętrzne
- Autoryzacja
Co to jest wewnętrzne uwierzytelnianie i autoryzacja
Uwierzytelnianie wewnętrzne polega zasadniczo na sprawdzaniu połączenia użytkownika. Użytkownik uwierzytelniany jest za pomocą loginu i hasła. Wszystkie konta użytkowników są zarządzane w Cassandra wewnętrznie.
Autoryzacja wewnętrzna dotyczy zgody użytkownika. Określa, jakie działania może wykonać użytkownik. Na przykład możemy nadać użytkownikowi uprawnienia, określające, który użytkownik ma tylko uprawnienia do odczytu danych, który użytkownik ma uprawnienia do zapisu danych, a który ma uprawnienia do usuwania danych.
Jednak uwierzytelnianiem można również sterować zewnętrznie za pomocą Kerberos (Kerberos służy do bezpiecznego zarządzania danymi uwierzytelniającymi) i LDAP (LDAP służy do przechowywania wiarygodnych informacji o kontach, np. tego, do czego mają dostęp).
Uwierzytelnianie zewnętrzne to uwierzytelnianie obsługiwane przez protokoły Kerberos i LDAP. Apache Cassandra nie obsługuje uwierzytelniania zewnętrznego.
Tylko datastax Enterprise obsługuje uwierzytelnianie zewnętrzne za pomocą protokołu Kerberos i LDAP. Podczas gdy uwierzytelnianie wewnętrzne jest obsługiwane zarówno w Apache Cassandra a także przedsiębiorstwo Datastax.
Skonfiguruj uwierzytelnianie i autoryzację
In Cassandra, domyślnie opcje uwierzytelniania i autoryzacji są wyłączone. Musisz skonfigurować Cassandraplik .yaml umożliwiający uwierzytelnianie i autoryzację.
Otwarte CassandraPlik .yaml i odkomentuj linie dotyczące wewnętrznego uwierzytelniania i autoryzacji.
- In CassandraW pliku .yaml domyślna wartość uwierzytelniacza to 'AllowAllAuthenticator'. Zmień tę wartość uwierzytelniacza z 'AllowAllAuthenticator' na 'com.datastax.bdp.cassandra.auth.PasswordAuthenticator'.
- Podobnie w CassandraW pliku .yaml, domyślnie wartość authorizera będzie wynosić 'AllowAllAuthorizor'. Zmień tę wartość authorizera z 'AllowAllAuthorizor' na 'com.datastax.bdp.cassandra.auth.CassandraAutoryzator'.
Logowanie
Teraz uwierzytelnianie jest włączone, jeśli spróbujesz uzyskać dostęp do dowolnej przestrzeni kluczy, Cassandra zwróci błąd.
Domyślnie Cassandra zapewnia super konto z nazwą użytkownika 'cassandra' i hasłem 'cassandra'. Logując się do 'Cassandrakoncie, możesz robić, co chcesz.
Zobaczmy poniższy zrzut ekranu, na którym nie pozwoli ci się zalogować, jeśli nie używasz ustawień domyślnych Cassandra "Nazwa użytkownika i hasło".
Teraz na drugim zrzucie ekranu możesz zobaczyć po użyciu Cassandra domyślne dane logowania, możesz się zalogować.
Za pomocą tego konta możesz także utworzyć kolejnego użytkownika. Zaleca się zmianę hasła z domyślnego. Oto przykład logowania Cassandra użytkownika i zmień domyślne hasło.
alter user cassandra with password 'newpassword';
Utwórz nowego użytkownika
Nowe konta można tworzyć za pomocą przycisku „Cassandra' konto.
Aby utworzyć nowego użytkownika, należy zalogować się, podać hasło i określić, czy użytkownik jest superużytkownikiem, czy nie. Tylko superużytkownik może tworzyć nowych użytkowników.
create user robin with password 'manager' superuser; create user robin with password 'newhire';
Listę wszystkich użytkowników można uzyskać, stosując następującą składnię.
list users;
Użytkowników można usunąć, stosując następującą składnię.
drop user laura;
Autoryzacja
Autoryzacja to przydzielanie użytkownikom uprawnień, jakie czynności może wykonać dany użytkownik.
Oto ogólna składnia przypisywania uprawnień użytkownikom.
GRANT permission ON resource TO user
Użytkownikowi można przyznać następujące rodzaje uprawnień.
- WSZYSTKO
- ZMIANA
- AUTORYZUJ
- TWORZENIE
- DROP
- MODYFIKOWAĆ
- SELECT
Oto przykłady przypisania uprawnień użytkownikowi.
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;
Został utworzony nowy użytkownik o nazwie „laura” z hasłem „newhire”.
Oto przykład, w którym użytkownik „laura” próbuje uzyskać dostęp do tabeli emp_bonus. Laura ma jedynie uprawnienia dostępu do dev.emp i nie ma uprawnień do tej tabeli dev.emp_bonus, dlatego został zwrócony błąd.
select* form emp_bonus;
Możesz uzyskać listę wszystkich uprawnień przypisanych do użytkownika. Oto przykład uzyskania informacji o uprawnieniach.
list all permissions of laura;
Możesz także wyświetlić listę wszystkich uprawnień do zasobu. Oto przykład uzyskania pozwolenia z tabeli.
list all permissions on dev.emp;
Konfiguracja zapory
Jeżeli zapora sieciowa jest uruchomiona, należy otworzyć następujące porty w celu komunikacji między węzłami, w tym niektóre Cassandra porty. Jeśli Cassandra porty nie zostaną otwarte, Cassandra węzły będą działać jako autonomiczne serwery baz danych, zamiast dołączać je do klastra baz danych.
Cassandra Porty klienta
Numer portu | OPIS |
---|---|
9042 | Cassandra Port klienta |
9160 | Cassandra Oszczędność portu klienta |
Cassandra Porty międzywęzłowe
Numer portu | OPIS |
---|---|
7000 | Cassandra komunikacja klastra międzywęzłowego |
7001 | Cassandra Komunikacja klastra międzywęzłowego SSL |
7199 | Cassandra Port monitorowania JMX |
Porty publiczne
Numer portu | OPIS |
---|---|
22 | Port SSH |
8888 | Witryna OpsCenter. Żądanie HTTP przeglądarki. |
Cassandra Porty OpsCenter
Numer portu | OPIS |
---|---|
61620 | Port monitorowania OpsCenter. |
61621 | Port agenta Opscenter |
Włączanie uwierzytelniania JMX
Przy domyślnych ustawieniach Cassandra, Dostęp do JMX można uzyskać tylko z hosta lokalnego. Jeśli chcesz uzyskać zdalny dostęp do JMX, zmień ustawienie LOCAL_JMX w Cassandra-env.sh i włącz uwierzytelnianie lub SSL.
Upewnij się, że po włączeniu uwierzytelniania JMX Centrum operacyjne i nodetool są skonfigurowane do korzystania z uwierzytelniania.
Procedura
Aby włączyć uwierzytelnianie JMX, wykonaj następujące kroki.
- W pliku cassandra-env.sh dodaj lub zaktualizuj następujące wiersze.
JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.authenticate=true" JVM_OPTS="$JVM_OPTS -Dcom.sun.management.jmxremote.password.file=/etc/cassandra/jmxremote.password"
Zmień także ustawienie LOCAL_JMX w Cassandra-środ.sz
LOCAL_JMX=no
- Skopiuj plik jmxremote.password.template z /jdk_install_location/lib/management/ do /etc/cassandra/ i zmień jego nazwę na jmxremote.password.
cp />jdk_install_dir/lib/management/jmxremote.password.template /etc/cassandra/jmxremote.password
- Zmień własność jmxremote.password na uruchomionego użytkownika Cassandra z uprawnieniami tylko do odczytu i zmień je
chown cassandra:cassandra /etc/cassandra/jmxremote.password chmod 400 /etc/cassandra/jmxremote.password
- Edytuj jmxremote.password i dodaj użytkownika i hasło dla narzędzi zgodnych z JMX:
monitorRole QED controlRole R&D cassandra cassandrapassword
- Dodaj Cassandra użytkownik z uprawnieniami do odczytu i zapisu w /jdk_install_location/lib/management/jmxremote.access
monitorRole readonly cassandra readwrite controlRole readwrite \ create javax.management.monitor.,javax.management.timer. \ unregister
- restart Cassandra
- Uruchom narzędzie nodetool za pomocą pliku Cassandra użytkownika i hasło.
$ nodetool status -u cassandra -pw cassandra
Podsumowanie
W tym samouczku wyjaśniono bezpieczeństwo w programie Cassandra i konfigurowanie Cassandraplik .yaml umożliwiający włączenie zabezpieczeń. Poza tym wyjaśnia również, w jaki sposób można utworzyć nowe konto użytkownika, przypisać uprawnienia, skonfigurować zaporę ogniową i tak dalej.