Konfigurowanie mTLS Apigee

Po zainstalowaniu Apigee mTLS we wszystkich węzłach w klastrze musisz skonfigurować i zainicjować komponent apigee-mtls. Aby to zrobić, wygeneruj parę certyfikat/klucz i zaktualizuj plik konfiguracji na komputerze administracyjnym. Następnie wdrożysz te same wygenerowane pliki i plik konfiguracji na wszystkich węzłach w klastrze oraz zainicjujesz lokalny komponent apigee-mtls.

Skonfiguruj apigee-mtls (po pierwszej instalacji)

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

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

Ogólna procedura konfigurowania usługi apigee-mtls wygląda tak:

  1. Zaktualizuj plik konfiguracji: na komputerze administracyjnym zaktualizuj plik konfiguracji, aby zawierał ustawienia apigee-mtls.
  2. Zainstaluj aplikację Consul i wygeneruj dane logowania: zainstaluj aplikację Consul i (opcjonalnie) użyj jej do wygenerowania danych logowania TLS (tylko raz).

    Dodatkowo zmodyfikuj plik konfiguracji Apigee mTLS, aby:

    1. Dodaj dane logowania
    2. Określ topologię klastra

    Możesz użyć swoich dotychczasowych danych logowania lub wygenerować je w Consul.

  3. Prześlij dane logowania i plik konfiguracji: roześlij tę samą wygenerowaną parę certyfikat/klucz i zaktualizowany plik konfiguracji do wszystkich węzłów w klastrze.
  4. Zainicjuj apigee-mtls: zainicjuj komponent apigee-mtls w każdym węźle.

Wszystkie te czynności opisaliśmy w kolejnych sekcjach.

Krok 1. Zaktualizuj plik konfiguracyjny

W tej sekcji opisano, jak zmodyfikować plik konfiguracji, aby zawierał właściwości konfiguracji mTLS. Ogólne informacje o pliku konfiguracji znajdziesz w artykule o tworzeniu pliku konfiguracji.

Gdy zaktualizujesz plik konfiguracji przy użyciu właściwości związanych z mTLS, skopiuj go do wszystkich węzłów w klastrze przed zainicjowaniem w tych węzłach komponentu 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 w 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 usługi tak, aby odpowiadała Twojej konfiguracji.

    W tabeli poniżej opisujemy te właściwości konfiguracji:

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

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

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

    LDAP_MTLS_HOSTS Adres IP prywatnego hosta węzła OpenLDAP w klastrze.
    ZK_MTLS_HOSTS

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

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

    CASS_MTLS_HOSTS Lista rozdzielonych spacjami adresów IP prywatnych hostów, na których hostowane są serwery Cassandra w klastrze.
    PG_MTLS_HOSTS Lista rozdzielonych spacjami adresów IP prywatnych hostów, na których hostowane są serwery Postgres w klastrze.
    RT_MTLS_HOSTS Lista rozdzielonych spacjami adresów IP prywatnych hostów, w których routery są hostowane w klastrze.
    MTLS_ENCAPSULATE_LDAP Szyfruje ruch LDAP między procesorem wiadomości a serwerem LDAP. Ustaw jako y.
    MS_MTLS_HOSTS Lista rozdzielonych spacjami adresów IP prywatnych hostów, na których węzły serwera zarządzania są hostowane w klastrze.
    MP_MTLS_HOSTS Lista rozdzielonych spacjami adresów IP prywatnych hostów, na których hostowane są procesory wiadomości w klastrze.
    QP_MTLS_HOSTS Lista rozdzielonych spacjami adresów IP prywatnych hostów, na których hostowane są serwery Qpid w klastrze.
    ENABLE_SIDECAR_PROXY Określa, czy Cassandra i Postgres powinny wiedzieć o siatce usług.

    Musisz ustawić dla tej wartości wartość „y”.

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

    Przez ile dni certyfikat ma być ważny podczas generowania certyfikatu niestandardowego.

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

    Oprócz wymienionych powyżej właściwości usługa Apigee mTLS instaluje ją w konfiguracji wielu centrów danych, a także używa kilku dodatkowych właściwości. Więcej informacji znajdziesz w artykule o konfigurowaniu wielu centrów danych.

  3. Upewnij się, że atrybut ENABLE_SIDECAR_PROXY ma wartość „y”.
  4. Zaktualizuj adresy IP we właściwościach związanych z hostem. Gdy odwołujesz się do każdego węzła, używaj prywatnych adresów IP, a nie publicznych adresów IP.

    W późniejszych krokach ustawisz wartości innych właściwości, np. ENCRYPT_DATA, PATH_TO_CA_CERT i PATH_TO_CA_KEY. Nie ustawiono jeszcze ich wartości.

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

    • Wszystkie właściwości są ciągami tekstowymi – wartości wszystkich właściwości musisz ująć w cudzysłowy pojedyncze lub podwójne.
    • Jeśli wartość związana z hostem ma więcej niż 1 prywatny adres IP, oddziel je spacją.
    • Do 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 mieć taką samą kolejność we wszystkich plikach konfiguracji w klastrze.
  5. Zapisz zmiany w pliku konfiguracji.

