Questo documento spiega come attivare la crittografia di segreti dei consumatori dell'app sviluppatore (credenziali client) archiviati nel database Cassandra.
Panoramica
Tradizionalmente, Apigee Edge per il cloud privato fornisce la crittografia facoltativa per la mappa chiave-valore (KVM) e token di accesso OAuth.
La tabella seguente descrive le opzioni di crittografia per i dati at-rest in Apigee per il cloud privato:
Entità | Crittografia abilitata per impostazione predefinita | Crittografia facoltativa disponibile | Documentazione correlata |
KVM | No | Sì | Consulta l'articolo Informazioni sulle KVM criptate. |
Token di accesso OAuth | No | Sì | Consulta la sezione Hashing dei token per una maggiore sicurezza. |
Segreti dei consumatori dell'app dello sviluppatore | No | Sì | Per attivarla, esegui la procedura di configurazione descritta in questo documento. |
Per attivare la crittografia delle credenziali client, devi eseguire le seguenti attività sul tutti i nodi del processore di messaggi e dei server di gestione:
- crea un archivio chiavi per archiviare Chiave di crittografia della chiave (KEK). Apigee utilizza questa chiave criptata per criptare le chiavi private necessarie per criptare i tuoi dati.
- Modifica le proprietà di configurazione su tutti i nodi del server di gestione e del processore di messaggi.
- Crea un'app sviluppatore per attivare la creazione della chiave.
- Riavvia i nodi.
Queste attività sono illustrate in questo documento.
Cosa devi sapere sulla chiave funzionalità di crittografia
I passaggi in questo documento spiegano come abilitare la funzionalità KEK, che consente ad Apigee di criptare chiavi private utilizzate per criptare l'app sviluppatore i segreti del consumatore quando sono archiviati at-rest nel database Cassandra.
Per impostazione predefinita, tutti i valori esistenti nel database rimarranno invariati (in testo normale) continuano a funzionare come prima.
Se esegui un'operazione di scrittura su un'entità non criptata, questa verrà criptata quando viene salvata. Ad esempio, se revochi un token non criptato e poi approvi in un secondo momento il token appena approvato verrà criptato.
Tenere al sicuro le chiavi
Assicurati di archiviare una copia dell'archivio chiavi in cui è archiviata la KEK in un luogo sicuro. Ti consigliamo di usare le tue meccanismo di sicurezza per salvare una copia dell'archivio chiavi. Come spiegato nelle istruzioni in questo documento, deve essere posizionato un archivio chiavi su ciascun processore di messaggi e nodo del server di gestione in cui di configurazione di Google Cloud può farvi riferimento. Ma è anche importante memorizzare un dell'archivio chiavi in un'altra posizione a scopo di conservazione e come backup.
Abilitazione della crittografia delle chiavi
Segui questi passaggi per criptare le chiavi private dei consumatori:
Prerequisiti
Prima di eseguire i passaggi descritti in questo documento, devi soddisfare i seguenti requisiti:
- Devi installare o eseguire l'upgrade ad Apigee Edge per Private Cloud 4.50.00.10 o versioni successive.
- Devi essere un amministratore di Apigee Edge per il cloud privato.
Passaggio 1: genera un archivio chiavi
Segui questi passaggi per creare un archivio chiavi in cui conservare la chiave di crittografia della chiave (KEK):
- Esegui questo comando per generare un archivio chiavi in cui archiviare una chiave che verrà utilizzata
crittografare la KEK. Inserisci il comando esattamente come mostrato. (puoi specificare il nome di un archivio chiavi che preferisci):
keytool -genseckey -alias KEYSTORE_NAME -keyalg AES -keysize 256 \ -keystore kekstore.p12 -storetype PKCS12
Quando richiesto, inserisci una password. Utilizzerai questa password nelle sezioni successive quando configurare il server di gestione e il processore di messaggi.
Questo comando genera un file dell'archivio chiavi kekstore.p12 contenente una chiave con alias KEYSTORE_NAME.
- (Facoltativo) Verifica che il file sia stato generato correttamente con il comando seguente. Se il file
se è corretta, il comando restituisce una chiave con l'alias KEYSTORE_NAME:
keytool -list -keystore kekstore.p12
Passaggio 2: configura il server di gestione
Configura quindi il server di gestione. Se hai installato server di gestione su più nodi, devi ripetere questi passaggi su ciascun nodo.
- Copia il file dell'archivio chiavi generato nel passaggio 1 in una directory sul nodo del server di gestione, ad esempio
/opt/apigee/customer/application
. Ad esempio:cp certs/kekstore.p12 /opt/apigee/customer/application
- Assicurati che il file sia leggibile dall'utente di
apigee
:chown apigee:apigee /opt/apigee/customer/application/kekstore.p12
chmod 400 /opt/apigee/customer/application/kekstore.p12
- Aggiungi le seguenti proprietà a
/opt/apigee/customer/application/management-server.properties
. Se il file non esiste, crealo. Vedi anche Riferimento file di proprietà.
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
Tieni presente che
KEK_PASSWORD
potrebbe essere uguale aKEYSTORE_PASSWORD
, a seconda dello strumento utilizzato per generare l'archivio chiavi. - Riavvia il server di gestione utilizzando i seguenti comandi:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
/opt/apigee/apigee-service/bin/apigee-service edge-management-server wait_for_ready
Il comando
wait_for_ready
restituisce il seguente messaggio quando il server di gestione è pronto:Checking if management-server is up: management-server is up.
- Se hai installato server di gestione su più nodi, ripeti i passaggi da 1 a 4 precedenti per ogni sistema di gestione di un nodo del server.
Passaggio 3: crea un'app sviluppatore
Ora che i server di gestione sono aggiornati, devi creare un'app sviluppatore per attivare la generazione della chiave utilizzata per criptare i dati delle credenziali del client:
- Crea un'app sviluppatore per attivare la creazione di una chiave di crittografia dei dati (KEK). Per quanto riguarda i passaggi, consulta la sezione Registrazione di un'app.
- Se vuoi, elimina l'app sviluppatore. Non è necessario tenerlo a portata di mano una volta che viene generata la chiave.
Passaggio 4: configura i processori di messaggi
Finché la crittografia non sarà abilitata nei processori di messaggi, le richieste di runtime non saranno in grado di elaborare alcuna credenziale criptata.
- Copia il file dell'archivio chiavi generato nel passaggio 1 in una directory sul nodo del processore di messaggi.
ad esempio
/opt/apigee/customer/application
. Ad esempio:cp certs/kekstore.p12 /opt/apigee/customer/application
- Assicurati che il file sia leggibile dall'utente
apigee
:chown apigee:apigee /opt/apigee/customer/application/kekstore.p12
- Aggiungi le seguenti proprietà a
/opt/apigee/customer/application/message-processor.properties
. Se il file non esiste, crealo. Vedi anche Riferimento file di proprietà.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
Tieni presente che
KEK_PASSWORD
potrebbe essere uguale aKEYSTORE_PASSWORD
a seconda dello strumento usato per generare l'archivio chiavi. - Riavvia il processore di messaggi utilizzando i seguenti comandi:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor wait_for_ready
Il comando
wait_for_ready
restituisce il seguente messaggio quando il processore di messaggi è pronto a elaborare i messaggi:Checking if message-processor is up: message-processor is up.
- Se hai processori di messaggi installati su più nodi, ripeti i passaggi da 1 a 4 su ogni del processore di messaggi.
Riepilogo
Il secret delle credenziali di qualsiasi app sviluppatore che crei d'ora in poi sarà criptato all'indirizzo nel database di Cassandra.
Utilizzo delle variabili di ambiente per proprietà di configurazione
In alternativa, puoi impostare la seguente configurazione del processore di messaggi e del server di gestione utilizzando le variabili di ambiente. Se impostato, le variabili di ambiente sostituiscono le proprietà nel file di configurazione del processore di messaggi o del server di gestione.
conf_keymanagement_kmscred.encryption.keystore.pass= conf_keymanagement_kmscred.encryption.kek.pass=
Le variabili di ambiente corrispondenti sono:
export KMSCRED_ENCRYPTION_KEYSTORE_PASS=KEYSTORE_PASSWORD
export KMSCRED_ENCRYPTION_KEK_PASS=KEK_PASSWORD
Se imposti queste variabili di ambiente, puoi omettere queste proprietà di configurazione dalla di configurazione nei nodi del processore di messaggi e del server di gestione, in quanto verranno ignorati:
conf_keymanagement_kmscred.encryption.keystore.pass conf_keymanagement_kmscred.encryption.kek.pass
Riferimento ai file delle proprietà
Questa sezione descrive le proprietà di configurazione che è necessario impostare su tutti i processori di messaggi e i nodi server di gestione, come spiegato in precedenza in questo documento.
Proprietà | Predefinito | Descrizione |
conf_keymanagement_kmscred.encryption.enabled
|
false
|
Deve essere true per abilitare la crittografia della chiave.
|
conf_keymanagement_kmscred.encryption.allowFallback
|
false
|
Imposta allowFallback su true per assicurarti che le tue credenziali di testo non crittografato esistenti continuino a funzionare.
|
conf_keymanagement_kmscred.encryption.keystore.path
|
N/D | Specifica il percorso dell'archivio chiavi KEK nel processore di messaggi o nel nodo del server di gestione. Vedi il Passaggio 2: configura la gestione server e il Passaggio 3: configura i processori di messaggi. |
conf_keymanagement_kmscred.encryption.kek.alias
|
N/D | Alias in base al quale la KEK viene archiviata nell'archivio chiavi. |
conf_keymanagement_kmscred.encryption.keystore.pass
|
N/D | Facoltativo se utilizzi variabili di ambiente per impostare queste proprietà. Vedi anche Utilizzo dell'ambiente variabili per le proprietà di configurazione. |
conf_keymanagement_kmscred.encryption.kek.pass
|
N/D | Facoltativo se utilizzi variabili di ambiente per impostare queste proprietà. Vedi anche Utilizzo dell'ambiente variabili per le proprietà di configurazione. |