Changer le mot de passe d'amadmin
Sur cette page
amadmin est le super-administrateur de TOSIAM. Son mot de passe est choisi à l’installation (ADMIN_PWD). Ce compte n’est rangé dans aucun magasin d’identités : il est enregistré dans le Config Store, partagé par tous les serveurs du déploiement. Un changement de mot de passe vaut donc pour tous les serveurs à la fois.
Cette page décrit le changement avec ssoadm, la mise à jour des fichiers et des secrets qui contiennent l’ancien mot de passe, puis la réinitialisation par LDAP quand le mot de passe est perdu.
Avant de commencer#
Repérez d’abord tout ce qui se connecte en tant qu’amadmin. Ces fichiers et ces secrets gardent l’ancien mot de passe tant que vous ne les mettez pas à jour :
| Où | Rôle |
|---|---|
~/tosiam/.pwd.txt (installation pas à pas), tools/admin/.pwd.txt (QuickStart) | Fichier de mot de passe de ssoadm |
Clé amadmin-password du secret (image Docker, charts Helm) | Configuration d’un nouveau serveur, commande ssoadm de l’image, import de la configuration déclarative, job de nettoyage des serveurs retirés |
Variables et fichiers des scripts, pipelines de CI, tosiam-config | Appels de l’API et de ssoadm |
Ne confondez pas amadmin avec les comptes de l’annuaire :
- le compte qui lie TOSIAM au Config Store (
DS_DIRMGRDN,uid=tosiam,ou=system,…) a son propre mot de passe ; ampassword --adminchange le mot de passe de ce compte de l’annuaire, pas celui d’amadmin.
Changer le mot de passe avec ssoadm#
La commande set-identity-attrs remplace l’attribut userpassword d’amadmin. Elle s’authentifie avec l’ancien mot de passe. Les exemples suivent les chemins de l’installation pas à pas.
-
Écrivez le nouveau mot de passe dans un fichier de données, lisible par vous seul. Le fichier évite de passer le mot de passe en argument : il resterait visible dans la liste des processus et dans l’historique du shell, et ses caractères spéciaux devraient être échappés.
umask 077 read -rs -p "Nouveau mot de passe : " NEW_PWD; echo printf 'userpassword=%s\n' "$NEW_PWD" > /tmp/amadmin.properties unset NEW_PWD -
Lancez la commande.
--password-filedésigne le fichier qui contient encore l’ancien mot de passe :~/tosiam/admin/tosiam/bin/ssoadm set-identity-attrs \ --realm / --idtype User --idname amadmin \ --datafile /tmp/amadmin.properties \ --adminid amadmin --password-file ~/tosiam/.pwd.txtAttribute values of identity, amadmin of type, User in realm, / was modified. -
Mettez à jour le fichier de mot de passe de
ssoadmavec la même valeur, puis supprimez le fichier de données.ssoadmrefuse un fichier de mot de passe qui n’a pas les droits400:chmod 600 ~/tosiam/.pwd.txt sed -n 's/^userpassword=//p' /tmp/amadmin.properties > ~/tosiam/.pwd.txt chmod 400 ~/tosiam/.pwd.txt rm /tmp/amadmin.properties -
Vérifiez la connexion. Le nouveau mot de passe donne un jeton, l’ancien est refusé (
401) :curl -s -X POST "https://tosiam.example.fr/tosiam/json/authenticate" \ -H "Content-Type: application/json" \ -H "X-Requested-With: XMLHttpRequest" \ -H "Accept-API-Version: resource=2.0, protocol=1.0" \ -H "X-OpenAM-Username: amadmin" \ -H "X-OpenAM-Password: $(cat ~/tosiam/.pwd.txt)"{"tokenId":"EION-OGXUphdCtPa0UUXQtcKDRo.*AAJTSQACMDIAAlNLABx…","successUrl":"/console/"}
Le changement est immédiat, sans redémarrage, et il est conservé au redémarrage du serveur. Les sessions déjà ouvertes par amadmin restent valides jusqu’à leur expiration.
Mettez ensuite à jour les autres fichiers et secrets repérés avant de commencer.
Image Docker et Kubernetes#
Dans l’image Docker de TOSIAM, la commande ssoadm lit le mot de passe dans le secret monté /run/secrets/tosiam/amadmin-password. Respectez l’ordre suivant :
-
Préparez le fichier de données comme à l’étape 1 ci-dessus, puis changez le mot de passe depuis un pod, pendant que le secret contient encore l’ancien mot de passe. La commande
ssoadmde l’image ajoute elle-même--adminidet--password-file:kubectl exec -i tosiam-0 -- sh -c 'umask 077; cat > /tmp/amadmin.properties ssoadm set-identity-attrs --realm / --idtype User --idname amadmin \ --datafile /tmp/amadmin.properties rm -f /tmp/amadmin.properties' < /tmp/amadmin.properties -
Mettez le secret à jour avec le nouveau mot de passe. Avec le chart
tosiam-stack, c’est le secret désigné parsecrets.name(par défauttosiam-stack-secrets).jqconstruit le patch, ce qui évite d’échapper les caractères spéciaux :kubectl patch secret tosiam-stack-secrets --type merge \ -p "$(sed -n 's/^userpassword=//p' /tmp/amadmin.properties \ | jq -Rc '{stringData: {"amadmin-password": .}}')" rm /tmp/amadmin.propertiesUne mise à jour du chart (
helm upgrade) conserve les valeurs du secret existant.
Plusieurs serveurs#
Le mot de passe est enregistré une seule fois, dans le Config Store. Chaque serveur reçoit la modification par sa recherche persistante sur le Config Store et l’applique sans redémarrage. Il suffit donc de lancer la commande sur un seul serveur. En revanche, les fichiers de mot de passe de ssoadm sont locaux : mettez-les à jour sur chaque serveur.
Mot de passe perdu : réinitialiser par LDAP#
Sans l’ancien mot de passe, ssoadm ne peut pas s’authentifier. On écrit alors le mot de passe directement dans le Config Store. Il faut deux accès :
- un compte d’écriture sur le Config Store, par exemple
cn=Directory Manager; - un shell sur un serveur TOSIAM, pour l’outil
ampassword. Cet outil chiffre une valeur avec la clé de chiffrement du déploiement (AM_ENC_KEY), qu’il trouve dans la configuration de démarrage de l’instance.
Le Config Store ne contient pas le mot de passe en clair. Il en garde l’empreinte SHA-1 en Base64, chiffrée avec la clé du déploiement. Elle est rangée dans l’attribut sunKeyValue de l’entrée ou=amAdmin, sous le service sunIdentityRepositoryService.
-
Sur le serveur TOSIAM, calculez l’empreinte du nouveau mot de passe, puis chiffrez-la :
umask 077 read -rs -p "Nouveau mot de passe : " NEW_PWD; echo printf '%s' "$NEW_PWD" | openssl dgst -sha1 -binary | base64 > /tmp/amadmin.hash unset NEW_PWD chmod 400 /tmp/amadmin.hash ~/tosiam/admin/tosiam/bin/ampassword --encrypt /tmp/amadmin.hash rm -f /tmp/amadmin.hashAgMDAAAbWNZZ0tQRsiVR7lXJj/D0haQVGaaCy3kI0hmhAV/vfV2CGFQgzqtle/8XwPGXH6SiN5HcFcax2F5P8sGHwQeEe0g= -
Lisez l’entrée d’
amadmindans le Config Store. Remplacezdc=example,dc=frpar leROOT_SUFFIXde l’installation :ldapsearch -h config.example.fr -p 1389 -D "cn=Directory Manager" -W \ -b "ou=amAdmin,ou=users,ou=default,ou=GlobalConfig,ou=1.0,ou=sunIdentityRepositoryService,ou=services,dc=example,dc=fr" \ -s base "(objectClass=*)" sunKeyValuedn: ou=amAdmin,ou=users,ou=default,ou=GlobalConfig,ou=1.0,ou=sunIdentityReposito ryService,ou=services,dc=example,dc=fr sunKeyValue: inetUserStatus=Active sunKeyValue: roles= sunKeyValue: userPassword=AgMDAAAbWAFnXLm0GsbqfpuEJZVggKVvSnXC+wmZt2QOCJX11iWKrh AddTPeU/Crp1ZQvQ2lMkrg0NS8mD2BoRhJe8S0LuA= -
Remplacez l’attribut. Le
replaceréécrit toutes les valeurs desunKeyValue: recopiez les autres valeurs lues à l’étape précédente, et mettez la valeur chiffrée de l’étape 1 aprèsuserPassword=:ldapmodify -h config.example.fr -p 1389 -D "cn=Directory Manager" -W <<'LDIF' dn: ou=amAdmin,ou=users,ou=default,ou=GlobalConfig,ou=1.0,ou=sunIdentityRepositoryService,ou=services,dc=example,dc=fr changetype: modify replace: sunKeyValue sunKeyValue: inetUserStatus=Active sunKeyValue: roles= sunKeyValue: userPassword=AgMDAAAbWNZZ0tQRsiVR7lXJj/D0haQVGaaCy3kI0hmhAV/vfV2CGFQgzqtle/8XwPGXH6SiN5HcFcax2F5P8sGHwQeEe0g= LDIF -
Vérifiez la connexion comme à l’étape 4 du changement avec ssoadm. Les serveurs reçoivent la modification par la recherche persistante, sans redémarrage. Mettez enfin à jour les fichiers et les secrets qui contiennent l’ancien mot de passe.
Pour aller plus loin#
- Démarrer avec ssoadm, pour l’authentification par fichier de mot de passe.
- Installer TOSIAM pas à pas, pour les variables
ADMIN_PWDetROOT_SUFFIX. - Configuration déclarative à l’import, pour l’usage du secret
amadmin-password.
Mis à jour le