Konfigurowanie mTLS Apigee

Edge for Private Cloud w wersji 4.19.01

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

Konfigurowanie apige-mtls (po początkowej instalacji)

Z tej sekcji dowiesz się, jak skonfigurować mTLS w Apigee dla jednego centrum danych zaraz po początkowej instalacji. Informacje o aktualizowaniu istniejącej instalacji Apigee mTLS znajdziesz w artykule Zmienianie istniejącej konfiguracji apigee-mtls. Informacje o konfigurowaniu wielu centrów danych znajdziesz w artykule Konfigurowanie wielu centrów danych dla mTLS w Apigee.

Oto ogólny proces konfiguracji:apigee-mtls

  1. Zaktualizuj plik konfiguracji: na maszynie administracyjnej zaktualizuj plik konfiguracji, aby uwzględnić ustawienia apigee-mtls.
  2. Zainstaluj Consul i wygeneruj poświadczenia: zainstaluj Consul i użyj go 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 plik konfiguracji i poświadczenia: Dodaj ten sam wygenerowany klucz i certyfikat oraz zaktualizowany plik konfiguracji do wszystkich węzłów w klastrze.
  4. Inicjowanie apigee-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ędnić 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 należy go skopiować na wszystkie węzły w klastrze, zanim zainicjujesz na nich komponent apigee-mtls.

Polecenia odwołujące się do pliku konfiguracji używają parametru „config_file”, aby wskazać, że jego lokalizacja jest zmienna i zależy od tego, gdzie jest przechowywany na każdym węźle.

Aby zaktualizować plik konfiguracji:

  1. Na komputerze administracyjnym otwórz plik konfiguracji.
  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"

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

    Właściwości konfiguracji są opisane 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 wszystkie adresy 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 przetwarzacze wiadomości są hostowane w klastrze.
    QP_MTLS_HOSTS Lista prywatnych adresów IP hosta rozdzielonych 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 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.

    Certyfikat musi być zakodowany w formacie X509v3.

    PATH_TO_CA_KEY lokalizacja pliku klucza 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.

    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).

    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 właściwość ENABLE_SIDECAR_PROXY ma wartość „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 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 konfiguracji w klastrze.
  5. Zapisz zmiany w pliku konfiguracji.

Krok 2. Zainstaluj Consul i wygeneruj dane logowania

Z tej sekcji dowiesz się, jak zainstalować Consul i wygenerować dane uwierzytelniające.

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

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

Dane logowania

Uprawnienia obejmują:

  • Certyfikat: certyfikat TLS hostowany na każdym węźle.
  • Klucz: klucz publiczny TLS hostowany na każdym węźle
  • Wiadomość szeptem: klucz szyfrowania zakodowany w formacie Base64.

Każdy z tych plików generujesz tylko raz. 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

Lokalny plik binarny Consul służy do generowania poświadczeń, których Apigee mTLS używa do uwierzytelniania bezpiecznej komunikacji między węzłami w klastrze chmury prywatnej. 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.6.2 ze strony HashiCorp.
  2. Wyodrębnij zawartość pobranego pliku archiwum. Możesz na przykład wyodrębnić zawartość do pliku /opt/consul/.
  3. Na maszynie administracyjnej utwórz nowy urząd certyfikacji, wykonując to polecenie:
    /opt/consul/consul tls ca create

    Consul tworzy te pliki, które są parą kluczy i certyfikatu:

    • 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 ciąg znaków i ustaw go jako wartość właściwości ENCRYPT_DATA w pliku konfiguracyjnym. 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. Udostępnij plik konfiguracji i poświadczenia tożsamości

Skopiuj te pliki do węzłów z ZooKeepera 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 poświadczenia.

Krok 4. Inicjuj apige-mtls

Po zaktualizowaniu pliku konfiguracji, skopiowaniu go i danych logowania na wszystkie węzły w klastrze oraz zainstalowaniu apigee-mtls na każdym z nich 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 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. W rezultacie 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) Postgres wymaga dodatkowych argumentów do działania w ramach sieci bezpieczeństwa. W związku z tym musisz wykonać te czynności na węzłach Postgres:

    (Dotyczy tylko wersji głównej)

    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 typu master/standby w przypadku PostgreSQL.
    2. Usuwanie wszystkich danych 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 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 przebiegła pomyślnie, 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.

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.