Funkcja mTLS Apigee zwiększa bezpieczeństwo komunikacji między komponentami Edge w klastrze Private Cloud. Zapewnia standardowy sposób konfigurowania i instalacji siatki usług. Obsługuje automatyzację konfiguracji i zarządzanie pakietami.
Omówienie architektury
Aby zapewnić bezpieczną komunikację między komponentami, Apigee mTLS używa siatki usług, która nawiązuje bezpieczne, wzajemnie uwierzytelnione połączenia TLS między komponentami.
Na ilustracji poniżej widać połączenia między komponentami Apigee zabezpieczonymi przez Apigee mTLS (in red). Porty pokazane na obrazie są przykładowe. Listę zakresów, których możesz używać w poszczególnych komponentach, znajdziesz w sekcji Wykorzystanie portów.
Pamiętaj, że porty oznaczone literą „M” są używane do zarządzania komponentem i muszą być otwarte w komponencie, aby mógł uzyskać dostęp do serwera zarządzania.
Jak widać na diagramie powyżej, Apigee mTLS 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 Router, MP, QPid, LDAP, Postgres, Zookeeper i Cassandra | |
Router | Sprzężenie zwrotne; węzły Qpid, Zookeeper i Cassandra | |
procesor komunikatów | Sprzężenie zwrotne; węzły Qpid, Zookeeper i Cassandra | |
ZooKeeper i Cassandra | Inne węzły Zookeeper i Cassandra | |
Interfejs Edge | SMTP (tylko dla zewnętrznych dostawców tożsamości) | |
Postgres | Inne węzły Postgres, Zookeeper i Cassandra |
Szyfrowanie/odszyfrowywanie wiadomości
Siatka usług Apigee mTLS składa się z serwerów Consul, które działają w każdym węźle ZooKeeper w klastrze, oraz następujących usług Consul w każdym węźle klastra:
- Serwer proxy ruchu wychodzącego, który przechwytuje wiadomości wychodzące w węźle hosta. Ta usługa szyfruje wiadomości wychodzące 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 wiadomości przychodzące przed wysłaniem ich do miejsca docelowego.
Jeśli na przykład serwer zarządzania wysyła wiadomość do routera, usługa proxy ruchu wychodzącego przechwytuje wiadomość wychodzącą, szyfruje ją, a następnie wysyła do routera. Gdy węzeł routera otrzyma wiadomość, usługa serwera proxy ruchu przychodzącego odszyfrowuje wiadomość, a następnie przekazuje ją do komponentu Router w celu przetworzenia.
Wszystko to dzieje się w przejrzysty sposób dla komponentów Edge – nie są świadome procesu szyfrowania i odszyfrowywania przeprowadzanego przez usługi proxy Consul.
Dodatkowo Apigee mTLS korzysta z narzędzia iptables
– usługi zapory sieciowej w systemie Linux, która zarządza przekierowywaniem ruchu.
Wymagania
Przed zainstalowaniem 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 do administrowania (zalecane)
- Wykorzystanie portu
W sekcjach poniżej znajdziesz szczegółowe informacje o każdym z tych wymagań.
Wymagania dotyczące topologii
Metoda mTLS z Apigee wymaga, aby topologia środowiska zawierała co najmniej 3 węzły Zookeeper. W związku z tym możesz zainstalować Apigee mTLS tylko w topologii korzystającej z 5, 9, 12 (wiele centrów danych) lub 13 węzłów. Więcej informacji znajdziesz w artykule Topologie instalacji.
Narzędzia/pakiety
Przed rozpoczęciem procesu instalacji na każdym komputerze w klastrze (w tym na komputerze administracyjnym) musi być zainstalowane i włączone następujące pakiety:
Użytkowe/opakowanie | Opis | Czy usunąć po instalacji? |
---|---|---|
base64 |
Weryfikuje dane zawarte w skryptach instalacji. | |
gnu-bash gnu-sed gnu-grep |
Używana przez skrypt instalacji i inne popularne narzędzia. | |
iptables |
Zastępuje domyślną zaporę sieciową firewalld . |
|
iptables-services |
Udostępnia funkcje narzędzia iptables . |
|
lsof |
Używana przez skrypt instalacji. | |
nc |
Weryfikuje iptables tras. |
|
openssl |
Podpisuje certyfikaty lokalnie podczas początkowego procesu wczytywania. |
Podczas instalacji instalujesz też pakiet Consul na komputerze administracyjnym, aby wygenerować dane logowania i klucz szyfrowania.
Pakiet apigee-mtls
instaluje i konfiguruje serwery Consul, w tym serwery proxy ruchu przychodzącego i wychodzącego w węzłach ZooKeeper w klastrze.
Uprawnienia dotyczące konta użytkownika
Przed instalacją utwórz nowe konto użytkownika lub sprawdź, czy masz dostęp do konta z podwyższonymi uprawnieniami.
Konto, które wykonuje instalację Apigee mTLS w każdym węźle klastra, musi mieć możliwość:
- Uruchamianie, zatrzymywanie, ponowne uruchamianie i inicjowanie komponentów Apigee
- Ustaw reguły zapory sieciowej
- Utwórz nowe konto użytkownika systemu operacyjnego
- Włączanie, wyłączanie, uruchamianie, zatrzymywanie i maskowanie usług za pomocą
systemctl
Komputer administracyjny (zalecane)
Apigee zaleca, aby w klastrze był węzeł umożliwiający wykonywanie różnych zadań administracyjnych opisanych w tym dokumencie, takich jak:
- Zainstaluj HashiCorp Consul 1.6.2.
- Wygeneruj i rozpowszechnij certyfikat/klucz oraz klucz szyfrowania.
- Zaktualizuj i rozpowszechnij plik konfiguracji.
Podczas konfigurowania komputera administracyjnego:
- Upewnij się, że masz do niego dostęp poziomu głównego.
- Pobierz i zainstaluj na nim narzędzia
apigee-service
orazapigee-setup
zgodnie z opisem w sekcji Instalowanie narzędzia Edge apigee-setup. - Sprawdź, czy możesz używać
scp/ssh
do uzyskiwania dostępu z komputera administracyjnej do wszystkich węzłów w klastrze. Jest to wymagane, aby można było rozpowszechnić plik konfiguracji i dane logowania.
Wykorzystanie i przypisanie portów
W tej sekcji opisano wykorzystanie portów i przypisania portów na potrzeby komunikacji Consul z Apigee mTLS.
Wykorzystanie portów: wszystkie węzły obsługujące apigee-mtls
Wszystkie węzły w klastrze korzystające z usługi apigee-mtls
muszą zezwalać na połączenia z usług na lokalnym hoście (127.0.0.1). Dzięki temu serwery proxy Consul mogą komunikować się z innymi usługami w trakcie przetwarzania wiadomości przychodzących i wychodzących.
Wykorzystanie portu: węzły serwera Consul (węzły obsługujące ZooKeeper)
Aby akceptować żądania ze wszystkich węzłów w klastrze, musisz otworzyć większość z tych portów w węzłach serwera Consul (węzłów z aplikacją 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 |
Obsługuje wiadomości o członkostwie i transmisjach w klastrze. | UDP/TCP | ||
8302 |
Port WAN, który obsługuje wiadomości członkowskie i transmitowanie w konfiguracji wielu centrów danych. | UDP/TCP | ||
8500 |
Obsługuje połączenia HTTP z interfejsami API serwera Consul z procesów w tym samym węźle.
Ten port nie jest używany do zdalnej komunikacji ani koordynacji. Nasłuchuje tylko na lokalnym hoście. |
HTTP | ||
8502 |
Obsługuje połączenia gRPC+HTTPS z interfejsami Consul Server API z innych węzłów w klastrze. | gRPC+HTTPS | ||
8503 |
Obsługuje połączenia HTTPS z interfejsami Consul Server API z innych węzłów w klastrze. | HTTPS | ||
8600 |
Obsługuje DNS serwera Consul. | UDP/TCP | ||
* Apigee zaleca ograniczenie żądań przychodzących tylko do członków klastra (z uwzględnieniem wielu magazynów danych). Możesz to zrobić w aplikacji iptables .
|
Jak pokazujemy w tabeli, węzły z komponentem consul-server
(węzły ZooKeeper) muszą otwierać porty 8301, 8302, 8502 i 8503 do wszystkich użytkowników klastra, na których działa usługa 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 uruchomionych ZooKeeper)
Aby obsługiwać komunikację Consul, węzły obsługujące te komponenty Apigee muszą zezwalać na połączenia zewnętrzne z portami w tych zakresach:
Komponent Apigee | Zakres | Wymagana liczba portów na węzeł |
---|---|---|
Apigee mTLS | 10 700–10 799 | 1 |
Cassandra | 10 100–10 199 | 2 |
procesor komunikatów | 10 500–10 599 | 2 |
OpenLDAP | 10 200–10 299 | 1 |
Postgres | 10 300–10 399 | 3 |
Qpid | 10 400–10 499 | 2 |
Router | 10 600–10 699 | 2 |
ZooKeeper | 10 000–10 099 | 3 |
Konsul przypisuje porty w liniowy sposób. Jeśli na przykład klaster ma 2 węzły Postgres, pierwszy węzeł korzysta z 2 portów, więc Consul przypisuje do niego porty 10300 i 10301. Drugi węzeł też używa 2 portów, więc Consol przypisuje do niego numery 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 razy po 2 porty każdy).
Pamiętaj:
- Serwery proxy Consul nie mogą nasłuchiwać na tych samych portach co usługi Apigee.
- Consul ma tylko 1 przestrzeń adresową portu. Przypisania portów serwera proxy Consul muszą być unikalne w całym klastrze, w tym 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 różni się w zależności od topologii, jak opisano wcześniej.
W konfiguracji obejmującej wiele centrów danych wszystkie hosty obsługujące mTLS muszą też otworzyć port 8302.
Możesz dostosować domyślne porty używane przez Apigee mTLS. Aby dowiedzieć się, jak to zrobić, przeczytaj artykuł Dostosowywanie zakresu portów serwera proxy.
Ograniczenia
Apigee mTLS ma te ograniczenia:
- Nie szyfruje komunikacji między węzłami Cassandra (port 7000)
- Konfiguracja nie jest idempotentna. Oznacza to, że jeśli wprowadzisz jedną zmianę w jednym węźle, musisz ją wprowadzić także we wszystkich węzłach. System nie zastosuje jej na żadnym innym węźle. Więcej informacji znajdziesz w artykule o zmienianiu istniejącej konfiguracji apigee-mtls.
Terminologia
W tej sekcji użyto następującej terminologii:
Termin | Definicja |
---|---|
klaster | Grupa maszyn tworzących Edge na potrzeby instalacji Private Cloud. |
Konsul | Siatka usług używana przez Apigee mTLS. Informacje o tym, jak Consul zabezpiecza komunikację w chmurze prywatnej, znajdziesz w artykule o modelu zabezpieczeń Consula. |
mTLS | Wzajemne uwierzytelnianie TLS. |
siatka usług | Sieć nakładki (lub sieć w sieci). |
Protokół TLS | Zabezpieczenia warstwy transakcji. Standardowy w branży protokół uwierzytelniania do bezpiecznej komunikacji. |