Krok 2. Zainstaluj aplikację Consul i wygeneruj dane logowania

W tej sekcji opisano, jak zainstalować Consul i wygenerować dane logowania używane przez komponenty obsługujące mTLS.

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

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

Informacje o danych logowania

Dane logowania składają się z tych elementów:

  • Certificate (Certyfikat): certyfikat TLS.
  • Klucz: klucz publiczny TLS
  • Plotki: klucz szyfrowania zakodowany w standardzie base-64

Generujesz tylko jedną wersję każdego z tych plików tylko raz. Następnie skopiuj plik klucza i certyfikatu do wszystkich węzłów w klastrze i dodaj klucz szyfrowania do pliku konfiguracji, który również kopiujesz do wszystkich węzłów.

Więcej informacji o implementacji szyfrowania w Consul znajdziesz tutaj:

Zainstaluj aplikację Consul i wygeneruj dane logowania

Aby wygenerować dane logowania używane przez Apigee mTLS do uwierzytelniania bezpiecznej komunikacji między węzłami klastra Private Cloud, użyj lokalnego pliku binarnego Consul . Dlatego, aby móc generować dane logowania, musisz zainstalować Consul na komputerze administracyjnym.

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 rozpakuj zawartość do /opt/consul/.
  3. Na komputerze administracyjnym utwórz nowy urząd certyfikacji, wykonując to polecenie:
    /opt/consul/consul tls ca create

    Consul tworzy następujące pliki, które tworzą parę certyfikatu/klucza:

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

    Domyślnie pliki certyfikatu i klucza są zakodowane w formacie X509v3.

    Później skopiujesz te pliki do wszystkich węzłów w klastrze. Obecnie musisz jednak tylko zdecydować, gdzie w węzłach chcesz umieścić te pliki. Powinny one znajdować się w tej samej lokalizacji 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 w węźle. Przykład:
    PATH_TO_CA_CERT="/opt/apigee/consul-agent-ca.pem"
  5. Ustaw wartość PATH_TO_CA_KEY na lokalizację, do której chcesz skopiować plik consul-agent-ca-key.pem w węźle. 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

    Aplikacja Consul generuje randomizowany ciąg znaków podobny do tego:

    QbhgD+EXAMPLE+Y9u0742X/IqX3X429/x1cIQ+JsQvY=
  7. Skopiuj ten wygenerowany 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.

Oto przykład ustawień związanych 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. Przekaż plik konfiguracji i dane logowania

Skopiuj te pliki do wszystkich węzłów, używając takiego narzędzia jak scp:

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

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

Krok 4. Zainicjuj apigee-mtls

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

Aby zainicjować apigee-mtls:

  1. Zaloguj się do węzła w klastrze jako użytkownik root. Te czynności możesz wykonać na węzłach w dowolnej kolejności.
  2. Przypisz użytkownikowi apigee:apigee rolę 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 się powiodła, 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 mTLS dla Apigee trzeba uruchomić ten komponent przed innymi komponentami w węźle.

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

    (Tylko podstawowe)

    1. Wykonaj 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ą istniejących danych Postgres. Aby zainstalować Apigee mTLS, musisz ponownie zainicjować węzły podstawowe/gotowe, co spowoduje utratę danych. Więcej informacji znajdziesz w artykule o konfigurowaniu replikacji podstawowej/czujnej w Postgres.
    2. Usuń wszystkie dane Postgres:
      rm -rf /opt/apigee/data/apigee-postgresql/pgdata
    3. Skonfiguruj Postgres, a następnie ponownie uruchom Postgres, zgodnie z tym przykładem:
      /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

    W przypadku instalacji w topologii wielu centrów danych użyj ścieżki bezwzględnej pliku konfiguracji.

  8. Rozpocznij pozostałe komponenty Apigee w węźle w kolejności początkowej, zgodnie z tym przykładem:
    /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 inicjowanie elementu apigee-mtls powiodło się, korzystając z co najmniej 1 z tych metod:
    1. Zweryfikuj konfigurację iptables
    2. Sprawdzanie stanu zdalnego serwera proxy
    3. Sprawdź stan kworum

    Opis każdej z tych metod znajdziesz w sekcji Weryfikowanie konfiguracji.

Zmienianie istniejącej konfiguracji apigee-mtls

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

Aby powtórzyć ten punkt, 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 we wszystkich węzłach w klastrze, a nie tylko w jednym.