W tym dokumencie wyjaśniono, jak włączyć szyfrowanie danych klienta (danych logowania klienta) aplikacji dewelopera przechowywanych w bazie danych Cassandra.
Przegląd
Tradycyjnie Apigee Edge dla chmury prywatnej zapewnia opcjonalne szyfrowanie danych mapy klucz-wartość (KVM) i tokenów dostępu OAuth.
W tabeli poniżej opisano opcje szyfrowania danych w spoczynku w Apigee for chmurze prywatnej:
| Encja | Szyfrowanie domyślnie włączone | Szyfrowanie opcjonalnie dostępne | Powiązana dokumentacja |
| KVM | Nie | Tak | Zobacz Informacje o zaszyfrowanych maszynach wirtualnych KVM. |
| Tokeny dostępu OAuth | Nie | Tak | Więcej informacji znajdziesz w sekcji Haszowanie tokenów w celu zwiększenia bezpieczeństwa. |
| Klucze tajne klienta aplikacji dewelopera | Nie | Tak | Aby ją włączyć, wykonaj czynności konfiguracyjne opisane w tym dokumencie. |
Aby włączyć szyfrowanie danych logowania klienta, musisz wykonać te zadania na wszystkich węzłach procesora komunikatów i serwera zarządzania:
- utworzyć magazyn kluczy do przechowywania klucza szyfrującego klucze (KEK); Apigee używa tego zaszyfrowanego klucza do szyfrowania kluczy tajnych potrzebnych do szyfrowania danych.
- Edytuj właściwości konfiguracji we wszystkich węzłach serwera zarządzania i procesora komunikatów.
- Utwórz aplikację dewelopera, aby aktywować tworzenie klucza.
- Uruchom ponownie węzły.
Te zadania są opisane w tym dokumencie.
Co musisz wiedzieć o funkcji szyfrowania kluczy
W tym dokumencie opisano, jak włączyć funkcję KEK, która umożliwia Apigee szyfrowanie kluczy tajnych używanych do szyfrowania kluczy tajnych aplikacji dewelopera, gdy są one przechowywane w bazie danych Cassandra.
Domyślnie wszystkie istniejące wartości w bazie danych pozostaną niezmienione (w postaci zwykłego tekstu) i będą nadal działać jak wcześniej.
Jeśli wykonasz operację zapisu na niezaszyfrowanej encji, zostanie ona zaszyfrowana po zapisaniu operacji. Jeśli na przykład unieważnisz niezaszyfrowany token, a później go zatwierdzisz, nowo zatwierdzony token zostanie zaszyfrowany.
Bezpieczne przechowywanie kluczy
Pamiętaj, aby przechowywać kopię magazynu kluczy, w którym znajduje się klucz KEK, w bezpiecznym miejscu. Zalecamy użycie własnego bezpiecznego mechanizmu do zapisania kopii magazynu kluczy. Zgodnie z instrukcjami podanymi w tym dokumencie magazyn kluczy musi być umieszczony na każdym procesorze komunikatów i węźle serwera zarządzania, gdzie może się do niego odwoływać lokalny plik konfiguracji. Ważne jest jednak, aby przechowywać kopię magazynu kluczy w innym miejscu, aby zapewnić jej bezpieczeństwo i mieć kopię zapasową.
Włączanie szyfrowania kluczy
Aby zaszyfrować klucz tajny klienta, wykonaj te czynności:
Wymagania wstępne
Zanim wykonasz czynności opisane w tym dokumencie, musisz spełnić te wymagania:
- Musisz zainstalować Apigee Edge dla chmury prywatnej w wersji 4.50.00.10 lub nowszej albo uaktualnić do tej wersji.
- Musisz być administratorem Apigee Edge dla chmury prywatnej.
Krok 1. Wygeneruj magazyn kluczy
Aby utworzyć magazyn kluczy, w którym będzie przechowywany klucz szyfrujący klucze (KEK), wykonaj te czynności:
- Wykonaj to polecenie, aby wygenerować magazyn kluczy, w którym będzie przechowywany klucz używany do szyfrowania klucza KEK. Wpisz polecenie dokładnie tak, jak pokazano. (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. Będziesz używać tego hasła w dalszych sekcjach podczas konfigurowania serwera zarządzania i procesora komunikatów.
To polecenie generuje plik magazynu kluczy kekstore.p12 zawierający klucz z aliasem KEYSTORE_NAME.
- (Opcjonalnie) Sprawdź, czy plik został wygenerowany prawidłowo, za pomocą tego polecenia. Jeśli plik jest prawidłowy, 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 węźle.
- 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
- Upewnij się, że plik może być odczytywany przez użytkownika
apigee:chown apigee:apigee /opt/apigee/customer/application/kekstore.p12
chmod 400 /opt/apigee/customer/application/kekstore.p12
- Dodaj do elementu
/opt/apigee/customer/application/management-server.propertieste właściwości. Jeśli plik nie istnieje, utwórz go. Zobacz też Dokumentacja pliku właściwości.
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
KEK_PASSWORDmoże być taki sam jakKEYSTORE_PASSWORDw zależności od narzędzia użytego do wygenerowania magazynu kluczy. - Uruchom ponownie serwer zarządzania, używając 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 będzie gotowy, polecenie
wait_for_readyzwróci ten komunikat:Checking if management-server is up: management-server is up.
- Jeśli serwery zarządzania są zainstalowane na wielu węzłach, powtórz kroki 1–4 na każdym węźle serwera zarządzania.
Krok 3. Utwórz aplikację dewelopera
Po zaktualizowaniu serwerów zarządzania musisz utworzyć aplikację dewelopera, aby wygenerować klucz używany do szyfrowania danych logowania klienta:
- Utworzyć aplikację dewelopera, aby wywołać utworzenie klucza szyfrującego klucze (KEK). Instrukcje znajdziesz w artykule Rejestrowanie aplikacji.
- Jeśli chcesz, usuń aplikację dewelopera. Nie musisz go zachowywać po wygenerowaniu klucza szyfrowania.
Krok 4. Skonfiguruj procesory komunikatów
Dopóki szyfrowanie nie zostanie włączone w procesorach komunikatów, żądania środowiska wykonawczego nie będą mogły przetwarzać zaszyfrowanych danych logowania.
- Skopiuj plik magazynu kluczy wygenerowany w kroku 1 do katalogu w węźle procesora komunikatów, np.
/opt/apigee/customer/application. Na przykład:cp certs/kekstore.p12 /opt/apigee/customer/application
- Upewnij się, że plik może być odczytywany przez użytkownika
apigee:chown apigee:apigee /opt/apigee/customer/application/kekstore.p12
- Dodaj do elementu
/opt/apigee/customer/application/message-processor.propertieste właściwości. Jeśli plik nie istnieje, utwórz go. Zobacz też Dokumentacja pliku właściwości.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
KEK_PASSWORDmoże być taki sam jakKEYSTORE_PASSWORDw zależności od narzędzia użytego do wygenerowania magazynu kluczy. - Uruchom ponownie procesor komunikatów za pomocą 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
Gdy procesor komunikatów jest gotowy do przetwarzania komunikatów, polecenie
wait_for_readyzwraca ten komunikat:Checking if message-processor is up: message-processor is up.
- Jeśli masz procesory komunikatów zainstalowane na wielu węzłach, powtórz kroki 1–4 na każdym węźle procesora komunikatów.
Podsumowanie
Wszystkie aplikacje dewelopera, które od teraz utworzysz, będą miały tajne dane logowania zaszyfrowane w spoczynku w bazie danych Cassandra.
Używanie zmiennych środowiskowych we właściwościach konfiguracji
Możesz też ustawić te właściwości konfiguracji procesora komunikatów i serwera zarządzania za pomocą zmiennych środowiskowych. Jeśli zmienne środowiskowe są ustawione, zastępują właściwości ustawione w pliku konfiguracyjnym procesora komunikatów lub serwera zarządzania.
conf_keymanagement_kmscred.encryption.keystore.pass= conf_keymanagement_kmscred.encryption.kek.pass=
Odpowiadające im 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 plikach konfiguracji w węzłach procesora komunikatów i serwera zarządzania, ponieważ zostaną one zignorowane:
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ć we wszystkich węzłach procesora komunikatów i serwera zarządzania, jak wyjaśniono wcześniej w tym dokumencie.
| Właściwość | Domyślny | Opis |
conf_keymanagement_kmscred.encryption.enabled
|
false
|
Aby włączyć szyfrowanie kluczy, musisz mieć true.
|
conf_keymanagement_kmscred.encryption.allowFallback
|
false
|
Aby mieć pewność, że dotychczasowe dane logowania w formie zwykłego tekstu będą nadal działać, ustaw parametr allowFallback na true.
|
conf_keymanagement_kmscred.encryption.keystore.path
|
Nie dotyczy | Podaj ścieżkę do magazynu kluczy KEK w procesorze komunikatów lub węźle serwera zarządzania. Zobacz Krok 2. Skonfiguruj serwer zarządzania i Krok 3. Skonfiguruj procesory komunikatów. |
conf_keymanagement_kmscred.encryption.kek.alias
|
Nie dotyczy | Alias, pod którym klucz KEK jest przechowywany 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ż Używanie zmiennych środowiskowych we właściwościach konfiguracji. |
conf_keymanagement_kmscred.encryption.kek.pass
|
Nie dotyczy | Opcjonalne, jeśli do ustawienia tych właściwości używasz zmiennych środowiskowych. Zobacz też Używanie zmiennych środowiskowych we właściwościach konfiguracji. |