Wprowadzenie do Apigee mTLS

Funkcja mTLS w Apigee zwiększa bezpieczeństwo komunikacji między komponentami w klastrze Edge for chmura prywatna.

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

Apigee mTLS zapewnia standardowy sposób konfigurowania i instalowania siatki usług. Obsługuje zarządzanie pakietami i automatyzację konfiguracji.

Usługi pośredniczące Consul są ściśle powiązane jako przypisania portów dla poszczególnych procesów, więc zmiana w jednym węźle wpływa na wszystkie pozostałe węzły. W związku z tym, jeśli topologia ulegnie zmianie, musisz ponownie skonfigurować i zainicjować usługi na każdym węźle w klastrze.

Zanim zainstalujesz Apigee mTLS, Twoje środowisko musi spełniać wymagania opisane w tej sekcji.

Oto te wymagania:

  • Wersja Edge dla chmury prywatnej
  • Zestaw zainstalowanych i włączonych narzędzi
  • konto użytkownika z odpowiednim poziomem uprawnień,
  • komputer administracyjny (zalecane),

Wymagania dotyczące Edge dla chmury prywatnej

Apigee mTLS obsługuje tę wersję Edge for Private Cloud (ale nie na wszystkich obsługiwanych platformach, jak opisano w sekcji Wymagania dotyczące systemu operacyjnego):

  • 4.19.06
  • 4.19.01

Apigee mTLS wymaga, aby klaster chmury prywatnej używał topologii obejmującej 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.

Wymagania dotyczące systemu operacyjnego

Apigee mTLS obsługuje te platformy dla klastra chmury prywatnej (obsługiwany system operacyjny dla mTLS zależy od wersji chmury prywatnej):

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

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

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ł, którego można używać do wykonywania różnych zadań opisanych w tym dokumencie, takich jak:

  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.

Maszyna administracyjna musi spełniać te wymagania:

  • Pobrano i zainstalowano na nim narzędzia apigee-service i apigee-setup zgodnie z opisem w artykule Instalowanie narzędzia apigee-setup w Edge.
  • Ma dostęp scp/ssh do wszystkich węzłów w klastrze. Aby rozpowszechnić plik konfiguracji i dane logowania, musisz mieć dostęp scp/ssh do wszystkich hostów w klastrze.
  • Masz dostęp na poziomie roota do komputera administracyjnego.

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 członkostwo 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 wykryje tej zmiany i nie zastosuje jej w innych węzłach. 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ę.