Konfigurowanie mTLS Apigee

Po zainstalowaniu protokołu mTLS Apigee na wszystkich węzłach w klastrze musisz skonfigurować i zainicjować komponent apigee-mtls. Aby to zrobić, wygeneruj parę kluczy i certyfikatów oraz zaktualizuj plik konfiguracji na maszynie administracyjnej. Następnie wdrażasz te same wygenerowane pliki i plik konfiguracji na wszystkich węzłach w klastrze i inicjujesz lokalny komponentapigee-mtls.

Konfigurowanie apige-mtls (po początkowej instalacji)

Z tej sekcji dowiesz się, jak skonfigurować uwierzytelnianie mTLS w Apigee bezpośrednio po pierwszej instalacji. Informacje o aktualizowaniu istniejącej instalacji interfejsu Apigee mTLS znajdziesz w artykule Zmienianie istniejącej konfiguracji apigee-mtls.

Ta sekcja dotyczy instalacji w pojedynczym centrum danych. Informacje o konfigurowaniu mTLS w Apigee w konfiguracji z wieloma centrami danych znajdziesz w artykule Konfigurowanie mTLS w Apigee w wielu centrach danych.

Ogólny proces konfigurowania apigee-mtls:

  1. Zaktualizuj plik konfiguracji: na maszynie administracyjnej zaktualizuj plik konfiguracji, aby uwzględnić ustawienia apigee-mtls.
  2. Zainstaluj usługę Consul i wygeneruj poświadczenia: zainstaluj usługę Consul i (opcjonalnie) użyj jej do wygenerowania poświadczeń TLS (tylko raz).

    Dodatkowo zmodyfikuj plik konfiguracji mTLS w Apigee, aby:

    1. Dodawanie informacji o danych logowania
    2. Definiowanie topologii klastra

    Pamiętaj, że możesz użyć istniejących danych logowania lub wygenerować je za pomocą Consula.

  3. Rozpowszechnij poświadczenia i plik konfiguracji: rozpowszechnij ten sam wygenerowany klucz i certyfikat oraz zaktualizowany plik konfiguracji na wszystkich węzłach w klastrze.
  4. Inicjowanie apige-mtls: zainicjuj komponent apigee-mtls na każdym węźle.

Każdy z tych kroków jest opisany w dalszych sekcjach.

Krok 1. Zaktualizuj plik konfiguracji

W tej sekcji opisaliśmy, jak zmodyfikować plik konfiguracji, aby uwzględniał właściwości konfiguracji mTLS. Więcej ogólnych informacji o pliku konfiguracyjnym znajdziesz w artykule Tworzenie pliku konfiguracyjnego.

Po zaktualizowaniu pliku konfiguracji o właściwości związane z mTLS skopiuj go na wszystkie węzły w klastrze, zanim zainicjujesz na nich komponent apigee-mtls.

