Cet article décrit les manipulations à faire pour installer le produit Sailpoint IIQ 8.x, avec une base MySQL, et passer un patch.

 Pré-requis

  • Java JDK
  • Apache Tomcat 9
  • MySQL
  • Proxy http (apache ou nginx)
  • MailHog pour récupérer les mails (permet de tester les notification sans passer par un vrai serveur SMTP)

 Paramétrage serveur

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"

Ports utilisés sur le serveur

  • 22 : ss pour les accès serveurs
  • 443 : proxy https
  • 8080 : serveur tomcat
  • 8025 : serveur MailHog / interface Web
  • 1025 : serveur MailHog / port smtp

Récupération des sources

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

Adaptation du schéma de données

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

Paramétrage de la base de données

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=

Initialisation des données

On peut ensuite initialiser les données :

cd ${IIQ_HOME}
WEB-INF/bin/iiq console
import init.xml
import init-lcm.xml
exit

Log File

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).

 Installation du patch 8.3-p2

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

Customisation de l'interface

Changement des couleurs du bandeau

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;
}

Installation et paramétrage IQ Service

Si on a un AD à provisionner, il faut installer un agent IQ Service sur une des machines du domaine.

Prérequis

Le module "Active Directory module for Windows PowerShell" doit être activé comme suit :

  1. Using Server Manager click Add features.
  2. Under Remote Server Administration Tools, select Role Administration Tools.
  3. Select Active Directory module for Windows PowerShell option under AD DS and AD LDS Tools.

Installation du service

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

 Paramétrage Utilisateur IQ Service

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)

Intégration des certificats des serveurs Windows

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).

Previous Post