Włączam szyfrowanie tajnego klucza

Z tego dokumentu dowiesz się, jak włączyć szyfrowanie zapisane tajnych kluczy klienta aplikacji dewelopera (danych logowania klienta); w bazie danych Cassandra.

Omówienie

Do tej pory Apigee Edge for Private Cloud zapewniało opcjonalne szyfrowanie danych mapy klucz-wartość (KVM) i tokenów dostępu OAuth.

W tabeli poniżej znajdziesz opcje szyfrowania danych w spoczynku w Apigee dla Private Cloud:

Encja Szyfrowanie włączone domyślnie Szyfrowanie dostępne opcjonalnie Powiązana dokumentacja
Kamery KVM Nie Tak Więcej informacji znajdziesz w artykule Informacje o zaszyfrowanych maszynach wirtualnych.
Tokeny dostępu OAuth Nie Tak Zobacz Haszowanie tokenów w celu zwiększenia bezpieczeństwa.
Tajne klucze klienta aplikacji dewelopera Nie Tak Aby włączyć tę funkcję, wykonaj czynności konfiguracyjne opisane w tym dokumencie.

Aby włączyć szyfrowanie danych logowania klienta, musisz wykonać te czynności na wszystkich węzłach procesora wiadomości i serwera zarządzania:

  • Utwórz magazyn kluczy do przechowywania Klucz szyfrowania klucza (KEK). Apigee używa tego zaszyfrowanego klucza do szyfrowania tajnych kluczy niezbędnych do szyfrowania danych.
  • Edytowanie właściwości konfiguracji na wszystkich serwerach zarządzających i węzłach procesora wiadomości.
  • Aby aktywować tworzenie klucza, utwórz aplikację dewelopera.
  • Zrestartuj węzły.

W tym dokumencie znajdziesz instrukcje wykonywania tych czynności.

Co musisz wiedzieć o kluczu funkcja szyfrowania

Kroki w tym dokumencie wyjaśniają, jak włączyć funkcję KEK, która umożliwia Apigee szyfrowanie klucze tajne używane do szyfrowania aplikacji dewelopera tajnych kluczy klienta, gdy są one przechowywane w spoczynku w bazie danych Cassandra.

Domyślnie wszystkie istniejące wartości w bazie danych pozostaną niezmienione (jako zwykły tekst) i będą będzie działać tak jak wcześniej.

Jeśli wykonasz operację zapisu na niezaszyfrowanym obiekcie, zostanie on zaszyfrowany po zapisaniu operacji. Jeśli na przykład cofniesz niezaszyfrowany token, a potem go zatwierdzisz, nowo zatwierdzony token zostanie zaszyfrowany.

Zabezpieczanie kluczy

Pamiętaj, aby zapisać w bezpiecznej lokalizacji kopię magazynu kluczy, w którym klucz KEK jest przechowywany. Zalecamy użycie własnego bezpiecznego mechanizmu do zapisania kopii magazynu kluczy. Jak wyjaśniamy w instrukcjach w tym dokumencie, magazyn kluczy musi być umieszczony w każdym procesorze wiadomości i węźle serwera zarządzania, w którym może się do niego odwoływać. Ważne jest też przechowywanie kopii magazynu kluczy w innym miejscu jako kopii zapasowej.

Włączanie szyfrowania kluczy

Aby zaszyfrować klucz tajnego klucza klienta, wykonaj te czynności:

Wymagania wstępne

Zanim wykonasz czynności opisane w tym dokumencie, musisz spełnić te wymagania:

  • Musisz zainstalować lub uaktualnić Apigee Edge dla Private Cloud w wersji 4.50.00.10 lub nowszej.
  • Musisz być administratorem Apigee Edge for Private Cloud.

Krok 1. Wygeneruj magazyn kluczy

Aby utworzyć magazyn kluczy do przechowywania klucza szyfrowania klucza (KEK), wykonaj te czynności:

  1. Wykonaj to polecenie, aby wygenerować magazyn kluczy do przechowywania klucza, który posłuży do: zaszyfrować KEK. Wpisz polecenie dokładnie w takiej formie. (możesz podać dowolną nazwę magazynu kluczy):
    keytool -genseckey -alias KEYSTORE_NAME -keyalg AES -keysize 256 \
    -keystore kekstore.p12 -storetype PKCS12

    Gdy pojawi się prośba, wpisz hasło. Użyjesz tego hasła w późniejszych sekcjach podczas skonfigurować serwer zarządzania i procesor wiadomości.

    Polecenie to generuje plik magazynu kluczy kekstore.p12 zawierający klucz z alias KEYSTORE_NAME.

  2. (Opcjonalnie) Sprawdź, czy plik został poprawnie wygenerowany, używając tego polecenia. Jeśli plik jest prawidłowe, polecenie zwraca klucz z aliasem KEYSTORE_NAME:
    keytool -list -keystore kekstore.p12

