Ten dokument wyjaśnia, jak włączyć szyfrowanie obiektów tajnych klienta (danych logowania klienta) aplikacji programisty przechowywanych w bazie danych Cassandra.
Opis
Tradycyjnie Apigee Edge dla Private Cloud zapewnia opcjonalne szyfrowanie danych mapy klucz-wartość (KVM) i tokenów dostępu OAuth.
W poniższej tabeli opisano opcje szyfrowania danych w spoczynku w Apigee dla chmury prywatnej:
Encja | Szyfrowanie domyślnie włączone | Opcjonalne szyfrowanie | Powiązana dokumentacja |
Podstawowe maszyny wirtualne | Nie | Tak | Więcej informacji znajdziesz w artykule Informacje o szyfrowanych KVM. |
Tokeny dostępu OAuth | Nie | Tak | Zapoznaj się z sekcją Haszowanie tokenów dla dodatkowego bezpieczeństwa. |
Tajne klucze klienta aplikacji dewelopera | Nie | Tak | Aby je włączyć, wykonaj czynności konfiguracyjne opisane w tym dokumencie. |
Aby włączyć szyfrowanie danych logowania klienta, musisz wykonać poniższe czynności na wszystkich węzłach procesora wiadomości i serwera zarządzania:
- Utwórz magazyn kluczy do przechowywania klucza szyfrowania kluczy (KEK). Apigee używa tego zaszyfrowanego klucza do szyfrowania kluczy tajnych niezbędnych do szyfrowania danych.
- Edytuj właściwości konfiguracji we wszystkich węzłach serwera zarządzania i procesora wiadomości.
- Aby aktywować tworzenie klucza, utwórz aplikację dewelopera.
- Ponownie uruchom węzły.
Te zadania zostały opisane w tym dokumencie.
Co musisz wiedzieć o funkcji szyfrowania klucza
Instrukcje w tym dokumencie wyjaśniają, jak włączyć funkcję KEK, która umożliwia Apigee szyfrowanie kluczy tajnych używanych do szyfrowania tajnych kluczy klientów aplikacji programisty, gdy są one przechowywane w spoczynku w bazie danych Cassandra.
Domyślnie wszystkie wartości w bazie danych pozostaną niezmienione (w postaci zwykłego tekstu) i będą działać tak jak wcześniej.
Jeśli wykonasz dowolną operację zapisu na niezaszyfrowanej encji, zostanie ona zaszyfrowana po zapisaniu. Jeśli na przykład unieważnisz niezaszyfrowany token, a następnie go zatwierdzisz, nowo zatwierdzony token zostanie zaszyfrowany.
Bezpieczeństwo kluczy
Pamiętaj, aby przechowywać kopię magazynu kluczy, w którym klucz KEK jest przechowywany w bezpiecznym miejscu. Zalecamy użycie własnego bezpiecznego mechanizmu do zapisywania kopii magazynu kluczy. Jak opisano w tym dokumencie, magazyn kluczy musi być umieszczony w każdym węźle procesora wiadomości i serwera zarządzania, do którego może się odwoływać lokalny plik konfiguracji. Ważne jest jednak również przechowywanie kopii magazynu kluczy w innym miejscu na zabezpieczenie i jako kopię zapasową.
Włączam szyfrowanie klucza
Aby zaszyfrować tajny klucz klienta, wykonaj te czynności:
Wymagania wstępne
Musisz spełnić następujące wymagania, zanim wykonasz czynności opisane w tym dokumencie:
- 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 poniższe polecenie, aby wygenerować magazyn kluczy do przechowywania klucza, który będzie używany do szyfrowania KEK. Wpisz polecenie dokładnie w takiej formie, w jakiej je 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. Tego hasła będziesz używać w późniejszych sekcjach podczas konfigurowania serwera zarządzania i procesora wiadomości.
To polecenie generuje plik magazynu kluczy kekstore.p12 zawierający klucz o aliasie KEYSTORE_NAME.
- (Opcjonalnie) Sprawdź, czy plik został prawidłowo wygenerowany za pomocą tego polecenia. Jeśli plik jest poprawny, 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 masz zainstalowane w 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
. 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 do tablicy
/opt/apigee/customer/application/management-server.properties
te właściwości. Jeśli plik nie istnieje, utwórz go. Zobacz 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
KEK_PASSWORD
może być taki sam jakKEYSTORE_PASSWORD
w zależności od narzędzia użytego do wygenerowania magazynu kluczy. - Ponownie uruchom 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_ready
zwraca następujący komunikat:Checking if management-server is up: management-server is up.
- Jeśli masz serwery zarządzania zainstalowane w wielu węzłach, powtórz kroki 1–4 w każdym węźle serwera zarządzania.
Krok 3. Utwórz aplikację dewelopera
Po zaktualizowaniu serwerów zarządzania musisz utworzyć aplikację dewelopera, która będzie aktywować generowanie klucza używanego do szyfrowania danych logowania klienta:
- Utwórz aplikację dla programistów, aby aktywować tworzenie klucza szyfrowania danych (KEK). Instrukcje znajdziesz w artykule o rejestrowaniu aplikacji.
- W razie potrzeby usuń aplikację dewelopera. Nie musisz go zachować po wygenerowaniu klucza szyfrowania.
Krok 4. Skonfiguruj procesory wiadomości
Dopóki nie włączysz szyfrowania w procesorach przetwarzania wiadomości, żądania środowiska wykonawczego nie będą mogły przetwarzać żadnych zaszyfrowanych danych logowania.
- Skopiuj plik magazynu kluczy wygenerowany w kroku 1 do katalogu w węźle procesora wiadomości, np.
/opt/apigee/customer/application
. 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 do tablicy
/opt/apigee/customer/application/message-processor.properties
te właściwości. Jeśli plik nie istnieje, utwórz go. Zobacz 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
KEK_PASSWORD
może być taki sam jakKEYSTORE_PASSWORD
w zależności od narzędzia użytego do wygenerowania magazynu kluczy. - Ponownie uruchom procesor 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 będzie gotowy do przetworzenia wiadomości:Checking if message-processor is up: message-processor is up.
- Jeśli procesory wiadomości są zainstalowane w wielu węzłach, powtórz kroki 1–4 w każdym węźle.
Podsumowanie
Wszystkie aplikacje dewelopera, które utworzysz od tej pory, będą miały szyfrowanie swoich danych logowania w spoczynku w bazie danych Cassandra.
Używanie zmiennych środowiskowych do właściwości konfiguracji
Za pomocą zmiennych środowiskowych możesz też ustawić poniższe właściwości procesora wiadomości i serwera zarządzania. Jeśli jest ustawiony, zmienne środowiskowe zastępują właściwości ustawione w procesorze wiadomości lub pliku konfiguracji 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ąć je w plikach konfiguracji w węzłach procesora wiadomości i serwera zarządzania, ponieważ będą one ignorowane:
conf_keymanagement_kmscred.encryption.keystore.pass conf_keymanagement_kmscred.encryption.kek.pass
Odwołanie do pliku właściwości
W tej sekcji opisano właściwości konfiguracji, które trzeba ustawić we wszystkich węzłach procesora wiadomości i serwera zarządzania, zgodnie z opisem w tym dokumencie.
Właściwość | Domyślne | Opis |
conf_keymanagement_kmscred.encryption.enabled
|
false
|
Aby włączyć szyfrowanie klucza, musisz mieć wartość true .
|
conf_keymanagement_kmscred.encryption.allowFallback
|
false
|
Ustaw wartość 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 serwera zarządzania. Zobacz Krok 2. Skonfiguruj serwer zarządzania i Krok 3. Skonfiguruj procesory wiadomości. |
conf_keymanagement_kmscred.encryption.kek.alias
|
Nie dotyczy | Alias, dla którego 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. Zapoznaj się też z informacjami o używaniu zmiennych środowiskowych do 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. Zapoznaj się też z informacjami o używaniu zmiennych środowiskowych do właściwości konfiguracji. |