Optimisation de l'utilitaire MigrateEncryptedInfo

MigrateEncryptedInfo est un utilitaire permettant le rechiffrement des données sensibles stockées dans la base de données. Il exécute deux tâches et chacune d'elles est contrôlée par un fichier de configuration distinct.

Le script MigrateEncryptedInfo se trouve dans le répertoire suivant :
  • Linuxutilities_root/bin/MigrateEncryptedInfo.sh

Lorsque vous ouvrez le script MigrateEncryptedInfo, vous pouvez voir deux appels vers MKChangeApp. Chacun de ces appels représente une tâche distincte, effectuée par le script.

Tâche un

La première tâche impose aux données sensibles de la base d'être cohérentes avec l'indicateur PDIEncrypt spécifié dans le fichier de configuration de l'instance. Si cette tâche détecte que les données et l'indicateur PDIEncrypt sont désynchronisés, elle fait migrer les données vers la clé de commerçant en cours.Par défaut, cette tâche est mise en commentaire.

Si la valeur de l'indicateur PDIEncrypt est modifié, cela signifie que vous souhaitez chiffrer les données à partir de texte en clair ou déchiffrer les données pour les convertir en texte en clair. Vous pouvez activer manuellement cette section dans le script MigrateEncryptedInfo. La valeur par défaut du paramètre PDIEncrypt est on.

Par exemple, si les données de la base sont en texte en clair et que vous souhaitez les chiffrer, remplacez la valeur de PDIEncrypt dans le fichier de configuration de l'instance par "on". Ensuite, activez cette partie dans le script MigrateEncrytedInfo et exécutez cette tâche. Une fois l'indicateur PDIEncrypt activé, toutes les données suivantes entrées dans la base seront également chiffrées. De même, si les données de la base sont chiffrées et que vous souhaitez les afficher en texte en clair, remplacez la valeur de PDIEncrypt dans le fichier de configuration de l'instance par "off". Ensuite, activez cette partie dans le script MigrateEncryptedInfo, et exécutez cette tâche pour déchiffrer les données existantes. toutes les données suivantes entrées dans la base seront également déchiffrées.

LinuxVous devez activer les sections suivantes du script MigrateEncryptedInfo :

# echo "#######################" >> $WCLOGDIR/MigrateEncryptedInfoError.log
# echo "### CCInfoMigration ###" >> $WCLOGDIR/MigrateEncryptedInfoError.log
# echo "#######################" >> $WCLOGDIR/MigrateEncryptedInfoError.log
# cp -f CCInfoDBUpdate.$DBTYPEEXT.txt $WCTEMPDIR/DBUpdate.txt
# cd $WCTEMPDIR
# ${JAVA_EXE?} -Xmx512m -DnewKeyNeeded=true -DInstanceXMLFileAccess.debug=true -DReencryptionRequestDispatcher.debug=true -DReencryptionTask.debug=true -Dwclogdir=$WCLOGDIR -cp $CP com.ibm.commerce.dbupdatetool.MKChangeApp "action1_2" $WCINST $param3 $param4 $param5 $param6 $param7 $interactive_output > $WCLOGDIR/CCInfoMigration.log 2>> $WCLOGDIR/MigrateEncryptedInfoError.log
# if [ "$?" = "1" ]
# then
#     echo "Migration failed. Please check $WCLOGDIR/CCInfoMigration.log and $WCLOGDIR/MigrateEncryptedInfoError.log for details."
#     rm -f DBUpdate.txt
#    cd $WCS_HOME/bin
#     exit 1
# fi
# rm -f DBUpdate.txt
# cd $WCS_HOME/bin

Cette tâche est contrôlée par le fichier de configuration suivant :
  • Linuxutilities_root/bin/CCInfoDBUpdate.DBTYPE.txt
Ce fichier de configuration contient une action appelée SyncCreditCardsEncryption qui fournit un nom de classe d'implémentation pour traiter les données et les tables de base de données sur lesquelles il exécute cette action. Dans le fichier de configuration, vous pouvez constater que, par défaut, les tables suivantes sont examinées afin de déterminer si le chiffrement ou le déchiffrement est requis :

Tâche deux

