Konfigurowanie mTLS Apigee

Edge dla chmury prywatnej 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ę certyfikat/klucz i zaktualizuj plik konfiguracji na komputerze administracyjnym. Następnie wdrażasz te same wygenerowane pliki we wszystkich węzłach w klastrze i inicjujesz lokalny komponent apigee-mtls.

Konfigurowanie apigee-mtls (po instalacji początkowej)

W tej sekcji opisano, jak skonfigurować Apigee mTLS dla pojedynczego centrum danych bezpośrednio po początkowej instalacji. Informacje o aktualizowaniu istniejącej instalacji Apigee mTLS znajdziesz w artykule o zmienianiu istniejącej konfiguracji apigee-mtls. Informacje o konfigurowaniu wielu centrów danych znajdziesz w artykule Konfigurowanie wielu centrów danych na potrzeby Apigee mTLS.

Poniżej opisujemy ogólny proces konfigurowania apigee-mtls:

  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 użyj go do wygenerowania danych logowania TLS (tylko raz).

    Dodatkowo zmodyfikuj plik konfiguracji mTLS Apigee, aby:

    1. Dodawanie danych logowania
    2. Definiowanie topologii klastra

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

  3. Rozpowszechnij plik konfiguracji i dane logowania: rozpowszechnij tę samą wygenerowaną parę kluczy certyfikatu i zaktualizowany plik konfiguracji we wszystkich węzłach klastra.
  4. Inicjowanie apigee-mtls: zainicjuj komponent apigee-mtls na każdym węźle.

Każdy z tych kroków został opisany w sekcjach poniżej.

Krok 1. Zaktualizuj plik konfiguracyjny

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

Po zaktualizowaniu pliku konfiguracji o właściwości związane z mTLS skopiuj go do wszystkich węzłów w klastrze, zanim zainicjujesz komponent apigee-mtls w tych węzłach.

Polecenia, które odwołują się do pliku konfiguracji, używają „config_file”, aby wskazać, że jego lokalizacja jest zmienna w zależności od tego, gdzie jest przechowywany w 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 tabeli poniżej opisano te właściwości konfiguracji:

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

    Kolejność adresów IP nie ma znaczenia, ale musi być taka sama we wszystkich plikach konfiguracyjnych w klastrze.

    Jeśli konfigurujesz 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 OpenLDAP w klastrze.
    ZK_MTLS_HOSTS

    Rozdzielona spacjami lista prywatnych adresów IP hostów, na których hostowane są węzły ZooKeeper w klastrze.

    Pamiętaj, że zgodnie z wymaganiami muszą być co najmniej 3 węzły ZooKeeper.

    CASS_MTLS_HOSTS Rozdzielona spacjami lista adresów IP hostów prywatnych, na których hostowane są serwery Cassandra w klastrze.
    PG_MTLS_HOSTS Rozdzielona spacjami lista adresów IP hostów prywatnych, na których hostowane są serwery Postgres w klastrze.
    RT_MTLS_HOSTS Rozdzielona spacjami lista prywatnych adresów IP hostów, na których hostowane są routery w klastrze.
    MTLS_ENCAPSULATE_LDAP Szyfruje ruch LDAP między procesorem komunikatów a serwerem LDAP. Ustaw na y.
    MS_MTLS_HOSTS Rozdzielona spacjami lista prywatnych adresów IP hostów, na których hostowane są węzły serwera zarządzania w klastrze.
    MP_MTLS_HOSTS Rozdzielona spacjami lista prywatnych adresów IP hostów, na których hostowane są procesory komunikatów w klastrze.
    QP_MTLS_HOSTS Rozdzielona spacjami lista prywatnych adresów IP hostów, na których hostowane są serwery Qpid w klastrze.
    ENABLE_SIDECAR_PROXY Określa, czy Cassandra i Postgres powinny być świadome siatki usług.

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

    ENCRYPT_DATA Klucz szyfrowania zakodowany w formacie base64 używany przez Consul . Ten klucz został wygenerowany za pomocą polecenia consul keygen w kroku 2. Zainstaluj 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 w 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 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 dane logowania.

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

    Plik klucza musi być zakodowany w formacie 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 właściwości wymienionych powyżej Apigee mTLS używa kilku dodatkowych właściwości, gdy instalujesz go w konfiguracji z wieloma centrami danych. Więcej informacji znajdziesz w artykule o konfigurowaniu wielu centrów danych.

  3. Upewnij się, że właściwość ENABLE_SIDECAR_PROXY ma wartość „y”.
  4. Zaktualizuj adresy IP we właściwościach związanych z hostem. Pamiętaj, aby podczas odwoływania się do poszczególnych węzłów używać prywatnych adresów IP, a nie publicznych.

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

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

    • Wszystkie właściwości są ciągami 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ż 1 prywatny adres IP, oddziel poszczególne adresy IP spacją.
    • W przypadku wszystkich właściwości związanych z hostem w pliku konfiguracji 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

