Cet article décrit les manipulations à faire pour installer le produit Sailpoint IIQ 8.x, avec une base MySQL, et passer un patch.
Positionner le timezone :
timedatectl set-timezone Europe/Paris
Vérifier que le serveur tomcat fonctionne et qu'on peut y accéder via le port 8080 et le port 80/443 avec le proxy.
Dans la configuration de la base de données (fichier iiq.properties) on peut préciser la time zone :
dataSource.url=jdbc:mysql://localhost/identityiq?useServerPrepStmts=true&tinyInt1isBit=true&useUnicode=true&characterEncoding=utf8&useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
On peut aussi fixer la configuration MySQL. Ajouter dans le fichier /etc/my.cnd.d/mysql-server.cnf :
default-time-zone = "+00:00"
Récupérer l'archive identityiq-8.x.zip, et l'extraire dans un répertoire temporaire.
Créer ensuite le répertoire ${TOMCAT_HOME}/webapps/identityiq Extraire le fichier identityiq.war
mkdir ${TOMCAT_HOME}/webapps/identityiq
cd ${TOMCAT_HOME}/webapps/identityiq
unzip /path/to/file/identityiq.war
Si on utilise systemctl pour lancer le serveur tomcat (ou plus généralement si on lance le serveur avec un utilisateur autre que root), on va positionner cet utilisateur comme propriétaire.
Par la suite, on appelera IIQ_HOME le répertoire correspondant à ${TOMCAT_HOME}/webapps/identityiq
Il faut modifier les permissions sur ${IIQ_HOME}/WEB-INF/bin/iiq :
chmod a+x ${IIQ_HOME}/WEB-INF/bin/iiq
Aller dans le répertoire ${IIQ_HOME}/WEB-INF/classes/sailpoint/object
Adapter le fichier IdentityExtended.hbm.xml pour y ajouter les attributs spécifiques.
Exemple :
<!-- Custom Properties -->
<property name="costCenter" type="string" length="150" access="sailpoint.persistence.ExtendedPropertyAccessor"/>
<property name="company" type="string" length="100" access="sailpoint.persistence.ExtendedPropertyAccessor"/>
On peut ensuite générer le fichier SQL de création de tables.
${IIQ_HOME}/WEB-INF/bin/iiq schema
Les nouveaux fichiers se trouvent dans le répertoire ${IIQ_HOME}/WEB-INF/database
On peut alors lancer le script de création des tables, par exemple :
mysql < ${IIQ_HOME}/WEB-INF/database/create_identityiq_tables.mysql
Note dans le cas de MySQL, il faut modifier le fichier pour adapter la syntaxe (version 8 ou 5.7).
-- version 8
-- CREATE USER IF NOT EXISTS 'identityiq'@'%' IDENTIFIED WITH mysql_native_password BY 'identityiq';
-- version 5.7
CREATE USER IF NOT EXISTS 'identityiq'@'%' IDENTIFIED BY 'identityiq';
La même chose est à faire pour identityiqPlugin
Il faut ensuite modifier le fichier ${IIQ_HOME}/WEB-INF/classes/iiq.properties pour adapter les paramètres de la base de données qui sera utilisée : URL, login et mot de passe.
Note : si on veut éviter de mettre les mots de passe en clair, on peut utiliser la console pour chiffrer le mot de passe.
Par exemple :
${IIQ_HOME}/WEB-INF/bin/iiq encrypt mon_mot_de_passe
bin/iiq encrypt identityiq
1:ACP:gBWS90WaKDrM2yZxyR529P5GUwU+rTn/XhlS67VAzZg=
On peut ensuite initialiser les données :
cd ${IIQ_HOME}
WEB-INF/bin/iiq console
import init.xml
import init-lcm.xml
exit
Le fichier ${IIQ_HOME}/WEB-INF/classes/log4j2.properties peut être modifié et adapté, notamment pour isoler les logs sailpoint.
appender.file.type=File
appender.file.name=file
appender.file.fileName=/opt/tomcat9/logs/sailpoint.log
appender.file.layout.type=PatternLayout
appender.file.layout.pattern=%d{ISO8601} %5p %t %c{4}:%L - %m%n
rootLogger.appenderRef.file.ref=file
Si on veut également utiliser dans les scripts un logger spécial, on peut le déclarer dans le fichier :
# --- Custom
logger.custom.name=custom
logger.custom.level=debug
De ce fait, on peut utiliser un Logger spécifique, dont le niveau sera géré de manière différente du standard.
import org.apache.log4j.Logger;
import org.apache.log4j.Level;
// Declare a logger class "custom" to isolate these messages
Logger log = Logger.getLogger("custom.Rule.ImportRole");
log.setLevel(Level.DEBUG); // TODO: Turn this off or remove this line when checking in.
log.info("[import IT Role] --- Start");
A ce stade on peut démarrer le serveur tomcat, et se connecter avec le compte spadmin (mot de passe par défaut = admin).
cd ${IIQ_HOME}
unzip /path/to/identityiq-8.3p2.jar
cd WEB-INF/database
mysql < upgrade_identityiq_tables-8.3p2.mysql
cd ..
bin/iiq patch 8.3p2
Afin de distinguer les environnements, j'aime bien avoir une couleur différente selon les plates-formes.
On peut faire cela de manière assez simple, en modifiant le fichier ${IIQ_HOME}/css/iiq-custom.css, et en ajoutant :
body > header, #menuMainDiv > header {
background-color: green;
}
Si on a un AD à provisionner, il faut installer un agent IQ Service sur une des machines du domaine.
Le module "Active Directory module for Windows PowerShell" doit être activé comme suit :
Une fois que l'archive IQService.zip est extraite dans un répertoire, on peut l'installer avec la commande :
IQService.exe -i -o 5051
Ceci permet d'installer le service, sur le port TLS 5051.
ON peut ensuite préciser le niveau et le fichier de logs
IQService.exe -l 2 -f C:\IQService\logs\IQTrace.log
Et on démarre le service :
IQService -s
Le service doit être lancé avec un compte du domaine, qui dispose de privilège Account Operator ou Domain Admin.
Il faut également renseigner un compte côté IQService, en utilisant le nom Netbios du domaine :
IQService.exe -a 'domaine\compte'
Par exemple
IQService.exe -a 'adforest-qualif\iqservice'
Côté Sailpoint il ne faut pas préciser le domaine. Dans le champ "IQ Service User" on met uniquement le nom du compte (exemple : iqservice)
De même le certificat du serveur doit être intégré dans la JVM.
Sur une archi RHEL 8.6, il faut déposer les certificats dans le répertoire /etc/pki/ca-trust/source/anchors/ puis utiliser la commande update-ca-trust :
update-ca-trust extract
On relance ensuite Tomcat
Note : attention au hostname des serveurs et des certificats (notamment les serveurs dans le domaine Office).