Aby zaktualizować plik konfiguracji:

  1. Na komputerze administracyjnym otwórz plik konfiguracji do edycji.
  2. Skopiuj ten zestaw właściwości konfiguracji mTLS i wklej je do pliku konfiguracji:
    ALL_IP="ALL_PRIVATE_IPS_IN_CLUSTER"
    ZK_MTLS_HOSTS="ZOOKEEPER_PRIVATE_IPS"
    CASS_MTLS_HOSTS="CASSANDRA_PRIVATE_IPS"
    PG_MTLS_HOSTS="POSTGRES_PRIVATE_IPS"
    RT_MTLS_HOSTS="ROUTER_PRIVATE_IPS"
    MS_MTLS_HOSTS="MGMT_SERVER_PRIVATE_IPS"
    MP_MTLS_HOSTS="MESSAGE_PROCESSOR_PRIVATE_IPS"
    QP_MTLS_HOSTS="QPID_PRIVATE_IPS"
    LDAP_MTLS_HOSTS="OPENLDAP_PRIVATE_IPS"
    MTLS_ENCAPSULATE_LDAP="y"
    
    ENABLE_SIDECAR_PROXY="y"
    ENCRYPT_DATA="BASE64_GOSSIP_MESSAGE"
    PATH_TO_CA_CERT="PATH/TO/consul-agent-ca.pem"
    PATH_TO_CA_KEY="PATH/TO/consul-agent-ca-key.pem"
    APIGEE_MTLS_NUM_DAYS_CERT_VALID_FOR="NUMBER_OF_DAYS"
    TLS_MIN_VERSION="tls12"
    TLS_CIPHER_SUITES="TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384"

    Ustaw wartość każdej właściwości zgodnie z konfiguracją.

    Właściwości konfiguracji opisane są w tabeli poniżej:

    Właściwość Opis
    ALL_IP Lista oddzielonych spacjami prywatnych adresów IP hosta wszystkich węzłów w klastrze.

    Kolejność adresów IP nie ma znaczenia, z tym zastrzeżeniem, że musi być taka sama we wszystkich plikach konfiguracyjnych w klastrze.

    Jeśli skonfigurujesz mTLS w Apigee dla wielu centrów danych, podaj listę wszystkich adresów IP wszystkich hostów we wszystkich regionach.

    LDAP_MTLS_HOSTS Prywatny adres IP hosta węzła OpenLDAP w klastrze.
    ZK_MTLS_HOSTS

    Lista oddzielonych spacjami prywatnych adresów IP hosta, na których są hostowane węzły ZooKeeper w klastrze.

    Pamiętaj, że zgodnie z wymaganiami musisz mieć co najmniej 3 węzły ZooKeeper.

    CASS_MTLS_HOSTS Lista oddzielonych spacjami prywatnych adresów IP hosta, na których znajdują się serwery Cassandra w klastrze.
    PG_MTLS_HOSTS Lista oddzielonych spacjami prywatnych adresów IP hosta, na których znajdują się serwery Postgres w klastrze.
    RT_MTLS_HOSTS Lista oddzielonych spacjami prywatnych adresów IP hosta, na których są hostowane routery w klastrze.
    MTLS_ENCAPSULATE_LDAP Szyfruje ruch LDAP między procesorem wiadomości a serwerem LDAP. Ustaw na y.
    MS_MTLS_HOSTS Lista oddzielonych spacjami prywatnych adresów IP hosta, na których są hostowane węzły serwera zarządzania w klastrze.
    MP_MTLS_HOSTS Lista oddzielonych spacjami prywatnych adresów IP hosta, na których hostowane są przetwarzacze wiadomości w klastrze.
    QP_MTLS_HOSTS Lista prywatnych adresów IP hosta oddzielonych spacjami, na których w klastrze są hostowane serwery Qpid.
    ENABLE_SIDECAR_PROXY Określa, czy Cassandra i Postgres powinny być świadome istnienia sieci usług.

    Tę wartość należy ustawić na „y”.

    ENCRYPT_DATA Klucz szyfrujący zakodowany w base64 używany przez Consula. Klucz ten został wygenerowany za pomocą polecenia consul keygen w sekcji Krok 2. Zainstaluj Consul i wygeneruj dane logowania.

    Ta wartość musi być taka sama na wszystkich węzłach w klastrze.

    PATH_TO_CA_CERT Lokalizacja pliku certyfikatu w węźle. Ten plik został wygenerowany w kroku 2. Zainstaluj Consul i wygeneruj poświadczenia.

    Ta lokalizacja powinna być taka sama na wszystkich węzłach w klastrze, aby pliki konfiguracji były takie same.

    Certyfikat musi być zakodowany w formacie X509v3.

    PATH_TO_CA_KEY lokalizacja pliku klucza na węźle. Ten plik został wygenerowany w kroku 2. Zainstaluj Consul i wygeneruj poświadczenia.

    Ta lokalizacja powinna być taka sama na wszystkich węzłach w klastrze, aby pliki konfiguracji były takie same.

    Plik klucza musi być zakodowany w standardzie X509v3.

    APIGEE_MTLS_NUM_DAYS_CERT_VALID_FOR

    Liczba dni, przez które certyfikat jest ważny, gdy generujesz certyfikat niestandardowy.

    Wartością domyślną jest 365. Maksymalna wartość to 7865 dni (5 lat).

    TLS_MIN_VERSION Określa minimalną dozwoloną wersję TLS. Ustaw na tls12, aby narzucić minimalną wersję TLS 1.2.
    TLS_CIPHER_SUITES Rozdzielana przecinkami lista dozwolonych zestawów szyfrów TLS.

    Na przykład: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256,TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384

    Oprócz wymienionych powyżej właściwości Apigee mTLS używa kilku dodatkowych właściwości, gdy zainstalujesz go w konfiguracji z wieloma centrami danych. Więcej informacji znajdziesz w artykule Konfigurowanie wielu centrów danych.

  3. Upewnij się, że ENABLE_SIDECAR_PROXY jest ustawiony na „y”.
  4. Zaktualizuj adresy IP w usługach związanych z hostem. Pamiętaj, aby używać prywatnych adresów IP, a nie publicznych adresów IP, gdy odwołujesz się do poszczególnych węzłów.

    W kolejnych krokach skonfigurujesz wartości innych właściwości, takich jak ENCRYPT_DATA, PATH_TO_CA_CERT i PATH_TO_CA_KEY. Nie masz jeszcze ustawionych ich wartości.

    Podczas edytowania właściwości konfiguracji apigee-mtls pamiętaj o tych kwestiach:

    • Wszystkie właściwości mają formę ciągu znaków. Wartości wszystkich właściwości musisz ująć w pojedyncze lub podwójne cudzysłowe.
    • Jeśli wartość powiązana z hostem ma więcej niż 1 prywatny adres IP, oddziel poszczególne adresy IP spacjami.
    • W przypadku wszystkich właściwości hosta w pliku konfiguracyjnym używaj prywatnych adresów IP, a nie nazw hostów ani publicznych adresów IP.
    • Kolejność adresów IP w wartości właściwości musi być taka sama we wszystkich plikach konfiguracji w klastrze.
  5. Zapisz zmiany w pliku konfiguracji.

