Wprowadzenie do Apigee mTLS

Funkcja mTLS w Apigee zwiększa bezpieczeństwo komunikacji między komponentami w klastrze Edge for chmura prywatna. Zapewnia standardowy sposób konfigurowania i instalowania siatki usług. Obsługuje automatyzację zarządzania pakietami i konfiguracji.

Omówienie architektury

Aby zapewnić bezpieczną komunikację między komponentami, Apigee mTLS używa siatki usług, która ustanawia bezpieczne, wzajemnie uwierzytelnione połączenia TLS między komponentami.

Obraz poniżej przedstawia połączenia między komponentami Apigee, które są zabezpieczone przez Apigee mTLS (in red). Porty pokazane na obrazie są przykładowe. Listę zakresów, których może używać każdy komponent, znajdziesz w artykule o używaniu portów.

(Pamiętaj, że porty oznaczone literą „M” służą do zarządzania komponentem i muszą być otwarte na komponencie, aby serwer zarządzania miał do nich dostęp).

Jak widać na powyższym diagramie, 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 routera, procesora wiadomości, 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 w przypadku zewnętrznego dostawcy 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ą 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 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.

Na przykład gdy serwer zarządzania wysyła wiadomość do routera, usługa pośrednicząca ruchu wychodzącego przechwytuje wiadomość wychodzącą, szyfruje ją, a następnie wysyła do routera. Gdy węzeł routera otrzyma wiadomość, usługa pośrednicząca ruchu przychodzącego odszyfrowuje ją, a następnie przekazuje do komponentu routera w celu przetworzenia.

Wszystko to odbywa się w sposób przejrzysty dla komponentów Edge: nie są one świadome procesu szyfrowania i odszyfrowywania przeprowadzanego przez usługi pośredniczące Consul.

Dodatkowo Apigee mTLS używa narzędzia iptables, 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 poszczególnych wymaganiach.

Wersja, platforma i topologia

W tabeli poniżej znajdziesz wymagania dotyczące mTLS:

Wymaganie Opis
Wersje
  • 4.51.00
  • 4.50.00
  • 4.19.06
Topologia Musi zawierać co najmniej 3 węzły ZooKeeper. W związku z tym Apigee mTLS można zainstalować tylko w topologiach, które używają 5, 9, 12 (wiele centrów danych) lub 13 węzłów. Więcej informacji znajdziesz w artykule o topologiach instalacji.
Platformy i systemy operacyjne

Użyj tych wartości, aby określić, czy Apigee mTLS jest obsługiwany w konkretnym systemie operacyjnym:

System operacyjny Obsługiwana wersja chmury prywatnej
v4.19.06 v4.50.00 v4.51.00
CentOS
RedHat Enterprise Linux (RHEL)
Oracle Linux
7.5, 7.6, 7.7 7.5, 7.6, 7.7, 7.8, 7.9 7.5, 7.6, 7.7, 7.8, 7.9, 8.0

Pamiętaj, że Apigee mTLS nie musi obsługiwać wszystkich systemów operacyjnych obsługiwanych przez odpowiednią wersję Apigee Edge dla chmury prywatnej, na której działa.

Jeśli na przykład wersja 4.19.06 obsługuje CentOS x i y, nie musi to oznaczać, że mTLS Apigee jest obsługiwany w CentOS x i y w wersji 4.19.06.

Narzędzia/pakiety

Zanim rozpoczniesz proces instalacji, Apigee mTLS wymaga zainstalowania i włączenia na każdym komputerze w klastrze, w tym na komputerze administracyjnym, tych pakietów:

Narzędzie/pakiet Opis Czy można usunąć po instalacji?
base64 Weryfikuje dane w skryptach instalacyjnych.
gnu-bash
gnu-sed
gnu-grep
Używane przez skrypt instalacyjny i inne popularne narzędzia.
iptables Zastępuje domyślną zaporę sieciową firewalld.
iptables-services Zapewnia funkcje narzędzia iptables.
lsof Używane przez skrypt instalacyjny.
nc Weryfikacja obejmuje te trasy: iptables.
openssl Podpisuje certyfikaty lokalnie podczas początkowego procesu uruchamiania.

