Wprowadzenie do Apigee mTLS

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:

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:

  1. Zainstaluj HashiCorp Consul w wersji 1.6.2.
  2. wygenerować i rozpowszechnić parę kluczy certyfikatu oraz klucz szyfrowania plotek;
  3. 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-serviceapigee-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ę.