Ce document explique comment activer le chiffrement Codes secrets client (identifiants client) de l'application de développeur stockés dans la base de données Cassandra.
Présentation
Traditionnellement, Apigee Edge for Private Cloud a fourni un chiffrement facultatif pour le mappage clé-valeur (KVM) et les jetons d'accès OAuth.
Le tableau suivant décrit les options de chiffrement des données au repos dans Apigee pour Private Cloud:
Entité | Chiffrement activé par défaut | Chiffrement disponible en option | Documentation associée |
Clés KVM | Non | Oui | Consultez À propos des KVM chiffrées. |
Jetons d'accès OAuth | Non | Oui | Consultez Hachage de jetons pour plus de sécurité. |
Secrets des utilisateurs de l'application de développeur | Non | Oui | Pour l'activer, suivez la procédure de configuration décrite dans ce document. |
Pour activer le chiffrement des identifiants client, vous devez effectuer les tâches suivantes sur tous les nœuds du processeur de messages et du serveur de gestion:
- Créez un keystore pour stocker Clé de chiffrement de clé (clé KEK). Apigee utilise cette clé chiffrée pour chiffrer les clés secrètes nécessaires au chiffrement de vos données.
- Permet de modifier les propriétés de configuration sur tous les nœuds du serveur de gestion et du processeur de messages.
- Créez une application de développement pour déclencher la création de clés.
- Redémarrez les nœuds.
Ces tâches sont expliquées dans ce document.
Ce que vous devez savoir sur la clé fonctionnalité de chiffrement
Les étapes décrites dans ce document expliquent comment activer la fonctionnalité KEK, qui permet à Apigee de chiffrer le clés secrètes utilisées pour chiffrer l'application du développeur des secrets client lorsqu'ils sont stockés au repos dans la base de données Cassandra.
Par défaut, toutes les valeurs existantes dans la base de données restent inchangées (en texte brut) et de continuer à fonctionner comme avant.
<ph type="x-smartling-placeholder">Si vous effectuez une opération d'écriture sur une entité non chiffrée, elle est chiffrée lorsque l'opération est enregistrée. Par exemple, si vous révoquez un jeton non chiffré, puis que vous approuvez le jeton récemment approuvé est chiffré.
Sécuriser les clés
Veillez à conserver une copie du keystore dans lequel la KEK est stockée en lieu sûr. Nous vous recommandons d'utiliser un mécanisme sécurisé pour enregistrer une copie du keystore. Comme l'expliquent les instructions de ce document, un keystore doit être placé sur chaque nœud de processeur de messages et de serveur de gestion où de configuration Terraform. Mais il est également important de stocker une copie du keystore à un autre endroit pour la conserver et la sauvegarder.
Activer le chiffrement par clé
Pour cela, procédez comme suit:
Prérequis
Avant de suivre la procédure décrite dans ce document, vous devez remplir les conditions suivantes:
- Vous devez installer ou mettre à niveau Apigee Edge pour Private Cloud 4.50.00.10 ou une version ultérieure.
- Vous devez être un administrateur Apigee Edge for Private Cloud.
Étape 1: Générez un keystore
Pour créer un keystore qui contiendra la clé de chiffrement de clé (KEK):
<ph type="x-smartling-placeholder">- Exécutez la commande suivante pour générer un keystore afin de stocker une clé qui servira à
chiffrer la clé KEK. Saisissez la commande exactement comme indiqué. (Vous pouvez indiquer le nom du keystore de votre choix):
keytool -genseckey -alias KEYSTORE_NAME -keyalg AES -keysize 256 \ -keystore kekstore.p12 -storetype PKCS12
Lorsque vous y êtes invité, saisissez un mot de passe. Vous utiliserez ce mot de passe dans les sections suivantes, configurer le serveur de gestion et le processeur de messages.
Cette commande génère un fichier keystore kekstore.p12 contenant une clé avec l'alias KEYSTORE_NAME.
- (Facultatif) Vérifiez que le fichier a été généré correctement à l'aide de la commande suivante. Si le fichier
est correct, la commande renvoie une clé avec l'alias KEYSTORE_NAME:
keytool -list -keystore kekstore.p12
Étape 2: Configurez le serveur de gestion
Configurez ensuite le serveur de gestion. Si vous avez des serveurs de gestion installés sur plusieurs nœuds, vous devez répéter ces étapes sur chaque nœud.
- Copiez le fichier keystore que vous avez généré à l'étape 1 dans un répertoire du nœud du serveur de gestion, tel que
/opt/apigee/customer/application
. Exemple :cp certs/kekstore.p12 /opt/apigee/customer/application
- Assurez-vous que le fichier est lisible par l'utilisateur
apigee
:chown apigee:apigee /opt/apigee/customer/application/kekstore.p12
chmod 400 /opt/apigee/customer/application/kekstore.p12
- Ajoutez les propriétés suivantes à
/opt/apigee/customer/application/management-server.properties
. Si le fichier n'existe pas, créez-le. Consultez également la section Documentation de référence du fichier de propriétés.
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
Notez que
KEK_PASSWORD
peut être identique àKEYSTORE_PASSWORD
selon l'outil utilisé pour générer le keystore. - Redémarrez le serveur de gestion à l'aide des commandes suivantes:
/opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
/opt/apigee/apigee-service/bin/apigee-service edge-management-server wait_for_ready
La commande
wait_for_ready
renvoie le message suivant lorsque le serveur de gestion est prêt:Checking if management-server is up: management-server is up.
- Si vous avez des serveurs de gestion installés sur plusieurs nœuds, répétez les étapes 1 à 4 ci-dessus pour chaque gestion le nœud de serveur.
Étape 3: Créez une application de développement
Maintenant que les serveurs de gestion sont mis à jour, vous devez créer une application de développement pour générer des déclencheurs de la clé utilisée pour chiffrer les données d'identification du client:
- Créez une application de développeur pour déclencher la création d'une clé de chiffrement de données (KEK). Pour les étapes, consultez la section Enregistrer une application.
- Si vous le souhaitez, supprimez l'application du développeur. Vous n'avez pas besoin de le conserver une fois le chiffrement est générée.
Étape 4: Configurez les processeurs de messages
Tant que le chiffrement n'est pas activé dans les processeurs de messages, les requêtes d'exécution ne peuvent pas traiter les identifiants chiffrés.
- Copiez le fichier keystore généré à l'étape 1 dans un répertoire du nœud du processeur de messages.
comme
/opt/apigee/customer/application
. Exemple :cp certs/kekstore.p12 /opt/apigee/customer/application
- Assurez-vous que le fichier est lisible par l'utilisateur
apigee
:chown apigee:apigee /opt/apigee/customer/application/kekstore.p12
- Ajoutez les propriétés suivantes à
/opt/apigee/customer/application/message-processor.properties
. Si le fichier n'existe pas, créez-le. Consultez également la section Documentation de référence du fichier de propriétés.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
Notez que
KEK_PASSWORD
peut être identique àKEYSTORE_PASSWORD
. en fonction de l'outil utilisé pour générer le keystore. - Redémarrez le processeur de messages à l'aide des commandes suivantes:
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart
/opt/apigee/apigee-service/bin/apigee-service edge-message-processor wait_for_ready
La commande
wait_for_ready
renvoie le message suivant lorsque le processeur de messages est prêt à traiter les messages:Checking if message-processor is up: message-processor is up.
- Si des processeurs de messages sont installés sur plusieurs nœuds, répétez les étapes 1 à 4 pour chacun d'eux nœud de traitement des messages.
Résumé
Les identifiants de toutes les applications de développement que vous créez à partir de maintenant seront chiffrés à l'adresse dans la base de données Cassandra.
Utiliser des variables d'environnement pour propriétés de configuration
Vous pouvez également définir la configuration suivante pour le processeur de messages et le serveur de gestion à l'aide de variables d'environnement. Si elles sont définies, les variables d'environnement remplacent les propriétés défini dans le fichier de configuration du processeur de messages ou du serveur de gestion.
conf_keymanagement_kmscred.encryption.keystore.pass= conf_keymanagement_kmscred.encryption.kek.pass=
Les variables d'environnement correspondantes sont les suivantes:
export KMSCRED_ENCRYPTION_KEYSTORE_PASS=KEYSTORE_PASSWORD
export KMSCRED_ENCRYPTION_KEK_PASS=KEK_PASSWORD
Si vous définissez ces variables d'environnement, vous pouvez omettre ces propriétés de configuration dans le fichier de configuration sur les nœuds du processeur de messages et du serveur de gestion, car ils seront ignorés:
conf_keymanagement_kmscred.encryption.keystore.pass conf_keymanagement_kmscred.encryption.kek.pass
Documentation de référence sur le fichier de propriétés
Cette section décrit les propriétés de configuration que vous devez définir sur tous les processeurs de messages. et de serveur de gestion, comme expliqué précédemment dans ce document.
Propriété | Par défaut | Description |
conf_keymanagement_kmscred.encryption.enabled
|
false
|
Doit être true pour activer le chiffrement de clé.
|
conf_keymanagement_kmscred.encryption.allowFallback
|
false
|
Définissez allowFallback sur true pour vous assurer que vos identifiants en texte brut existants continuent de fonctionner.
|
conf_keymanagement_kmscred.encryption.keystore.path
|
ND | Indiquez le chemin d'accès au keystore KEK sur le nœud du processeur de messages ou du serveur de gestion. Consultez l'Étape 2: Configurez la gestion serveur et à l'Étape 3: Configurez les processeurs de messages. |
conf_keymanagement_kmscred.encryption.kek.alias
|
ND | Alias par rapport auquel la KEK est stockée dans le keystore. |
conf_keymanagement_kmscred.encryption.keystore.pass
|
ND | Facultatif si vous définissez ces propriétés à l'aide de variables d'environnement. Voir aussi Utilisation de l'environnement pour les propriétés de configuration. |
conf_keymanagement_kmscred.encryption.kek.pass
|
ND | Cette option est facultative si vous utilisez des variables d'environnement pour définir ces propriétés. Voir aussi Utilisation de l'environnement pour les propriétés de configuration. |