Optimización del programa de utilidad MigrateEncryptedInfo

MigrateEncryptedInfo es un programa de utilidad que se utiliza para volver a cifrar datos confidenciales que se almacena en la base de datos. Ejecuta dos tareas dentro de este programa de utilidad y cada una de las tareas se controla mediante un archivo de configuración distinto.

El script MigrateEncryptedInfo se encuentra en el directorio siguiente:
  • Linuxutilities_root/bin/MigrateEncryptedInfo.sh

Cuando se abre el script MigrateEncryptedInfo, puede ver que hay dos llamadas a MKChangeApp. Cada una de estas llamadas representa una tarea distinta que ejecuta el script.

Tarea una

La primera tarea impone que los datos sensibles de la base de datos sean coherentes con el distintivo PDIEncrypt especificado en el archivo de configuración de la instancia. Si esta tarea detecta que los datos y el distintivo PDIEncrypt no están sincronizados, los migra a la clave de comerciante actual. De forma predeterminada, esta tarea está comentada.

Si el valor del distintivo PDIEncrypt cambia, significa que desea cifrar los datos de texto sin formato o descifrar los datos a texto sin formato. Puede habilitar manualmente esta parte en el script MigrateEncryptedInfo. El valor predeterminado del distintivo PDIEncrypt es on.

Por ejemplo, si los datos de la base de datos son en texto sin formato, pero desea que estén cifrados, cambie el valor de PDIEncrypt en el archivo de configuración de instancia por "on". A continuación, habilite esta parte en el script MigrateEncrytedInfo y ejecute esta tarea. Una vez que el distintivo PDIEncrypt está habilitado, también se cifran los datos subsiguientes entrados. De forma alternativa, si los datos de la base de datos están cifrados, pero desea que estén en texto sin formato, cambie el valor de PDIEncrypt en el archivo de configuración de instancia por "off". A continuación, habilite esta parte en el script MigrateEncryptedInfo y ejecute esta tarea para descifrar los datos existentes. Los datos posteriores que se entran en la base de datos también se descifran.

LinuxDeben habilitarse las secciones siguientes del 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

Esta tarea se controla mediante el siguiente archivo de configuración:
  • Linuxutilities_root/bin/CCInfoDBUpdate.DBTYPE.txt
Este archivo de configuración contiene una acción, denominada SyncCreditCardsEncryption, que proporciona un nombre de clase de implementación para procesar los datos y las tablas de base de datos para las que ejecuta esta acción. En el archivo de configuración, puede ver que, de forma predeterminada, comprueba las siguientes tablas para ver si el cifrado o descifrado es necesario:

Tarea dos

La segunda tarea que se realiza mediante el programa de utilidad MigrateEncryptedInfo vuelve a cifrar datos confidenciales de la base de datos con la nueva clave de comerciante. Esta tarea se controla mediante el siguiente archivo de configuración:
  • Linux utilities_root/schema/DBTYPE/migration/DBUpdate.txt
Cuando examina este archivo de configuración, contiene cinco acciones:
ReEncryptUserPasswords
El primer elemento de acción, ReEncryptUserPasswords, migra contraseñas de usuario (almacenadas en la tabla USERREG) al nuevo esquema de contraseña (hash unidireccional) y a la nueva clave de comerciante. Debido a las mejoras en seguridad, si migra la base de datos de una versión de HCL Commerceanterior a la versión 5.4, es obligatorio ejecutar la acción ReEncryptUserPasswords para cifrar las contraseñas de usuario al nuevo formato. Esta acción también migra contraseñas de usuario a una nueva clave de comerciante.
ReEncryptUserPasswordHistory
El siguiente elemento de acción, ReEncryptUserPasswordHistory, migra contraseñas de usuario antiguas (almacenadas en la tabla USERPWDHST) a la nueva clave de comerciante. Si ha configurado una política de contraseñas para almacenar contraseñas anteriores, es necesario ejecutar esta acción.
ReEncryptCreditCards
El tercer elemento en la configuración, ReEncryptCreditCards, vuelve a cifrar datos de tarjeta de crédito utilizando una nueva clave de comerciante. Esta acción es necesaria si el distintivo PDIEncrypt tiene el valor "on" en el archivo de configuración de la instancia y es necesario volver a cifrar los datos de tarjeta de crédito con la nueva clave. Los datos de las siguientes tablas se procesan como parte de esta acción:
ReEncryptGiftCenterUserPasswords
Migra las contraseñas de usuario del centro de regalos (almacenadas en la tabla GRUSERAUTH) a la nueva clave de comerciante. Si no está utilizando el registro de regalos, no es necesario que ejecute esta acción.
ReEncryptConnectorAttributes
Los atributos siguientes de la tabla CSEDITATT se vuelven a cifrar:
  • password
  • AffiliateSiteId
  • SiteId
  • sterlingPassword
  • visualModelerPassword
Los atributos siguientes de la tabla ISEDITATT se vuelven a cifrar:
  • password
  • basicAuthenticationPassword

Minimizar el tiempo de ejecución del programa de utilidad MigrateEncryptedInfo eliminando acciones innecesarias

El programa de utilidad MigrateEncryptedInfo lee primero los datos de la base de datos antes de comprobar si el cifrado debe realizarse de nuevo en los datos recuperados para cada acción. Si conoce con antelación determinadas tareas, no las aplique a la configuración del sitio, puede personalizar el script de forma que estas tareas no se realicen. La personalización del script ahorra algo de tiempo a la hora de leer y procesar los datos. Esto es especialmente valioso si tiene un conjunto de datos de gran tamaño.

En las siguientes secciones se describen situaciones donde pueden eliminarse del script del programa de utilidad las acciones no necesarias.
Nota: Algunas de estas situaciones no son necesariamente recomendables (por ejemplo, recomendamos utilizar el historial de contraseñas), pero se incluyen para tener información completa.
LDAP está en uso como depósito de usuarios

Si el sitio utiliza LDAP como depósito de usuarios, las contraseñas actual y anterior del usuario no se conservan en las tablas USERREG y USERPWDHST. Esto significa que las acciones que vuelven a cifrar las contraseñas anterior y actual del usuario ya no son necesarias.

En esta situación, los siguientes elementos de acción puede eliminarse del archivo de configuración de la segunda tarea, 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=
Las contraseñas anteriores (el historial de contraseñas) no se almacenan en la base de datos

Si no configura la política de contraseñas para almacenar las contraseñas anteriores del usuario, puede inhabilitar la acción ReEncryptUserPasswordHistory que procesa los datos de la tabla USERPWDHST.

Elimine la siguiente acción del archivo de configuración 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=
El distintivo PDIEncrypt está establecido en "off"
S los datos de tarjeta de crédito no están cifrados o no están almacenados en la base de datos de HCL Commerce, el elemento de acción resaltado que vuelve a cifrar los datos en las tablas PATTRVALUE, ORDPAYINFO y ORDPAYMTHD se puede eliminar del archivo de configuración 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=