Wprowadzenie do Apigee mTLS

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:

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:

  1. Zainstaluj HashiCorp Consul 1.6.2.
  2. Wygeneruj i rozpowszechnij certyfikat/klucz oraz klucz szyfrowania.
  3. 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 oraz apigee-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.