Funkcja mTLS w Apigee zwiększa bezpieczeństwo komunikacji między komponentami w klastrze Edge dla chmury prywatnej. Zapewnia standardowy sposób konfigurowania i instalowania siatki usług. Obsługuje zarządzanie pakietami i automatyzację konfiguracji.
Omówienie architektury
Aby zapewnić bezpieczną komunikację między komponentami, Apigee mTLS korzysta z sieci usług, która ustanawia bezpieczne, wzajemnie uwierzytelnione połączenia TLS między komponentami.
Na poniższym obrazie przedstawiono połączenia między komponentami Apigee, które są zabezpieczone przez Apigee mTLS (in red). Porty widoczne na obrazie są przykładowe. Listę zakresów, z których może korzystać każdy komponent, znajdziesz w sekcji Użycie portów.
(Pamiętaj, że porty oznaczone literą „M” służą do zarządzania komponentem i muszą być otwarte na tym komponencie, aby serwer zarządzający miał do nich dostęp).
Jak widać na powyższym diagramie, mTLS Apigee zwiększa bezpieczeństwo połączeń między większością komponentów w klastrze, w tym:
Źródło | Miejsce docelowe | |
---|---|---|
Serwer zarządzania | węzły routera, MP, QPid, LDAP, Postgres, Zookeeper i Cassandra; | |
Router | Pętla zwrotna; węzły Qpid, Zookeeper i Cassandra | |
procesor komunikatów | Pętla zwrotna; węzły Qpid, Zookeeper i Cassandra | |
ZooKeeper i Cassandra | Inne węzły Zookeeper i Cassandra | |
Interfejs Edge | SMTP (tylko w przypadku zewnętrznego dostawcy tożsamości) | |
Postgres | Inne węzły Postgres, Zookeeper i Cassandra |
Szyfrowanie i odszyfrowywanie wiadomości
Siatka usług mTLS Apigee składa się z serwerów Consul, które działają na każdym węźle ZooKeeper w klastrze, oraz z tych usług Consul na każdym węźle w klastrze:
- Serwer proxy ruchu wychodzącego, który przechwytuje wiadomości wychodzące w węźle hosta. Ta usługa szyfruje wychodzące wiadomości przed wysłaniem ich do miejsca docelowego.
- Serwer proxy ruchu przychodzącego, który przechwytuje wiadomości przychodzące w węźle hosta. Ta usługa odszyfrowuje przychodzące wiadomości przed wysłaniem ich do miejsca docelowego.
Na przykład, gdy serwer zarządzający wysyła wiadomość do routera, usługa proxy wyjścia przechwytuje wiadomość wychodzącą, szyfruje ją, a następnie wysyła do routera. Gdy węzeł routera otrzyma wiadomość, usługa proxy wejścia odszyfruje ją, a następnie przekaże do komponentu routera w celu przetworzenia.
Wszystko to odbywa się w sposób przejrzysty dla komponentów Edge: nie mają one świadomości procesu szyfrowania i odszyfrowywania przeprowadzanego przez usługi proxy Consul.
Dodatkowo Apigee mTLS korzysta z narzędzia iptables
, czyli usługi zapory sieciowej systemu Linux, która zarządza przekierowywaniem ruchu.
Wymagania
Zanim zainstalujesz Apigee mTLS, Twoje środowisko musi spełniać te wymagania:
- Wymagania dotyczące topologii
- Zainstalowane i włączone narzędzia
- Konto użytkownika z odpowiednim poziomem uprawnień
- Komputer administracyjny (zalecany)
- Wykorzystanie portu
W sekcjach poniżej znajdziesz szczegółowe informacje o każdym z tych wymagań.
Wymagania dotyczące topologii
Apigee mTLS wymaga, aby topologia środowiska zawierała co najmniej 3 węzły Zookeeper. W rezultacie możesz zainstalować Apigee mTLS tylko w topologiach, które używają 5, 9, 12 (wielu centrów danych) lub 13 węzłów. Więcej informacji znajdziesz w artykule Topologie instalacji.
Narzędzia/pakiety
Apigee mTLS wymaga, aby przed rozpoczęciem procesu instalacji na każdym komputerze w klastrze, w tym na komputerze administracyjnym, były zainstalowane i włączone te pakiety:
Narzędzie/pakiet | Opis | Czy można usunąć po instalacji? |
---|---|---|
base64 |
Weryfikuje dane w skryptach instalacyjnych. | |
gnu-bash gnu-sed gnu-grep |
Używany przez skrypt instalacyjny i inne popularne narzędzia. | |
iptables |
Zastępuje domyślną zaporę sieciową firewalld . |
|
iptables-services |
Zapewnia funkcjonalność narzędzia iptables . |
|
lsof |
Używany przez skrypt instalacyjny. | |
nc |
Weryfikacja obejmuje te aplikacje: iptables |
|
openssl |
Podpisuje certyfikaty lokalnie podczas wstępnego procesu uruchamiania. |
Podczas instalacji na komputerze administracyjnym instalujesz też pakiet Consul, aby móc generować dane logowania i klucz szyfrowania.
Pakiet apigee-mtls
instaluje i konfiguruje serwery Consul, w tym proxy wejściowe i wyjściowe w węzłach ZooKeeper w klastrze.
Uprawnienia konta użytkownika
Przed instalacją utwórz nowe konto użytkownika lub upewnij się, że masz dostęp do konta z podwyższonymi uprawnieniami.
Konto, które wykonuje instalację Apigee mTLS w każdym węźle klastra, musi mieć uprawnienia do:
- Uruchamianie, zatrzymywanie, ponowne uruchamianie i inicjowanie komponentów Apigee
- Ustaw reguły zapory sieciowej
- Tworzenie nowego konta użytkownika systemu operacyjnego
- Włączanie, wyłączanie, uruchamianie, zatrzymywanie i maskowanie usług za pomocą
systemctl
Maszyna administracyjna (zalecana)
Apigee zaleca, aby w klastrze znajdował się węzeł, w którym można wykonywać różne zadania administracyjne opisane w tym dokumencie, w tym:
- Zainstaluj HashiCorp Consul w wersji 1.6.2.
- wygenerować i rozpowszechnić parę kluczy certyfikatu oraz klucz szyfrowania plotek;
- Zaktualizuj i rozpowszechnij plik konfiguracji.
Podczas konfigurowania urządzenia administracyjnego:
- Sprawdź, czy masz do niego dostęp do roota.
- Pobierz i zainstaluj na nim narzędzia
apigee-service
iapigee-setup
zgodnie z opisem w artykule Instalowanie narzędzia Edge apigee-setup. - Upewnij się, że możesz użyć
scp/ssh
, aby uzyskać dostęp do wszystkich węzłów w klastrze z komputera administracyjnego. Jest to wymagane, aby można było rozpowszechniać plik konfiguracji i dane logowania.
Wykorzystanie i przypisywanie portów
W tej sekcji opisujemy użycie portów i przypisywanie portów na potrzeby komunikacji usługi Consul z mTLS Apigee.
Wykorzystanie portów: wszystkie węzły z apigee-mtls
Wszystkie węzły w klastrze, które korzystają z usługi apigee-mtls
, muszą zezwalać na połączenia z usługami na hoście lokalnym (127.0.0.1). Umożliwia to serwerom proxy Consul komunikowanie się z innymi usługami podczas przetwarzania przychodzących i wychodzących wiadomości.
Wykorzystanie portu: węzły serwera Consul (węzły z ZooKeeper)
Aby akceptować żądania ze wszystkich węzłów w klastrze, musisz otworzyć większość tych portów na węzłach serwera Consul (węzłach z usługą ZooKeeper):
Węzeł | Port serwera Consul | Opis | Protokół | Zezwalaj na zewnętrzne agenty mTLS * |
---|---|---|---|---|
Serwer Consul (węzły ZooKeeper) | 8300 |
Łączy wszystkie serwery Consul w klastrze. | RPC | |
8301 |
Zarządza członkostwem i wiadomościami rozgłoszeniowymi w klastrze. | UDP/TCP | ||
8302 |
Port WAN, który obsługuje wiadomości dotyczące członkostwa i transmisji w konfiguracji z wieloma centrami danych. | UDP/TCP | ||
8500 |
Obsługuje połączenia HTTP z interfejsami API serwera Consul z procesów na tym samym węźle.
Ten port nie jest używany do komunikacji ani koordynacji zdalnej. Nasłuchuje tylko na hoście lokalnym. |
HTTP | ||
8502 |
Obsługuje połączenia gRPC+HTTPS z interfejsami API serwera Consul z innych węzłów w klastrze. | gRPC+HTTPS | ||
8503 |
Obsługuje połączenia HTTPS z interfejsami API serwera Consul z innych węzłów w klastrze. | HTTPS | ||
8600 |
Obsługuje DNS serwera Consul. | UDP/TCP | ||
* Apigee zaleca ograniczenie przychodzących żądań tylko do członków klastra (w tym między różnymi magazynami danych). Możesz to zrobić za pomocą iptables .
|
Jak widać w tej tabeli, węzły z komponentem consul-server
(węzły ZooKeeper) muszą otwierać porty 8301, 8302, 8502 i 8503 dla wszystkich członków klastra, którzy korzystają z usługi apigee-mtls
, nawet w różnych centrach danych. Węzły, na których nie działa ZooKeeper, nie muszą otwierać tych portów.
Przypisania portów do wszystkich węzłów Consul (w tym węzłów z ZooKeeperem)
Aby obsługiwać komunikację z Consulem, węzły z tymi komponentami Apigee muszą zezwalać na połączenia zewnętrzne z portami w tych zakresach:
Komponent Apigee | Zakres | Liczba portów wymaganych na węzeł |
---|---|---|
Apigee mTLS | 10700–10799 | 1 |
Cassandra | 10100–10199 | 2 |
procesor komunikatów | 10500–10599 | 2 |
SymasLDAP | 10200–10299 | 1 |
Postgres | 10300–10399 | 3 |
Qpid | 10400–10499 | 2 |
Router | 10600–10699 | 2 |
ZooKeeper | 10000–10099 | 3 |
Consul przypisuje porty w prosty sposób liniowy. Jeśli na przykład klaster ma 2 węzły Postgres, pierwszy węzeł używa 2 portów, więc Consul przypisuje mu porty 10300 i 10301. Drugi węzeł również używa 2 portów, więc Consol przypisuje do niego porty 10302 i 10303. Dotyczy to wszystkich typów komponentów.
Jak widać, rzeczywista liczba portów zależy od topologii: jeśli klaster ma 2 węzły Postgres, musisz otworzyć 4 porty (2 węzły po 2 porty każdy).
Pamiętaj:
- Pełnomocnicy Consul nie mogą nasłuchiwać na tych samych portach co usługi Apigee.
- Consul ma tylko jedną przestrzeń adresów portów. Przypisania portów serwera proxy Consul muszą być unikalne w całym klastrze, w tym w centrach danych. Oznacza to, że jeśli serwer proxy A na hoście A nasłuchuje na porcie 15000, serwer proxy B na hoście B nie może nasłuchiwać na porcie 15000.
- Liczba używanych portów zależy od topologii, jak opisano wcześniej.
W konfiguracji z wieloma centrami danych wszystkie hosty z mTLS muszą też otwierać port 8302.
Możesz dostosować domyślne porty używane przez Apigee mTLS. Informacje o tym, jak to zrobić, znajdziesz w artykule Dostosowywanie zakresu portów serwera proxy.
Ograniczenia
Apigee mTLS ma te ograniczenia:
- Nie szyfruje komunikacji między węzłami Cassandra (port 7000)
- Konfiguracja i ustawienia nie są idempotentne. Oznacza to, że jeśli wprowadzisz zmianę w jednym węźle, musisz wprowadzić tę samą zmianę we wszystkich węzłach. System nie zastosuje tej zmiany w żadnym innym węźle. Więcej informacji znajdziesz w artykule Zmienianie istniejącej konfiguracji apigee-mtls.
Terminologia
W tej sekcji używamy tych terminów:
Termin | Definicja |
---|---|
klaster | Grupa maszyn, które składają się na instalację Edge w chmurze prywatnej. |
Consul | Sieć usług używana przez Apigee mTLS. Informacje o tym, jak Consul zabezpiecza komunikację w chmurze prywatnej, znajdziesz w modelu bezpieczeństwa usługi Consul. |
mTLS | wzajemne uwierzytelnianie TLS. |
siatka usług | Sieć nakładkowa (czyli sieć w sieci). |
TLS | Transaction Layer Security. Standardowy protokół uwierzytelniania zapewniający bezpieczną komunikację. |