Domyślnie Cassandra jest instalowana bez włączonego uwierzytelniania. Oznacza to, że każdy może uzyskać dostęp do Cassandry. Uwierzytelnianie możesz włączyć po zainstalowaniu Edge lub w ramach procesu instalacji.
Role możesz dodawać, usuwać i modyfikować za pomocą instrukcji CREATE/ALTER/DROP ROLES w Cassandrze. Więcej informacji znajdziesz w tych artykułach:
Ogólne uwagi
- Gdy włączysz uwierzytelnianie Cassandry, Cassandra automatycznie utworzy domyślnego superużytkownika cassandra (z hasłem cassandra). Jest to powszechnie znany superużytkownik, którego nie należy używać w środowisku produkcyjnym. Ponadto uwierzytelnianie za pomocą tego superużytkownika wymaga spójności kworum. Dlatego wszystkie połączenia z Cassandrą uwierzytelniające się za pomocą tego użytkownika wymagają większej spójności, co skutkuje wolniejszym działaniem i mniejszą odpornością na awarie.
- Typowy proces obejmuje włączenie uwierzytelniania w Cassandrze przy jednoczesnym przekazywaniu niestandardowej nazwy użytkownika i hasła za pomocą pliku konfiguracji. Spowoduje to utworzenie niestandardowego użytkownika i hasła, których możesz bezpiecznie używać. Uwierzytelnianie za pomocą takich użytkowników nie ma ograniczeń dotyczących spójności kworum.
- Pamiętaj, że nawet jeśli utworzono niestandardowego użytkownika, Cassandra nadal tworzy domyślnego superużytkownika cassandra, a do klastra Cassandra można uzyskać dostęp za pomocą tego superużytkownika. Zazwyczaj należy użyć polecenia ALTER ROLE, aby zmienić hasło tego użytkownika cassandra na inne niż domyślne cassandra po pomyślnym włączeniu uwierzytelniania Cassandry w Apigee. Zapisz to hasło, aby móc z niego korzystać w przyszłości.
- NIE należy zmieniać hasła roli, której komponenty edge-* używają do uwierzytelniania, ponieważ spowoduje to natychmiastowe przerwanie działania usługi. Zamiast tego utwórz nowego użytkownika, zmodyfikuj edge-* komponenty, aby używały nowego użytkownika, a następnie usuń starego użytkownika za pomocą polecenia DROP ROLE.
- Aby zmienić rolę używaną przez komponenty edge-* do uwierzytelniania w Cassandrze, wykonaj te czynności:
- Aby utworzyć nowego użytkownika, wykonaj czynności opisane w sekcji zatytułowanej Włączanie uwierzytelniania. Jeśli uwierzytelnianie jest już włączone w klastrze i zmieniono hasło użytkownika cassandra, musisz przekazać kombinację nazwy użytkownika i hasła istniejącego użytkownika za pomocą parametrów
CASS_EXISTING_USERNAMEiCASS_EXISTING_PASSWORD. - Po zakończeniu sprawdź za pomocą cqlsh, czy możesz połączyć się z Cassandrą za pomocą starego i nowego użytkownika.
- Skieruj wszystkie komponenty _edge-* na nowo utworzonego użytkownika, aby połączyć się z Cassandrą, wykonując instrukcje opisane w artykule Aktualizowanie komponentów Edge łączących się z Cassandrą.
- Gdy wszystkie komponenty będą używać nowego użytkownika do komunikacji z Cassandrą, możesz usunąć starego użytkownika za pomocą polecenia
DROP ROLE. Pamiętaj, że nie należy usuwać domyślnej roli cassandra. Możesz usunąć wszystkie role utworzone przez użytkownika, które nie są używane przez komponenty edge-* do komunikacji z Cassandrą.
- Aby utworzyć nowego użytkownika, wykonaj czynności opisane w sekcji zatytułowanej Włączanie uwierzytelniania. Jeśli uwierzytelnianie jest już włączone w klastrze i zmieniono hasło użytkownika cassandra, musisz przekazać kombinację nazwy użytkownika i hasła istniejącego użytkownika za pomocą parametrów
- Pamiętaj, aby zaktualizować nazwę użytkownika i hasło funkcjonalne Cassandry w pliku konfiguracji, którego używasz do instalowania lub uaktualniania komponentów Edge. Pozwoli to wyeliminować lub zminimalizować zakłócenia podczas operacji Edge.
Włączanie uwierzytelniania Cassandry podczas instalacji
Uwierzytelnianie Cassandry możesz włączyć podczas instalacji.
Aby włączyć uwierzytelnianie Cassandry podczas instalacji, dodaj właściwość CASS_AUTH
do pliku konfiguracji wszystkich węzłów Cassandry:
CASS_AUTH=y # The default value is n.
Następujące komponenty Edge mają dostęp do Cassandry:
- Serwer zarządzania
- Procesory komunikatów
- Routery
- Serwery Qpid
- Serwery Postgres
Podczas instalowania tych komponentów musisz ustawić nazwę użytkownika i hasło w pliku konfiguracji:
CASS_USERNAME=cassandra_username CASS_PASSWORD=cassandra_password
Po zainstalowaniu Cassandry możesz zmienić jej dane logowania. Jeśli jednak serwer zarządzania, procesory komunikatów, routery, serwery Qpid lub serwery Postgres zostały już zainstalowane, musisz też zaktualizować te komponenty, aby używały nowych danych logowania.
Aby zmienić dane logowania Cassandry po jej zainstalowaniu:
- Zaloguj się w dowolnym węźle Cassandry za pomocą narzędzia
cqlshi domyślnych danych logowania. Hasło musisz zmienić tylko w jednym węźle, a zostanie ono rozgłoszone do wszystkich węzłów Cassandry w pierścieniu:/opt/apigee/apigee-cassandra/bin/cqlsh cassIP 9042 -u cassandra_username -p cassandra_password
Gdzie:
- cassIP to adres IP węzła Cassandry.
- 9042 to domyślny port Cassandry.
- Aby zaktualizować hasło, wykonaj to polecenie w wierszu poleceń cqlsh>:
ALTER ROLE <username> WITH PASSWORD='
'; - Zamknij narzędzie
cqlsh, jak pokazano w tym przykładzie:exit
- Jeśli nie masz jeszcze zainstalowanego serwera zarządzania, procesorów komunikatów,
routerów, serwerów Qpid ani serwerów Postgres, ustaw te właściwości w
pliku konfiguracji, a następnie zainstaluj te komponenty:
CASS_USERNAME=cassandra_username CASS_PASSWORD=new_cassandra_password
- Jeśli serwer zarządzania, procesory wiadomości, routery, serwery Qpid lub serwery Postgres zostały już zainstalowane , zapoznaj się z artykułem Resetowanie haseł Edge , aby dowiedzieć się, jak zaktualizować te komponenty, aby używały nowego hasła.
Włączanie uwierzytelniania Cassandry po instalacji
Aby włączyć uwierzytelnianie po instalacji:
- Zaktualizuj wszystkie komponenty Edge, które łączą się z Cassandrą, podając nazwę użytkownika i hasło Cassandry.
- Włącz uwierzytelnianie we wszystkich węzłach Cassandry, i ustaw nazwę użytkownika oraz hasło Cassandry w dowolnym węźle. Dane logowania musisz zmienić tylko w jednym węźle Cassandry, a zostaną one rozgłoszone do wszystkich węzłów Cassandry w pierścieniu.
Aktualizowanie komponentów Edge łączących się z Cassandrą
Aby zaktualizować wszystkie komponenty Edge, które komunikują się z Cassandrą , za pomocą nowych danych logowania, wykonaj te czynności. Pamiętaj, że ten krok wykonujesz przed zaktualizowaniem danych logowania Cassandry:
- W węźle serwera zarządzania uruchom to polecenie:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server store_cassandra_credentials -u cassandra_username -p cassandra_password
Opcjonalnie możesz przekazać do polecenia plik zawierający nową nazwę użytkownika i hasło:
apigee-service edge-management-server store_cassandra_credentials -f configFile
Gdzie configFile zawiera te informacje:
CASS_USERNAME=cassandra_username # Default is cassandra CASS_PASSWORD='cassandra_password' # Default is cassandra; wrap in single quotes if it includes special chars
To polecenie automatycznie ponownie uruchamia serwer zarządzania.
- Powtórz krok 1 w przypadku każdej z tych usług:
- Wszystkie procesory komunikatów
- Wszystkie routery
- Wszystkie serwery Qpid (edge-qpid-server)
- Serwery Postgres (edge-postgres-server)
Gdy powtórzysz krok 1 w przypadku każdej usługi, zastąp
edge-management-serverw poleceniu powyżej odpowiednią nazwą usługi. Na przykład, gdy wykonujesz ten krok w przypadku usługi routera, użyj tego polecenia:/opt/apigee/apigee-service/bin/apigee-service edge-router store_cassandra_credentials -u cassandra -p cassandra
Włączanie uwierzytelniania
Aby włączyć uwierzytelnianie Cassandry i ustawić nazwę użytkownika oraz hasło:
- Utwórz cichy plik konfiguracji z treścią pokazaną poniżej:
# Specify IP address or DNS name of cassandra node IP1=192.168.1.1 IP2=192.168.1.2 IP3=192.168.1.3 # Must resolve to IP address or DNS name of host HOSTIP=$(hostname -i) # Set to ‘y’ to enable Cassandra authentication. CASS_AUTH=y # Possible values are ‘y/n’ # Cassandra username. If it does not exist, this user would be created as a SUPERUSER CASS_USERNAME=cassandra_username # Default value is cassandra - don't use for production # Cassandra Password. If CASS_USERNAME does not exist, create SUPERUSER with this as password CASS_PASSWORD=cassandra_password # Default value is cassandra - don't use for production # Space-separated IP/DNS names of the Cassandra hosts CASS_HOSTS="$IP1:1,1 $IP2:1,1 $IP3:1,1" # Username of an existing C* user. Only needed if you have disabled or changed details of the default cassandra user(‘cassandra’) CASS_EXISTING_USERNAME=existing_cassandra_username # Password of an existing C* user. Only needed if you have disabled or change password of the default cassandra user(‘cassandra’) CASS_EXISTING_PASSWORD=existing_cassandra_password # Cassandra port CASS_PORT=9042 # The default port is 9042.
Zaloguj się w pierwszym węźle Cassandry i wykonaj to polecenie:
apigee-service apigee-cassandra enable_cassandra_authentication -f CONFIG
Opcjonalnie możesz przekazać właściwości jako argumenty polecenia do skryptu, jak pokazano w tym przykładzie:
CASS_AUTH=y HOSTIP=$(hostname -i) CASS_PORT=9042 CASS_EXISTING_USERNAME=existing_cassandra_username CASS_EXISTING_PASSWORD=existing_cassandra_password CASS_USERNAME=cassandra_username CASS_PASSWORD=cassandra_password CASS_HOSTS="192.168.1.1:1,1 192.168.1.2:1,1 192.168.1.3:1,1" apigee-service apigee-cassandra enable_cassandra_authentication
Uwagi:
- W przypadku domyślnych danych logowania Cassandry powyższe polecenie włącza uwierzytelnianie Cassandry i ponownie uruchamia Cassandrę.
- W przypadku innych niż domyślne danych logowania polecenie zmienia też współczynnik replikacji, tworzy a
superużytkownika i uruchamia naprawę w
system_auth keyspace.
- Powtórz kroki 1 i 2 we wszystkich węzłach Cassandry.