Krok 2. Zainstaluj usługę Consul i wygeneruj dane logowania

W tej sekcji opisaliśmy, jak zainstalować Consul i wygenerować poświadczenia używane przez komponenty obsługujące mTLS.

Aby wygenerować dane logowania, wybierz jedną z tych metod:

  • (zalecane) Utwórz własny urząd certyfikacji (CA) za pomocą usługi Consul zgodnie z opisem w tej sekcji
  • Używanie danych logowania do dotychczasowego urzędu certyfikacji z Apigee mTLS (zaawansowane)

Dane logowania

Uprawnienia obejmują:

  • Certyfikat: certyfikat TLS.
  • Klucz: klucz publiczny TLS.
  • Wiadomość szeptem: klucz szyfrowania zakodowany w formacie Base64.

Każdy z tych plików generujesz tylko raz. Następnie skopiuj pliki klucza i certyfikatu na wszystkie węzły w klastrze oraz dodaj klucz szyfrowania do pliku konfiguracji, który również skopiujesz na wszystkie węzły.

Więcej informacji o implementacji szyfrowania w Consul znajdziesz w tych dokumentach:

Instalowanie usługi Consul i generowanie danych logowania

Aby wygenerować poświadczenia, których Apigee mTLS używa do uwierzytelniania bezpiecznej komunikacji między węzłami w klastrze chmury prywatnej, użyj lokalnego binarnego pakietu Consul . Dlatego przed wygenerowaniem danych logowania musisz zainstalować Consul na maszynie administracyjnej.

