Konfigurowanie mTLS Apigee

Po zainstalowaniu Apigee mTLS na wszystkich węzłach w klastrze musisz skonfigurować i zainicjować komponent apigee-mtls. W tym celu wygeneruj parę certyfikat/klucz i zaktualizuj plik konfiguracji na komputerze administracyjnym. Następnie wdrażasz te same wygenerowane pliki i plik konfiguracyjny we wszystkich węzłach klastra i inicjujesz lokalny komponent apigee-mtls.

Konfigurowanie apigee-mtls (po początkowej instalacji)

W tej sekcji opisaliśmy, jak skonfigurować uwierzytelnianie mTLS w Apigee bezpośrednio po pierwszej instalacji. Informacje o aktualizowaniu istniejącej instalacji Apigee mTLS znajdziesz w artykule Zmiana istniejącej konfiguracji apigee-mtls.

Ta sekcja dotyczy instalacji w jednym centrum danych. Informacje o konfigurowaniu mTLS Apigee w konfiguracji z wieloma centrami danych znajdziesz w artykule Konfigurowanie wielu centrów danych na potrzeby mTLS Apigee.

Ogólny proces konfigurowania apigee-mtls wygląda tak:

  1. Zaktualizuj plik konfiguracji: na komputerze administracyjnym zaktualizuj plik konfiguracji, aby uwzględnić ustawienia apigee-mtls.
  2. Zainstaluj Consul i wygeneruj dane logowania: zainstaluj Consul i (opcjonalnie) użyj go do jednorazowego wygenerowania danych logowania TLS.

    Dodatkowo zmodyfikuj plik konfiguracji mTLS Apigee, aby:

    1. Dodaj informacje o danych logowania
    2. Określ topologię klastra

    Pamiętaj, że możesz użyć dotychczasowych danych logowania lub wygenerować je za pomocą usługi Consul.

  3. Rozpowszechnij dane logowania i plik konfiguracji: rozpowszechnij tę samą wygenerowaną parę certyfikat/klucz i zaktualizowany plik konfiguracji na wszystkich węzłach w klastrze.
  4. Zainicjuj apigee-mtls: zainicjuj komponent apigee-mtls na każdym węźle.

Każdy z tych kroków jest opisany w dalszej części tego artykułu.

Krok 1. Zaktualizuj plik konfiguracji

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

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

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 go 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"

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

    W tabeli poniżej znajdziesz opis tych właściwości konfiguracji:

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

    Kolejność adresów IP nie ma znaczenia, z wyjątkiem tego, że musi być taka sama we wszystkich plikach konfiguracyjnych w klastrze.

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

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

    Lista prywatnych adresów IP hostów rozdzielonych spacjami, 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 adresów IP hostów prywatnych, na których są hostowane serwery Cassandra w klastrze, rozdzielonych spacjami.
    PG_MTLS_HOSTS Lista adresów IP hostów prywatnych oddzielonych spacjami, na których są hostowane serwery Postgres w klastrze.
    RT_MTLS_HOSTS Lista adresów IP hostów prywatnych, na których w klastrze są hostowane routery, rozdzielona spacjami.
    MTLS_ENCAPSULATE_LDAP Szyfruje ruch LDAP między procesorem wiadomości a serwerem LDAP. Ustaw na y.
    MS_MTLS_HOSTS Lista prywatnych adresów IP hostów rozdzielonych spacjami, na których w klastrze są hostowane węzły serwera zarządzającego.
    MP_MTLS_HOSTS Lista adresów IP prywatnych hostów rozdzielonych spacjami, na których w klastrze są hostowane procesory wiadomości.
    QP_MTLS_HOSTS Lista adresów IP hostów prywatnych, na których serwery Qpid są hostowane w klastrze, rozdzielonych spacjami.
    ENABLE_SIDECAR_PROXY Określa, czy Cassandra i Postgres powinny mieć świadomość siatki usług.

    Musisz ustawić tę wartość na „y”.

    ENCRYPT_DATA Klucz szyfrowania zakodowany w base64 używany przez Consul. Ten klucz został wygenerowany za pomocą polecenia consul keygenkroku 2. Zainstaluj usługę Consul i wygeneruj dane logowania.

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

    PATH_TO_CA_CERT Lokalizacja pliku certyfikatu na węźle. Ten plik został wygenerowany w kroku 2: zainstaluj Consula i wygeneruj dane logowania.

    Ta lokalizacja powinna być taka sama we wszystkich węzłach klastra, aby pliki konfiguracyjne były identyczne.

    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 dane logowania.

    Ta lokalizacja powinna być taka sama we wszystkich węzłach klastra, aby pliki konfiguracyjne były identyczne.

    Plik klucza musi być zakodowany w formacie X509v3.

    APIGEE_MTLS_NUM_DAYS_CERT_VALID_FOR

    Liczba dni, przez które certyfikat jest ważny po wygenerowaniu certyfikatu niestandardowego.

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

    Oprócz właściwości wymienionych powyżej Apigee mTLS używa kilku dodatkowych właściwości podczas instalacji w konfiguracji z wieloma centrami danych. Więcej informacji znajdziesz w artykule o konfigurowaniu wielu centrów danych.

  3. Sprawdź, czy wartość ENABLE_SIDECAR_PROXY jest ustawiona na „y”.
  4. Zaktualizuj adresy IP we właściwościach związanych z hostem. Pamiętaj, aby odwoływać się do każdego węzła za pomocą prywatnych adresów IP, a nie publicznych adresów IP.

    W dalszych krokach ustawisz wartości innych właściwości, takich jak ENCRYPT_DATA, PATH_TO_CA_CERTPATH_TO_CA_KEY. Nie masz jeszcze ustawionych 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 pojedynczy lub podwójny cudzysłów.
    • Jeśli wartość związana z hostem ma więcej niż jeden prywatny adres IP, oddziel poszczególne adresy IP spacją.
    • W przypadku wszystkich właściwości związanych z hostem 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 konfiguracyjnych w klastrze.
  5. Zapisz zmiany w pliku konfiguracji.