W tej sekcji opisano, jak zainstalować Consul i wygenerować dane logowania.

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

  • utworzyć własny urząd certyfikacji za pomocą Consul, jak opisano w tej sekcji (zalecane);
  • Używanie danych logowania istniejącego urzędu certyfikacji z mTLS Apigee (zaawansowane)

Informacje o danych logowania

Dane logowania obejmują:

  • Certyfikat: certyfikat TLS hostowany na każdym węźle.
  • Klucz: klucz publiczny TLS hostowany na każdym węźle.
  • Gossip message: klucz szyfrowania zakodowany w formacie Base64.

Każdy z tych plików generujesz tylko raz. Kopiujesz pliki klucza i certyfikatu do wszystkich węzłów w klastrze i dodajesz klucz szyfrowania do pliku konfiguracji, który również kopiujesz do wszystkich węzłów.

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

Instalowanie Consula i generowanie danych logowania

Używasz lokalnego pliku binarnego Consul do generowania danych logowania, 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 komputerze administracyjnym.

Aby zainstalować Consul i wygenerować dane uwierzytelniające mTLS:

  1. Na komputerze administracyjnym pobierz plik binarny Consul 1.6.2 ze strony HashiCorp.
  2. Wyodrębnij zawartość pobranego pliku archiwum. Możesz na przykład wyodrębnić 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 są parą certyfikat/klucz:

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

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

    Później skopiujesz te pliki do wszystkich węzłów w klastrze. Na razie musisz tylko zdecydować, gdzie w węzłach umieścisz te pliki. Powinny znajdować się w tej samej lokalizacji 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 w 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 Consul, wykonując to polecenie:
    /opt/consul/consul keygen

    Consul wyświetli losowy ciąg znaków, który wygląda podobnie 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 konfiguracji. 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 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 dane logowania

Skopiuj te pliki do węzłów, w których działa ZooKeeper, za pomocą narzędzia takiego jak scp:

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

Upewnij się, że lokalizacje, do których kopiujesz pliki certyfikatu i klucza, odpowiadają wartościom ustawionym w pliku konfiguracji w kroku 2: Zainstaluj Consul i wygeneruj dane logowania.

Krok 4. Zainicjuj apigee-mtls

Po zaktualizowaniu pliku konfiguracji, skopiowaniu go i danych logowania do wszystkich węzłów w klastrze oraz zainstalowaniu apigee-mtls w każdym węźle możesz zainicjować komponent apigee-mtls w każdym węźle.

Aby zainicjować apigee-mtls:

  1. Zaloguj się w węźle w klastrze 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 przebiegła pomyślnie, uruchom 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 do działania w siatce zabezpieczeń. 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) Postgres wymaga dodatkowych argumentów do działania w siatce zabezpieczeń. Z tego powodu na węzłach Postgres musisz wykonać te czynności:

    (Tylko Master)

    1. Uruchom te polecenia w węźle głównym 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 główne i rezerwowe, co spowoduje utratę danych. Więcej informacji znajdziesz w artykule o konfigurowaniu replikacji master/standby 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 w topologii z wieloma centrami danych, użyj ścieżki bezwzględnej do pliku konfiguracji.

  8. Uruchom pozostałe komponenty Apigee na węźle w kolejności uruchamiania, jak 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 inicjalizacja się powiodła, korzystając z co najmniej jednej z tych metod:
    1. Sprawdzanie konfiguracji iptables
    2. Sprawdzanie stanu zdalnego serwera proxy
    3. Sprawdzanie stanu kworum

    Każda z tych metod jest opisana w sekcji Weryfikacja konfiguracji.

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