Aby zainstalować Consul i wygenerować poświadczenia mTLS:

  1. Na maszynie administracyjnej pobierz binarną wersję Consul 1.8.0 z witryny HashiCorp.
  2. Wyodrębnij zawartość pobranego pliku archiwum. Na przykład wyodrębnij zawartość do pliku /opt/consul/. .
  3. Na maszynie administracyjnej utwórz nowy urząd certyfikacji (CA) za pomocą tego polecenia:
    /opt/consul/consul tls ca create

    Consul tworzy te pliki, które tworzą parę certyfikat/klucz:

    • consul-agent-ca.pem (certyfikat)
    • consul-agent-ca-key.pem (klucz)

    Domyślnie pliki certyfikatów i kluczy są kodowane w standardzie X509v3.

    Później skopiujesz te pliki na wszystkie węzły w klastrze. Na razie musisz tylko zdecydować, gdzie w węzłach umieścisz te pliki. Powinny znajdować się w tym samym miejscu w każdym węźle. Na przykład: /opt/apigee/.

  4. W pliku konfiguracji ustaw wartość PATH_TO_CA_CERT na lokalizację, do której skopiujesz plik consul-agent-ca.pem na węźle. Na przykład:
    PATH_TO_CA_CERT="/opt/apigee/consul-agent-ca.pem"
  5. Ustaw wartość PATH_TO_CA_KEY na lokalizację, do której skopiujesz plik consul-agent-ca-key.pem w węźle. Na przykład:
    PATH_TO_CA_KEY="/opt/apigee/consul-agent-ca-key.pem"
  6. Utwórz klucz szyfrowania dla usługi Consul, wykonując to polecenie:
    /opt/consul/consul keygen

    Consul zwraca losowy ciąg znaków podobny do tego:

    QbhgD+EXAMPLE+Y9u0742X/IqX3X429/x1cIQ+JsQvY=
  7. Skopiuj wygenerowany ciąg znaków i ustaw go jako wartość właściwości ENCRYPT_DATA w pliku konfiguracyjnym. Na przykład:
    ENCRYPT_DATA="QbhgD+EXAMPLE+Y9u0742X/IqX3X429/x1cIQ+JsQvY="
  8. Zapisz plik konfiguracji.

Ten przykład pokazuje ustawienia związane z mTLS w pliku konfiguracji (z przykładowymi wartościami):

...
IP1=10.126.0.121
IP2=10.126.0.124
IP3=10.126.0.125
IP4=10.126.0.127
IP5=10.126.0.130
ALL_IP="$IP1 $IP2 $IP3 $IP4 $IP5"
LDAP_MTLS_HOSTS="$IP3"
ZK_MTLS_HOSTS="$IP3 $IP4 $IP5"
CASS_MTLS_HOSTS="$IP3 $IP4 $IP5"
PG_MTLS_HOSTS="$IP2 $IP1"
RT_MTLS_HOSTS="$IP4 $IP5"
MS_MTLS_HOSTS="$IP3"
MP_MTLS_HOSTS="$IP4 $IP5"
QP_MTLS_HOSTS="$IP2 $IP1"
ENABLE_SIDECAR_PROXY="y"
ENCRYPT_DATA="QbhgD+EXAMPLE+Y9u0742X/IqX3X429/x1cIQ+JsQvY="
PATH_TO_CA_CERT="/opt/apigee/consul-agent-ca.pem"
PATH_TO_CA_KEY="/opt/apigee/consul-agent-ca-key.pem"
...

Krok 3. Rozpowszechnij plik konfiguracji i poświadczenia tożsamości

Skopiuj te pliki na wszystkie węzły za pomocą narzędzia takiego jak scp:

  • Plik konfiguracji: skopiuj zaktualizowaną wersję tego pliku i zastąp nią istniejącą wersję na wszystkich węzłach (nie tylko na węzłach z ZooKeeper).
  • consul-agent-ca.pem: skopiuj do lokalizacji określonej jako wartość parametru PATH_TO_CA_CERT w pliku konfiguracyjnym.
  • consul-agent-ca-key.pem: skopiuj do lokalizacji określonej jako wartość parametru PATH_TO_CA_KEY w pliku konfiguracyjnym.

Upewnij się, że lokalizacje, do których kopiujesz pliki certyfikatu i klucza, są zgodne z wartościami ustawionymi w pliku konfiguracji w kroku 2: Zainstaluj Consul i wygeneruj dane logowania.

Krok 4. Inicjalizacja apige-mtls

Po zainstalowaniu usługi apigee-mtls na każdym węźle, zaktualizowaniu pliku konfiguracji oraz skopiowaniu go wraz z danymi logowania na wszystkie węzły w klastrze możesz zainicjować komponent apigee-mtls na każdym węźle.