Podczas instalacji na komputerze administracyjnym instalujesz też pakiet Consul, aby móc 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 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 na każdym węźle w klastrze, musi mieć możliwość:

  • 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 (zalecane)

Apigee zaleca, aby w klastrze znajdował się węzeł, na którym można wykonywać różne zadania administracyjne opisane w tym dokumencie, w tym:

  1. Zainstaluj HashiCorp Consul 1.6.2.
  2. Wygeneruj i rozpowszechnij parę certyfikat/klucz oraz klucz szyfrowania protokołu Gossip.
  3. Zaktualizuj i rozpowszechnij plik konfiguracji.

Podczas konfigurowania komputera administracyjnego:

  • Upewnij się, że masz do niego dostęp na poziomie roota.
  • Pobierz i zainstaluj na nim narzędzia apigee-service i apigee-setup zgodnie z opisem w artykule Instalowanie narzędzia apigee-setup w Edge.
  • Upewnij się, że możesz używać 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 przypisanie portów

W tej sekcji opisano użycie portów i przypisanie portów do obsługi komunikacji Consul z Apigee mTLS.

Wykorzystanie portu: wszystkie węzły, na których działa apigee-mtls

Wszystkie węzły w klastrze, które korzystają z usługi apigee-mtls, muszą zezwalać na połączenia z usług na hoście lokalnym (127.0.0.1). Dzięki temu serwery proxy Consul mogą komunikować się z innymi usługami podczas przetwarzania wiadomości przychodzących i wychodzących.

Użycie portów: węzły serwera Consul (węzły, na których działa ZooKeeper)

Aby akceptować żądania ze wszystkich węzłów w klastrze, musisz otworzyć większość z tych portów na węzłach serwera Consul (węzłach, na których działa 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 członkostwo i komunikaty w klastrze. UDP/TCP
8302 Port WAN, który obsługuje komunikaty o członkostwie i komunikaty w konfiguracji z wieloma centrami 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 komunikacji zdalnej ani koordynacji. 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 żądań przychodzących tylko do członków klastra (w tym między magazynami danych). Możesz to zrobić za pomocą iptables.

Jak widać w tej tabeli, węzły, na których działa komponent consul-server (węzły ZooKeeper), muszą otwierać porty 8301, 8302, 8502 i 8503 dla wszystkich członków klastra, na których działa usługa apigee-mtls, nawet w różnych centrach danych. Węzły, które nie korzystają z ZooKeeper, nie muszą otwierać tych portów.

przypisania portów dla wszystkich węzłów Consul (w tym węzłów, na których działa ZooKeeper);

Aby obsługiwać komunikację Consul, węzły, na których działają te komponenty 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
OpenLDAP 10200–10299 1
Postgres 10300–10399 3
Qpid 10400–10499 2
Router 10600–10699 2
ZooKeeper 10001–10099 3

Consul przypisuje porty w prosty, liniowy sposób. 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 Consul przypisuje mu 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).

Uwaga:

  • Serwery proxy Consul nie mogą nasłuchiwać na tych samych portach co usługi Apigee.
  • Consul ma tylko jedną przestrzeń adresową portów. Przypisania portów serwera proxy Consul muszą być unikalne w całym klastrze, który obejmuje centra 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 z wieloma centrami danych wszystkie hosty z mTLS muszą też mieć otwarty port 8302.

Możesz dostosować domyślne porty używane przez Apigee mTLS. Informacje o tym, jak to zrobić, znajdziesz w sekcji 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 konfigurowanie 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 o zmienianiu istniejącej konfiguracji apigee-mtls.

Terminologia

W tej sekcji używamy tych terminów:

Okres obowiązywania Definicja
cluster Grupa maszyn, które tworzą instalację Edge for Private Cloud.
Consul Siatka usług używana przez Apigee mTLS. Informacje o tym, jak Consul zabezpiecza komunikację w chmurze prywatnej, znajdziesz w artykule na temat modelu zabezpieczeń Consula.
mTLS Wzajemnie uwierzytelniony protokół TLS.
siatka usług sieć nakładkowa (czyli sieć w sieci);
TLS Transaction Layer Security. Standardowy protokół uwierzytelniania zapewniający bezpieczną komunikację.