Cassandra Security: Utwórz użytkownika & Uwierzytelnianie za pomocą JMX

Spisie treści:

Anonim

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.

  1. WSZYSTKO
  2. ZMIENIAĆ
  3. AUTORYZUJ
  4. STWÓRZ
  5. UPUSZCZAĆ
  6. MODYFIKOWAĆ
  7. 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.

  1. 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
  1. 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
  1. 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
  1. Edytuj jmxremote.password i dodaj użytkownika i hasło dla narzędzi zgodnych z JMX:
monitorRole QEDcontrolRole R&Dcassandra cassandrapassword
  1. 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
  1. Uruchom ponownie Cassandrę
  2. 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.