Aby zainicjować apige-mtls:

  1. Zaloguj się na węzeł w klastrze jako użytkownik root. Te czynności możesz wykonywać w dowolnej kolejności.
  2. Ustaw użytkownika apigee:apigee jako właściciela zaktualizowanego pliku konfiguracji, jak pokazano w tym przykładzie:
    chown apigee:apigee config_file
  3. Skonfiguruj komponent apigee-mtls, wykonując to polecenie:
    /opt/apigee/apigee-service/bin/apigee-service apigee-mtls setup -f config_file
  4. (Opcjonalnie) Aby sprawdzić, czy konfiguracja została zakończona pomyślnie, uruchom to polecenie:
    /opt/apigee/apigee-mtls/lib/actions/iptables.sh validate
  5. Uruchom mTLS w Apigee, wykonując to polecenie:
    /opt/apigee/apigee-service/bin/apigee-service apigee-mtls start

    Po zainstalowaniu interfejsu Apigee mTLS musisz uruchomić ten komponent przed innymi komponentami w węźle.

  6. (Dotyczy tylko węzłów Cassandra) Aby działać w ramach sieci bezpieczeństwa, Cassandra wymaga dodatkowych argumentów. Z tego powodu musisz wykonać te polecenia na każdym węźle Cassandra:
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra setup -f config_file
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra configure
    /opt/apigee/apigee-service/bin/apigee-service apigee-cassandra restart
  7. (Tylko węzły Postgres) Aby działać w ramach sieci bezpieczeństwa, Postgres wymaga dodatkowych argumentów. W związku z tym musisz wykonać te czynności na węzłach Postgres:

    (tylko podstawowe)

    1. Wykonaj te polecenia na węźle głównym Postgresa:
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup -f config_file
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql configure
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql restart

    (tylko w stanie gotowości)

    1. Utwórz kopię zapasową dotychczasowych danych Postgres. Aby zainstalować mTLS w Apigee, musisz ponownie zainicjować węzły główne/zapasowe, co spowoduje utratę danych. Więcej informacji znajdziesz w artykule Konfigurowanie replikacji głównej/awaryjnej w przypadku PostgreSQL.
    2. Usuwanie wszystkich danych z serwera PostgreSQL:
      rm -rf /opt/apigee/data/apigee-postgresql/pgdata
    3. Skonfiguruj Postgres, a następnie uruchom go ponownie, jak pokazano w tym przykładzie:
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql setup -f config_file
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql configure
      /opt/apigee/apigee-service/bin/apigee-service apigee-postgresql restart

    Jeśli instalujesz w topologii z wieloma centrami danych, użyj bezwzględnej ścieżki do pliku konfiguracji.

  8. Uruchom pozostałe komponenty Apigee na węźle w kolejności uruchamiania, jak pokazano w tym przykładzie:
    /opt/apigee/apigee-service/bin/apigee-service component_name start
  9. Powtórz ten proces w przypadku każdego węzła w klastrze.
  10. (Opcjonalnie) Sprawdź, czy inicjalizacja apigee-mtls została wykonana prawidłowo, korzystając z jednej z tych metod:
    1. Sprawdzanie konfiguracji iptables
    2. Sprawdzanie stanu serwera proxy zdalnego
    3. Sprawdzanie stanu kworum

    Każdą z tych metod opisujemy w artykule Weryfikacja konfiguracji.

Zmiana istniejącej konfiguracji apigee-mtls

Aby dostosować istniejącą konfigurację apigee-mtls, musisz odinstalować i ponownie zainstalować apigee-mtls. Musisz też zastosować te zmiany we wszystkich węzłach.

Przypominamy, że podczas zmiany istniejącej konfiguracji mTLS w usłudze Apigee:

  • Jeśli zmienisz plik konfiguracji, musisz najpierw odinstalować apigee-mtls i ponownie uruchomić setup lub configure:
    # DO THIS:
    /opt/apigee/apigee-service/bin/apigee-service apigee-mtls uninstall
    
    # BEFORE YOU DO THIS:
    /opt/apigee/apigee-service/bin/apigee-service apigee-mtls setup -f file
    OR
    /opt/apigee/apigee-service/bin/apigee-service apigee-mtls configure
  • Musisz odinstalować i ponownie uruchomić setup lub configure na wszystkich węzłach w klastrze, a nie tylko na jednym.