Z tego dokumentu dowiesz się, jak włączyć szyfrowanie kluczy tajnych klienta aplikacji dewelopera (danych logowania klienta) przechowywanych w bazie danych Cassandra.
Przegląd
Tradycyjnie Apigee Edge dla chmury prywatnej zapewniało opcjonalne szyfrowanie danych mapy klucz-wartość (KVM) i tokenów dostępu OAuth.
W tabeli poniżej opisujemy opcje szyfrowania danych w spoczynku w Apigee dla chmury prywatnej:
| Encja | Szyfrowanie włączone domyślnie | Szyfrowanie dostępne opcjonalnie | Powiązana dokumentacja |
| KVM | Nie | Tak | Zobacz Informacje o zaszyfrowanych KVM. |
| Tokeny dostępu OAuth | Nie | Tak | Zobacz Haszowanie tokenów w celu zwiększenia bezpieczeństwa. |
| Klucze tajne klienta aplikacji dewelopera | Nie | Tak | Aby włączyć, 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 komunikatów i serwera zarządzania:
- Utwórz 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 wywołać utworzenie klucza.
- Uruchom ponownie węzły.
Te zadania są opisane w tym dokumencie.
Co musisz wiedzieć o funkcji szyfrowania kluczy
Z czynności opisanych w tym dokumencie dowiesz się, jak włączyć funkcję KEK, która umożliwia Apigee szyfrowanie kluczy tajnych używanych do szyfrowania kluczy tajnych klienta aplikacji dewelopera, gdy są one przechowywane w spoczynku w bazie danych Cassandra.
Domyślnie wszystkie dotychczasowe wartości w bazie danych pozostaną bez zmian (w postaci zwykłego tekstu) i będą działać jak dotychczas.
Jeśli wykonasz operację zapisu na niezaszyfrowanej encji, zostanie ona zaszyfrowana 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 przechowywać kopię magazynu kluczy, w którym jest przechowywany KEK, w bezpiecznym miejscu. Zalecamy użycie własnego bezpiecznego mechanizmu do zapisywania kopii magazynu kluczy. Zgodnie z instrukcjami w tym dokumencie, magazyn kluczy musi znajdować się w każdym węźle procesora wiadomości i serwera zarządzania, w którym lokalny plik konfiguracji może się do niego odwoływać. Ważne jest jednak, aby przechowywać kopię magazynu kluczy w innym miejscu w celu zabezpieczenia i utworzenia kopii zapasowej.
Włączanie szyfrowania kluczy
Aby włączyć szyfrowanie kluczy tajnych klienta, wykonaj te czynności:
Wymagania wstępne
Zanim wykonasz czynności opisane w tym dokumencie, musisz spełnić te wymagania:
- Musisz zainstalować lub zaktualizować Apigee Edge dla chmury prywatnej do wersji 4.50.00.10 lub nowszej.
- Musisz być administratorem Apigee Edge dla chmury prywatnej.
Krok 1. Wygeneruj magazyn kluczy
Aby utworzyć magazyn kluczy do przechowywania klucza szyfrującego klucze (KEK):
- Aby wygenerować magazyn kluczy do przechowywania klucza, który będzie używany do
szyfrowania KEK, wykonaj to polecenie. 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. Użyjesz 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 masz serwery zarządzania zainstalowane na wielu węzłach, musisz powtórzyć te czynności w 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 jest czytelny dla użytkownika
apigee:chown apigee:apigee /opt/apigee/customer/application/kekstore.p12
chmod 400 /opt/apigee/customer/application/kekstore.p12
- Dodaj te właściwości do pliku
/opt/apigee/customer/application/management-server.properties. Jeśli plik nie istnieje, utwórz go. Zobacz też Informacje o 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ć takie samo jakKEYSTORE_PASSWORDw zależności od narzędzia użytego do wygenerowania magazynu kluczy. - Uruchom ponownie 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 będzie gotowy, polecenie
wait_for_readyzwróci ten komunikat:Checking if management-server is up: management-server is up.
- Jeśli masz serwery zarządzania zainstalowane na wielu węzłach, powtórz kroki 1–4 w każdym węźle serwera zarządzania.
Krok 3. Utwórz aplikację dewelopera
Gdy serwery zarządzania zostaną zaktualizowane, musisz utworzyć aplikację dewelopera, aby wywołać wygenerowanie klucza używanego do szyfrowania danych logowania klienta:
- Utwórz aplikację dewelopera, aby wywołać utworzenie klucza szyfrującego dane (KEK). Instrukcje znajdziesz w artykule Rejestrowanie aplikacji.
- Jeśli chcesz, usuń aplikację dewelopera. Nie musisz jej zachowywać po wygenerowaniu klucza szyfrowania.
Krok 4. Skonfiguruj procesory komunikatów
Dopóki szyfrowanie nie zostanie włączone w procesorach komunikatów, żądania w czasie działania 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 jest czytelny dla użytkownika
apigee:chown apigee:apigee /opt/apigee/customer/application/kekstore.p12
- Dodaj te właściwości do pliku
/opt/apigee/customer/application/message-processor.properties. Jeśli plik nie istnieje, utwórz go. Zobacz też Informacje o 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ć takie samo 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 będzie gotowy do przetwarzania wiadomości, polecenie
wait_for_readyzwróci 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 w każdym węźle procesora komunikatów.
Podsumowanie
Wszystkie aplikacje dewelopera, które od teraz utworzysz, będą miały klucz tajny danych logowania zaszyfrowany w spoczynku w bazie danych Cassandra.
Używanie zmiennych środowiskowych na potrzeby właściwości konfiguracji
Możesz też ustawić te właściwości konfiguracji procesora komunikatów i serwera zarządzania za pomocą zmiennych środowiskowych. Jeśli są ustawione, zmienne środowiskowe zastępują właściwości ustawione w pliku konfiguracji procesora komunikatów 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 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
Informacje o pliku właściwości
W tej sekcji opisujemy właściwości konfiguracji, które musisz ustawić we wszystkich węzłach procesora komunikatów i serwera zarządzania, jak opisano wcześniej w tym dokumencie.
| Właściwość | Domyślny | Opis |
conf_keymanagement_kmscred.encryption.enabled
|
false
|
Aby włączyć szyfrowanie kluczy, musi mieć wartość true.
|
conf_keymanagement_kmscred.encryption.allowFallback
|
false
|
Ustaw wartość allowFallback na true, aby zapewnić, ż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 komunikatów lub 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 KEK jest przechowywany w magazynie kluczy. |
conf_keymanagement_kmscred.encryption.keystore.pass
|
Nie dotyczy | Opcjonalne, jeśli do ustawienia tych właściwości używasz zmiennych środowiskowych. Zobacz też Używanie zmiennych środowiskowych na potrzeby właściwości 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 na potrzeby właściwości konfiguracji. |