Istnieją dwa typy zabezpieczeń w przedsiębiorstwach Apache Cassandra i Datastax.
- Uwierzytelnianie wewnętrzne
- Upoważnienie
W tym samouczku dowiesz się,
- Co to jest wewnętrzne uwierzytelnianie i autoryzacja
- Skonfiguruj uwierzytelnianie i autoryzację
- Logowanie
- Utwórz nowego użytkownika
- Upoważnienie
- Konfigurowanie zapory
- Włączanie uwierzytelniania JMX
Co to jest wewnętrzne uwierzytelnianie i autoryzacja
Uwierzytelnianie wewnętrzne to w zasadzie sprawdzanie poprawności połączenia użytkownika. Użytkownik jest uwierzytelniany za pomocą loginu i hasła. Wszystkie konta użytkowników są zarządzane wewnętrznie w Cassandrze.
Autoryzacja wewnętrzna dotyczy zgody użytkownika. Dotyczy czynności, które użytkownik może wykonać. Na przykład możemy nadać użytkownikowi uprawnienia, na przykład 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ą protokołu Kerberos (Kerberos jest używany do bezpiecznego zarządzania poświadczeniami) i LDAP (protokół LDAP służy do przechowywania autorytatywnych informacji o kontach, takich jak to, 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 przedsiębiorstwo datastax obsługuje uwierzytelnianie zewnętrzne przy użyciu protokołu Kerberos i LDAP. Natomiast uwierzytelnianie wewnętrzne jest obsługiwane zarówno w Apache Cassandra, jak i Datastax Enterprise.
Skonfiguruj uwierzytelnianie i autoryzację
W Cassandrze domyślnie opcje uwierzytelniania i autoryzacji są wyłączone. Musisz skonfigurować plik Cassandra.yaml, aby umożliwić uwierzytelnianie i autoryzację.
Otwórz plik Cassandra.yaml i wiersze odkomentowania, które dotyczą wewnętrznego uwierzytelniania i autoryzacji.
- W pliku Cassandra.yaml domyślnie wartością uwierzytelniającą jest „AllowAllAuthenticator”. Zmień wartość tego elementu uwierzytelniającego z „AllowAllAuthenticator” na „com.datastax.bdp.cassandra.auth.PasswordAuthenticator”.
- Podobnie w pliku Cassandra.yaml domyślnie wartością autoryzatora będzie „AllowAllAuthorizor”. Zmień wartość autoryzatora z „AllowAllAuthorizor” na „com.datastax.bdp.cassandra.auth.CassandraAuthorizor”.
Logowanie
Teraz uwierzytelnianie jest włączone, jeśli spróbujesz uzyskać dostęp do dowolnego obszaru kluczy, Cassandra zwróci błąd.
Domyślnie Cassandra zapewnia superkontowi nazwę użytkownika „cassandra” i hasło „cassandra”. Logując się na konto „Cassandra”, możesz robić, co chcesz.
Zobaczmy poniższy zrzut ekranu, na którym nie pozwoli ci się zalogować, jeśli nie używasz domyślnej nazwy użytkownika i hasła Cassandry.
Teraz na drugim zrzucie ekranu widać, że po użyciu domyślnych danych logowania Cassandry możesz się zalogować.
Możesz również utworzyć innego użytkownika za pomocą tego konta. Zaleca się zmianę hasła z domyślnego. Oto przykład logowania użytkownika Cassandra i zmiany domyślnego hasła.
alter user cassandra with password 'newpassword';
Utwórz nowego użytkownika
Nowe konta można tworzyć za pomocą konta „Cassandra”.
Aby utworzyć nowego użytkownika, zaloguj się, hasło jest określane wraz z informacją, 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ć, posługując się następującą składnią.
list users;
Użytkownicy mogą zostać usunięci przy użyciu następującej składni.
drop user laura;
Upoważnienie
Autoryzacja to przypisywanie użytkownikom uprawnień, jakie może wykonać dany użytkownik.
Oto ogólna składnia przypisywania uprawnień użytkownikom.
GRANT permission ON resource TO user
Istnieją następujące typy uprawnień, które można nadać użytkownikowi.
- WSZYSTKO
- ZMIENIAĆ
- AUTORYZUJ
- STWÓRZ
- UPUSZCZAĆ
- MODYFIKOWAĆ
- WYBIERZ
Oto przykłady przypisywania 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;
Tworzony jest nowy użytkownik „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 tylko uprawnienia dostępu do dev.emp i nie ma uprawnień do tej tabeli dev.emp_bonus, dlatego zwrócony został błąd.
select* form emp_bonus;
Możesz uzyskać listę wszystkich uprawnień przypisanych do użytkownika. Oto przykład uzyskiwania informacji o pozwoleniach.
list all permissions of laura;
Możesz także wyświetlić wszystkie uprawnienia do zasobu. Oto przykład uzyskiwania uprawnień z tabeli.
list all permissions on dev.emp;
Konfigurowanie zapory
Jeśli zapora jest uruchomiona, następujące porty muszą być otwarte w celu komunikacji między węzłami, w tym niektórymi portami Cassandra. Jeśli porty Cassandra nie zostaną otwarte, węzły Cassandra będą działać jako samodzielny serwer bazy danych, a nie dołączać do klastra bazy danych.
Porty klienta Cassandra
Numer portu |
Opis |
9042 |
Port klienta Cassandra |
9160 |
Cassandra Client Port Thrift |
Porty Cassandra Internode
Numer portu |
Opis |
7000 |
Komunikacja klastra międzywęzłowego Cassandra |
7001 |
Komunikacja między węzłami Cassandra SSL w klastrze |
7199 |
Port monitorowania Cassandra JMX |
Porty publiczne
Numer portu |
Opis |
22 |
Port SSH |
8888 |
Witryna internetowa OpsCenter. Żądanie http przeglądarki. |
Porty Cassandra OpsCenter
Numer portu |
Opis |
61620 |
Port monitorowania OpsCenter. |
61621 |
Port agenta Opscenter |
Włączanie uwierzytelniania JMX
Przy domyślnych ustawieniach Cassandry dostęp do JMX można uzyskać tylko z lokalnego hosta. Jeśli chcesz uzyskać zdalny dostęp do JMX, zmień ustawienie LOCAL_JMX w Cassandra-env.sh i włącz uwierzytelnianie lub SSL.
Po włączeniu uwierzytelniania JMX upewnij się, że OpsCenter i nodetool są skonfigurowane do używania uwierzytelniania.
Procedura
Poniżej przedstawiono kroki umożliwiające włączenie uwierzytelniania JMX.
- 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-env.sh
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 użytkownika, z którym uruchamiasz Cassandrę, i zmień uprawnienia tylko do odczytu
chown cassandra:cassandra /etc/cassandra/jmxremote.passwordchmod 400 /etc/cassandra/jmxremote.password
- Edytuj jmxremote.password i dodaj użytkownika i hasło dla narzędzi zgodnych z JMX:
monitorRole QEDcontrolRole R&Dcassandra cassandrapassword
- Dodaj użytkownika Cassandra z uprawnieniami do odczytu i zapisu do /jdk_install_location/lib/management/jmxremote.access
monitorRole readonlycassandra readwritecontrolRole readwrite \create javax.management.monitor.,javax.management.timer. \unregister
- Uruchom ponownie Cassandrę
- Uruchom nodetool z użytkownikiem i hasłem Cassandra.
$ nodetool status -u cassandra -pw cassandra
Podsumowanie:
W tym samouczku wyjaśniono bezpieczeństwo w Cassandrze i konfigurowanie pliku Cassandra.yaml w celu włączenia zabezpieczeń. Poza tym wyjaśnia również, jak można utworzyć nowe konto użytkownika, przypisać uprawnienia, skonfigurować zaporę ogniową i tak dalej.