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.

Skonfiguruj uwierzytelnianie i autoryzację

  • 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".

Logowanie

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.

Logowanie

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;

Utwórz nowego użytkownika

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ń.

  1. WSZYSTKO
  2. ZMIANA
  3. AUTORYZUJ
  4. TWORZENIE
  5. DROP
  6. MODYFIKOWAĆ
  7. 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.

Autoryzacja

select* form emp_bonus;

Możesz uzyskać listę wszystkich uprawnień przypisanych do użytkownika. Oto przykład uzyskania informacji o uprawnieniach.

Autoryzacja

list all permissions of laura;

Możesz także wyświetlić listę wszystkich uprawnień do zasobu. Oto przykład uzyskania pozwolenia z tabeli.

Autoryzacja

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.

  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-środ.sz

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 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
  1. Edytuj jmxremote.password i dodaj użytkownika i hasło dla narzędzi zgodnych z JMX:
monitorRole QED 
controlRole R&D 
cassandra cassandrapassword
  1. 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
  1. restart Cassandra
  2. 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.