Konfigurowanie mTLS Apigee

Po zainstalowaniu komponentu apigee-mtls w każdym węźle klastra musisz go skonfigurować i zainicjować. Aby to zrobić, wygeneruj parę certyfikatu i klucza oraz zaktualizuj plik konfiguracji na komputerze administracyjnym. Następnie wdrożysz te same wygenerowane pliki na wszystkich węzłach w klastrze i zainicjujesz lokalny komponent apigee-mtls.

Skonfiguruj apigee-mtls (po wstępnej instalacji)

W tej sekcji opisano, jak skonfigurować protokół Apigee mTLS dla pojedynczego centrum danych natychmiast po pierwszej instalacji. Informacje o aktualizowaniu istniejącej instalacji Apigee mTLS znajdziesz w sekcji Zmienianie istniejącej konfiguracji apigee-mtls. Informacje na temat konfigurowania wielu centrów danych znajdziesz w artykule Konfigurowanie wielu centrów danych na potrzeby Apigee mTLS.

Oto ogólna procedura konfigurowania usługi apigee-mtls:

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

    Dodatkowo edytuj plik konfiguracji Apigee mTLS, aby:

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

    Możesz użyć istniejących danych logowania lub wygenerować je w Consul.

  3. Przekaż plik konfiguracji i dane logowania: 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.

Opisujemy je w kolejnych sekcjach.

Krok 1. Zaktualizuj plik konfiguracji

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

Po zaktualizowaniu pliku konfiguracji o właściwości związane z mTLS, a następnie skopiuj go do wszystkich węzłów w klastrze przed zainicjowaniem w nich komponentu apigee-mtls.

Polecenia odwołujące się do pliku konfiguracji używają parametru „config_file”, aby wskazać, że jego lokalizacja jest zmienna w zależności od tego, gdzie przechowujesz plik 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 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 właściwości zgodnie ze swoją konfiguracją.

    Tabela poniżej zawiera opis tych właściwości konfiguracji:

    Właściwość Opis
    ALL_IP Lista rozdzielonych spacjami adresów IP prywatnych hostów 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 mTLS Apigee 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

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

    Pamiętaj, że zgodnie z wymaganiami muszą być 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 serwery Postgres są hostowane w klastrze.
    RT_MTLS_HOSTS Lista rozdzielonych spacjami adresów IP prywatnych hostów, na 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 serwery Qpid są hostowane 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 standardzie 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 jest 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 Apigee mTLS instaluje je w konfiguracji z wieloma centrami danych przy użyciu kilku dodatkowych właściwości. 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 przy odwoływaniu się do każdego węzła używać prywatnych adresów IP, a nie publicznych adresów IP.

    W kolejnych 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 kwestiach:

    • Wszystkie właściwości są ciągami tekstowymi – wartości wszystkich właściwości musisz umieszczać w cudzysłowach pojedynczych lub podwójnych.
    • 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 być taka sama we wszystkich plikach konfiguracji w klastrze.
  5. Zapisz zmiany w pliku konfiguracji.

Krok 2. Zainstaluj Consul i wygeneruj dane logowania

Ta sekcja zawiera informacje o instalowaniu Consul i generowaniu danych logowania.

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

  • Utwórz własny urząd certyfikacji za pomocą Consul w sposób opisany w tej sekcji (zalecane)
  • 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:

  • Certyfikat: certyfikat TLS hostowany w każdym węźle.
  • Klucz: klucz publiczny TLS hostowany w każdym węźle
  • Plotki: klucz szyfrowania w formacie base-64.

Generujesz tylko jedną wersję każdego z tych plików tylko raz. Skopiuj pliki klucza i certyfikatów do wszystkich węzłów w klastrze i dodaj do pliku konfiguracji klucz szyfrowania, który też kopiujesz do wszystkich węzłów.

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

Instalowanie Consul i generowanie danych logowania

Za pomocą pliku binarnego lokalnego Consul możesz wygenerować dane uwierzytelniające, których Apigee mTLS używa do uwierzytelniania bezpiecznej komunikacji między węzłami w klastrze Private Cloud. W związku z tym, 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.6.2 z witryny 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 będące parami certyfikat/klucz:

    • 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 chcesz skopiować 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

    Narzędzie Consul generuje randomizowany 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 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. Przekaż plik konfiguracji i dane logowania

Skopiuj te pliki do węzłów, na których działa ZooKeeper, np. scp:

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

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

Krok 4. Zainicjuj apigee-mtls

Gdy zaktualizujesz plik konfiguracji, skopiujesz go i dane logowania do wszystkich węzłów w klastrze oraz zainstalujesz 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ę do węzła w klastrze jako główny użytkownik. 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) Uruchom to polecenie, aby sprawdzić, czy konfiguracja zakończyła się powodzeniem:
    /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 Apigee 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ń. W związku z tym w 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 do działania w siatce zabezpieczeń. W związku z tym w węzłach Postgres musisz wykonać te czynności:

    (Tylko nadrzędna)

    1. Wykonaj te polecenia w węźle nadrzędnym 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 główne/gotowe, co spowoduje utratę danych. Więcej informacji znajdziesz w artykule o konfigurowaniu replikacji mastera/gotowości dla 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 poniższym 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. Uruchom pozostałe komponenty Apigee w węźle w kolejności początkowej, jak pokazano w poniższym 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 inicjowanie elementu apigee-mtls się udało, korzystając z co najmniej 1 z tych metod:
    1. Zweryfikuj konfigurację iptables
    2. Zweryfikuj stan zdalnego serwera proxy
    3. Zweryfikuj stan kworum

    Każdą z tych metod opisano w sekcji Weryfikowanie konfiguracji.

Zmień istniejącą konfigurację apigee-mtls

Aby dostosować istniejącą konfigurację apigee-mtls, musisz odinstalować i ponownie zainstalować apigee-mtls.

Pamiętaj o tym, gdy zmieniasz istniejącą konfigurację mTLS Apigee:

  • Jeśli zmienisz plik konfiguracji, musisz najpierw odinstalować plik 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 w jednym.