La seconde tâche effectuée par l'utilitaire MigrateEncryptedInfo rechiffre les données sensibles dans la base avec la nouvelle clé de commerçant. Cette tâche est contrôlée par le fichier de configuration suivant :
  • Linux utilities_root/schema/DBTYPE/migration/DBUpdate.txt
Ce fichier de configuration contient les cinq actions suivantes :
ReEncryptUserPasswords
La première action, ReEncryptUserPasswords, migre des mots de passe utilisateur (stockés dans la table USERREG) vers le nouveau schéma de mot de passe (chiffrement à sens unique) et vers la nouvelle clé de commerçant. En raison des améliorations de la sécurité, si vous faites migrer la base de données d'une version de HCL Commerce antérieure à la version 5.4, l'exécution de l'action ReEncryptUserPasswords est obligatoire pour chiffrer les mots de passe utilisateur dans le nouveau format. Cette action effectue également la migration des mots de passe utilisateur vers une nouvelle clé de commerçant.
ReEncryptUserPasswordHistory
L'action suivante, ReEncryptUserPasswordHistory, fait migrer les anciens mots de passe utilisateur (stockés dans la table USERPWDHST) vers la nouvelle clé de commerçant. Si vous avez configuré une stratégie de mot de passe pour stocker les mots de passe précédents, vous devez exécuter cette action.
ReEncryptCreditCards
La troisième action de la configuration, ReEncryptCreditCards, rechiffre les données de carte de crédit à l'aide d'une nouvelle clé de commerçant. Cette action est requise si l'indicateur PDIEncrypt est activé ("on") dans le fichier de configuration de l'instance et si les données de carte de crédit doivent être rechiffrées avec la nouvelle clé. Les données des tables suivantes sont traitées dans le cadre de cette action :
ReEncryptGiftCenterUserPasswords
Migre les mots de passe utilisateur du centre de gestion des listes de cadeaux (stocké dans la table GRUSERAUTH) vers la nouvelle clé de commerçant. Si vous n'utilisez pas la liste de cadeaux, il n'est pas nécessaire d'exécuter cette action.
ReEncryptConnectorAttributes
Les attributs suivants dans la table CSEDITATT sont une nouvelle fois chiffrés :
  • password
  • AffiliateSiteId
  • SiteId
  • sterlingPassword
  • visualModelerPassword
Les attributs suivants dans la table ISEDITATT sont une nouvelle fois chiffrés :
  • password
  • basicAuthenticationPassword

Réduction de l'exécution de l'utilitaire MigrateEncryptedInfo en éliminant les actions inutiles

L'utilitaire MigrateEncryptedInfo lit préalablement les données de la base avant de vérifier si le rechiffrement doit être effectué sur les données extraites pour chaque action. Si vous anticipez que certaines tâches ne s'appliquent pas à votre configuration de site, vous pouvez personnaliser le script afin de ne pas exécuter ces tâches. Cela permet de réduire le temps de lecture et de traitement des données. Cela est utile, notamment si le fichier est volumineux.

Les sections suivantes décrivent des situations où des actions inutiles peuvent être supprimées du script de l'utilitaire.
Remarque : Certaines situations ne sont pas nécessairement recommandées (par exemple, nous recommandons d'utiliser l'historique des mots de passe), mais elles sont incluses à des fins d'exhaustivité.
LDAP est utilisé en tant que référentiel d'utilisateurs

Si votre site utilise LDAP comme référentiel d'utilisateurs, les mots de passe précédents et en cours de l'utilisateur ne sont pas conservés dans les tables USERREG and USERPWDHST. Cela signifie que les actions pouvant rechiffrer les mots de passe actuel et précédent de l'utilisateur deviennent inutiles.

Dans ce cas, vous pouvez supprimer les actions suivantes du fichier de configuration de la seconde tâche, DBUpdate.txt :
[ActionItem]
ID=ReEncryptUserPasswords
DisplayID=Change Merchant Key
UpdateClassName=com.ibm.commerce.dbupdatetool.OneWayHashEncoder
[DBAccess]
DriverClassName=COM.ibm.db2.jdbc.app.DB2Driver
HostName=
HostJDBCPort=
ConnectionPrefix=jdbc:db2
DatabaseName=
DatabaseUserName=
DatabaseUserPassword=
[DBTable]
TableName=USERREG
TableColumns=USERS_ID,LOGONPASSWORD,SALT,CHALLENGEANSWER
UniqueColumns=USERS_ID
[Parameter]
ID=OldEncryptionKey
DisplayID=OldEncryptionKey
Value=
[Parameter]
ID=NewEncryptionKey
DisplayID=NewEncryptionKey
Value=