Krok 2. Skonfiguruj serwer zarządzania

Następnie skonfiguruj serwer zarządzania. Jeśli serwery zarządzania są zainstalowane na wielu węzłach, musisz powtórzyć te czynności na każdym z nich.

  1. Skopiuj plik magazynu kluczy wygenerowany w kroku 1 do katalogu w węźle serwera zarządzania, np. /opt/apigee/customer/application. Na przykład:
    cp certs/kekstore.p12 /opt/apigee/customer/application
  2. Upewnij się, że plik jest czytelny dla użytkownika apigee:
    chown apigee:apigee /opt/apigee/customer/application/kekstore.p12
    chmod 400 /opt/apigee/customer/application/kekstore.p12
  3. Dodaj do obiektu /opt/apigee/customer/application/management-server.properties poniższe właściwości. Jeśli plik nie istnieje, utwórz go. Patrz też dokumentacja pliku usługi.
    conf_keymanagement_kmscred.encryption.enabled=true
    
    # Fallback is true to ensure your existing plaintext credentials continue to work
    conf_keymanagement_kmscred.encryption.allowFallback=true
    
    conf_keymanagement_kmscred.encryption.keystore.path=PATH_TO_KEYSTORE_FILE
    conf_keymanagement_kmscred.encryption.kek.alias=KEYSTORE_NAME
    
    # These could alternately be set as environment variables. These variables should be
    # accessible to Apigee user during bootup of the Java process. If environment
    # variables are specified, you can skip the password configs below.
    # KMSCRED_ENCRYPTION_KEYSTORE_PASS=
    # KMSCRED_ENCRYPTION_KEK_PASS=
    See also Using environment variables for configuration properties.
    
    conf_keymanagement_kmscred.encryption.keystore.pass=KEYSTORE_PASSWORD
    conf_keymanagement_kmscred.encryption.kek.pass=KEK_PASSWORD

    Pamiętaj, że pole KEK_PASSWORD może być takie samo jak KEYSTORE_PASSWORD w zależności od narzędzia użytego do wygenerowania magazynu kluczy.

  4. Ponownie uruchom serwer zarządzania za pomocą tych poleceń:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server wait_for_ready

    Gdy serwer zarządzania jest gotowy, polecenie wait_for_ready zwraca ten komunikat:

    Checking if management-server is up: management-server is up.
    
  5. Jeśli serwery zarządzania są zainstalowane w wielu węzłach, powtórz kroki 1–4 powyżej w przypadku każdego zarządzania i węzeł serwera.

Krok 3. Utwórz aplikację dewelopera

Po zaktualizowaniu serwerów zarządzania musisz utworzyć aplikację dewelopera, aby aktywować generowanie klucza używanego do szyfrowania danych logowania klienta:

  1. Utwórz aplikację deweloperską, aby aktywować tworzenie klucza szyfrowania danych (KEK). Instrukcje: Więcej informacji: Rejestrowanie aplikacji.
  2. Usuń aplikację dewelopera, jeśli chcesz. Po wygenerowaniu klucza szyfrowania nie musisz go już przechowywać.

Krok 4. Skonfiguruj przetwarzacze wiadomości