Krok 2. Zainstaluj Consul i wygeneruj dane logowania

W tej sekcji opisaliśmy, jak zainstalować Consul i wygenerować dane logowania używane przez komponenty z włączonym mTLS.

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

  • (Zalecane) Utwórz własny urząd certyfikacji za pomocą usługi Consul, jak opisano w tej sekcji.
  • Używanie danych logowania istniejącego urzędu certyfikacji z Apigee mTLS (zaawansowane)

Informacje o danych logowania

Dane logowania obejmują:

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

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

Więcej informacji o implementacji szyfrowania w Consulu znajdziesz w tych artykułach:

Instalowanie usługi Consul i generowanie danych logowania

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

Aby zainstalować Consul i wygenerować dane logowania mTLS:

  1. Na komputerze administracyjnym pobierz plik binarny Consul 1.8.0 ze strony HashiCorp.
  2. Wyodrębnij zawartość pobranego pliku archiwum. Na przykład wyodrębnij zawartość do folderu /opt/consul/.
  3. Na komputerze administracyjnym utwórz nowy urząd certyfikacji, wykonując to polecenie:
    /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 certyfikatu i klucza są kodowane w standardzie X509v3.

    Później skopiujesz te pliki do wszystkich węzłów w klastrze. Na razie musisz jednak zdecydować tylko, gdzie w węzłach umieścisz te pliki. Powinny znajdować się w tym samym miejscu na 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 na 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 wyświetla 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.

Poniższy przykład pokazuje ustawienia związane z mTLS w pliku konfiguracyjnym (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 dane logowania

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 usługą 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. Instalowanie usługi Consul i generowanie danych logowania.

Krok 4. Zainicjuj apigee-mtls

Po zainstalowaniu apigee-mtls na każdym węźle, zaktualizowaniu pliku konfiguracyjnego oraz skopiowaniu go i danych logowania na wszystkie węzły w klastrze możesz zainicjować komponent apigee-mtls na każdym węźle.

Aby zainicjować apigee-mtls:

  1. Zaloguj się w węźle klastra jako użytkownik root. Możesz wykonać te czynności na węzłach 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 przeprowadzona prawidłowo, wykonaj to polecenie:
    /opt/apigee/apigee-mtls/lib/actions/iptables.sh validate
  5. Uruchom Apigee mTLS, wykonując to polecenie:
    /opt/apigee/apigee-service/bin/apigee-service apigee-mtls start

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

  6. (Tylko węzły Cassandra) Cassandra wymaga dodatkowych argumentów, aby działać w siatce zabezpieczeń. W związku z tym na każdym węźle Cassandra musisz wykonać te polecenia:
    /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) Postgres wymaga dodatkowych argumentów, aby działać w siatce zabezpieczeń. W związku z tym na węzłach Postgres musisz wykonać te czynności:

    (tylko w przypadku konta głównego)

    1. Wykonaj te polecenia na głównym węźle Postgres:
      /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 trybie gotowości)

    1. Utwórz kopię zapasową dotychczasowych danych Postgres. Aby zainstalować Apigee mTLS, musisz ponownie zainicjować węzły podstawowe/rezerwowe, co spowoduje utratę danych. Więcej informacji znajdziesz w artykule Konfigurowanie replikacji podstawowej/rezerwowej w Postgres.
    2. Usuń wszystkie dane Postgres:
      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 oprogramowanie w topologii obejmującej wiele centrów danych, użyj ścieżki bezwzględnej 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 dla każdego węzła w klastrze.
  10. (Opcjonalnie) Sprawdź, czy apigee-mtls inicjowanie się powiodło, wykonując co najmniej jedną z tych czynności:
    1. Sprawdzanie konfiguracji iptables
    2. Sprawdzanie stanu serwera proxy
    3. Sprawdzanie stanu kworum

    Każda z tych metod została opisana w sekcji 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ć dostosowanie we wszystkich węzłach.

Podsumowując, podczas zmiany istniejącej konfiguracji mTLS 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 węźle.