[ActionItem]
ID=ReEncryptUserPasswordHistory
DisplayID=Change User Password History
UpdateClassName=com.ibm.commerce.dbupdatetool.DataReEncrypter
[DBAccess]
DriverClassName=COM.ibm.db2.jdbc.app.DB2Driver
HostName=
HostJDBCPort=
ConnectionPrefix=jdbc:db2
DatabaseName=
DatabaseUserName=
DatabaseUserPassword=
[DBTable]
TableName=USERPWDHST
TableColumns=PREVLOGONPASSWORD
UniqueColumns=USERPWDHST_ID
[Parameter]
ID=OldEncryptionKey
DisplayID=OldEncryptionKey
Value=
[Parameter]
ID=NewEncryptionKey
DisplayID=NewEncryptionKey
Value=
Les mots de passe précédents (historique des mots de passe) ne sont pas stockés dans la base de données

Si vous ne configurez pas votre stratégie de mot de passe pour qu'elle stocke les anciens mots de passe de l'utilisateur, vous pouvez désactiver l'action ReEncryptUserPasswordHistory qui traite les données dans la table USERPWDHST.

Supprimez l'action suivante du fichier de configuration DBUpdate.txt :
[ActionItem]
ID=ReEncryptUserPasswordHistory
DisplayID=Change User Password History
UpdateClassName=com.ibm.commerce.dbupdatetool.DataReEncrypter
[DBAccess]
DriverClassName=COM.ibm.db2.jdbc.app.DB2Driver
HostName=
HostJDBCPort=
ConnectionPrefix=jdbc:db2
DatabaseName=
DatabaseUserName=
DatabaseUserPassword=
[DBTable]
TableName=USERPWDHST
TableColumns=PREVLOGONPASSWORD
UniqueColumns=USERPWDHST_ID
[Parameter]
ID=OldEncryptionKey
DisplayID=OldEncryptionKey
Value=
[Parameter]
ID=NewEncryptionKey
DisplayID=NewEncryptionKey
Value=
L'indicateur PDIEncrypt est défini sur off"
Si les données de carte de crédit ne sont pas chiffrées ni stockées dans la base de données HCL Commerce, l'action mise en évidence qui chiffre une nouvelle fois les données dans les tables PATTRVALUE, ORDPAYINFO et ORDPAYMTHD peut être supprimée dans le fichier de configuration DBUpdate.txt.
[ActionItem]
ID=ReEncryptCreditCards
DisplayID=Re encrypt the credit cards
UpdateClassName=com.ibm.commerce.dbupdatetool.CCInfoReencoder
[DBAccess]
DriverClassName=COM.ibm.db2.jdbc.app.DB2Driver
HostName=
HostJDBCPort=
ConnectionPrefix=jdbc:db2
DatabaseName=
DatabaseUserName=
DatabaseUserPassword=
[DBTable]
TableName=PATTRVALUE
TableColumns=STRINGVALUE,ENCRYPTFLAG
UniqueColumns=PATTRVALUE_ID
[DBTable]
TableName=ORDPAYINFO
TableColumns=VALUE
UniqueColumns=ORDPAYINFO_ID
[DBTable]
TableName=ORDPAYMTHD
TableColumns=PAYDEVICE
UniqueColumns=ORDERS_ID,PAYMETHOD,PAYDEVICE,REFUNDNUMBER
[DBTable]
TableName=PPCEXTDATA
TableColumns=DATAVALUE,ENCRYPTED
UniqueColumns=PPCEXTDATA_ID
[DBTable]
TableName=PPCPAYINST
TableColumns=ACCOUNTNUMBER
UniqueColumns=PPCPAYINST_ID
[DBTable]
TableName=MERCHCONFINFO
TableColumns=PROPERTY_VALUE,ENCRYPTED
UniqueColumns=MERCHCONFINFO_ID
[Parameter]
ID=OldEncryptionKey
DisplayID=OldEncryptionKey
Value=
[Parameter]
ID=NewEncryptionKey
DisplayID=NewEncryptionKey
Value=