Dopóki nie włączysz szyfrowania w jednostkach przetwarzających wiadomości, żądania w czasie działania nie będą mogły przetwarzać żadnych zaszyfrowanych danych logowania.

  1. Skopiuj plik klucza wygenerowany w kroku 1 do katalogu w kroku procesora wiadomości, na przykład /opt/apigee/customer/application. Przykład:
    cp certs/kekstore.p12 /opt/apigee/customer/application
  2. Upewnij się, że plik jest czytelny dla użytkownika apigee:
    chown apigee:apigee /opt/apigee/customer/application/kekstore.p12
  3. Dodaj do elementu /opt/apigee/customer/application/message-processor.properties te właściwości: Jeśli plik nie istnieje, utwórz go. Patrz też Dokumentacja pliku usługi.
    conf_keymanagement_kmscred.encryption.enabled=true
    
    # Fallback is true to ensure your existing plaintext credentials continue to work
    conf_keymanagement_kmscred.encryption.allowFallback=true
    
    conf_keymanagement_kmscred.encryption.keystore.path=PATH_TO_KEYSTORE_FILE
    conf_keymanagement_kmscred.encryption.kek.alias=KEYSTORE_NAME
    
    # These could alternately be set as environment variables. These variables should be
    # accessible to Apigee user during bootup of the Java process. If environment
    # variables are specified, you can skip the password configs below.
    # KMSCRED_ENCRYPTION_KEYSTORE_PASS=
    # KMSCRED_ENCRYPTION_KEK_PASS=
    See also Using environment variables for configuration properties.
    
    
    conf_keymanagement_kmscred.encryption.keystore.pass=KEYSTORE_PASSWORD
    conf_keymanagement_kmscred.encryption.kek.pass=KEK_PASSWORD

    Pamiętaj, że pole KEK_PASSWORD może być takie samo jak KEYSTORE_PASSWORD. w zależności od narzędzia użytego do wygenerowania magazynu kluczy.

  4. Uruchom ponownie przetwarzacz wiadomości, używając tych poleceń:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor wait_for_ready

    Polecenie wait_for_ready zwraca następujący komunikat, gdy procesor wiadomości jest gotowy do przetwarzania wiadomości:

    Checking if message-processor is up: message-processor is up.
  5. Jeśli procesory wiadomości są zainstalowane w wielu węzłach, powtórz kroki 1–4 w każdym z nich węzła przetwarzającego wiadomości.

Podsumowanie

Wszystkie aplikacje dla deweloperów, które utworzysz od teraz, będą miały tajne dane logowania zaszyfrowane w spoczynku w bazie danych Cassandra.

Używanie zmiennych środowiskowych do właściwości konfiguracji

Możesz też ustawić następującą konfigurację procesora wiadomości i serwera zarządzania za pomocą zmiennych środowiskowych. Jeśli są ustawione, zmienne środowiskowe zastępują właściwości określone w pliku konfiguracyjnym procesora wiadomości lub serwera zarządzania.

conf_keymanagement_kmscred.encryption.keystore.pass=
conf_keymanagement_kmscred.encryption.kek.pass=

Odpowiednie zmienne środowiskowe to:

export KMSCRED_ENCRYPTION_KEYSTORE_PASS=KEYSTORE_PASSWORD
export KMSCRED_ENCRYPTION_KEK_PASS=KEK_PASSWORD

Jeśli ustawisz te zmienne środowiskowe, możesz pominąć te właściwości konfiguracji w w węzłach procesora komunikatów i węzłów serwera zarządzania, ponieważ będą one ignorowane:

conf_keymanagement_kmscred.encryption.keystore.pass
conf_keymanagement_kmscred.encryption.kek.pass

Dokumentacja pliku właściwości

W tej sekcji opisano właściwości konfiguracji, które musisz ustawić na wszystkich procesorach wiadomości i węzłami serwera zarządzania, jak wyjaśniono to wcześniej w tym dokumencie.

Właściwość Domyślny Opis
conf_keymanagement_kmscred.encryption.enabled false Aby można było włączyć szyfrowanie klucza, musi to być true.
conf_keymanagement_kmscred.encryption.allowFallback false Ustaw allowFallback na true, aby mieć pewność, że dotychczasowe dane logowania w postaci zwykłego tekstu będą nadal działać.
conf_keymanagement_kmscred.encryption.keystore.path Nie dotyczy Podaj ścieżkę do magazynu kluczy KEK w węźle procesora wiadomości lub węźle serwera zarządzania. Zobacz Krok 2. Skonfiguruj zarządzanie serwera i Krok 3. Skonfiguruj procesory wiadomości.
conf_keymanagement_kmscred.encryption.kek.alias Nie dotyczy Alias, w którym przechowywany jest klucz KEK w magazynie kluczy.
conf_keymanagement_kmscred.encryption.keystore.pass Nie dotyczy Opcjonalne, jeśli do ustawiania tych właściwości używasz zmiennych środowiskowych. Zobacz też Korzystanie ze środowiska dla właściwości konfiguracji.
conf_keymanagement_kmscred.encryption.kek.pass Nie dotyczy Opcjonalne, jeśli do ustawiania tych właściwości używasz zmiennych środowiskowych. Zobacz też Korzystanie ze środowiska dla właściwości konfiguracji.