Aller au contenu
Infrastructure as Code medium

AWX : les premières actions d'administration

11 min de lecture

Logo AWX

Une installation neuve d'AWX contient un seul compte, admin, qui peut tout faire, et dont le mot de passe est resté en clair dans le fichier de configuration de l'installeur. C'est la page à ouvrir immédiatement après l'installation. Elle sécurise ce compte, puis structure la plateforme : une organisation, une équipe, un utilisateur restreint, et la délégation du droit d'exécuter un job sans lui donner accès aux identifiants.

Nous vérifierons cette promesse par l'expérience, pas sur parole : à la fin, l'utilisateur créé verra un job template, zéro identifiant, et se verra refuser toute modification.

  • Sécuriser le compte administrateur livré par l'installeur
  • Comprendre où vivent les droits dans AWX, et pourquoi ils ne sont pas globaux
  • Créer une organisation, une équipe et un utilisateur non administrateur
  • Accorder un rôle d'exécution à une équipe plutôt qu'à une personne
  • Vérifier ce que voit réellement un utilisateur restreint
  • Appliquer les réglages de sécurité à faire dès le premier jour

C'est la notion qui déroute le plus. Dans AWX, un rôle n'est pas attaché à une personne, il est porté par un objet. On ne dit pas « Alice est opératrice », on dit « l'équipe Ops détient le rôle Execute sur ce job template ».

Chaque objet expose ses propres rôles. Sur un job template, ils sont au nombre de trois, et l'API les décrit sans ambiguïté :

Admin Can manage all aspects of the job template
Execute May run the job template
Read May view settings for the job template

La hiérarchie qui structure le tout tient en trois niveaux :

NiveauRôle dans le modèleBon usage
Organisationfrontière d'isolationune par entité qui ne doit rien voir des autres
Équipevecteur de droitsaccorder les rôles ici, jamais aux personnes
Utilisateuridentitérattaché à une ou plusieurs équipes

C'est la toute première chose à faire, avant de créer quoi que ce soit d'autre. Le mot de passe d'admin a été fixé en clair dans le fichier de configuration de l'installeur, il traîne dans l'historique de votre shell, et il ouvre un compte capable de lire tous les identifiants et de lancer n'importe quel playbook sur n'importe quelle machine du parc.

Changez-le depuis l'interface, dans Accès > Utilisateurs (Access > Users), puis admin, onglet Détails (Details), Modifier (Edit).

L'interface suit la langue de votre navigateur. Ce guide donne le libellé français, puis le terme anglais entre parenthèses, qui reste celui de l'API et de la documentation officielle.

Créez ensuite votre propre compte administrateur nominatif, avec le type Administrateur du système (System Administrator), et cessez d'utiliser le compte partagé. Un journal d'activité qui n'affiche que admin n'identifie personne et n'a aucune valeur d'audit. Le compte admin d'origine reste utile comme accès de secours, avec un mot de passe long rangé dans un coffre.

Page d'édition de l'utilisateur admin dans AWX

Une installation neuve contient une organisation nommée Default. Elle convient à un lab, jamais à une plateforme partagée : tout ce qui y vit est visible par tous ceux qui y sont rattachés.

Ouvrez Accès > Organisations (Access > Organizations), puis Ajouter (Add), et créez Infrastructure. L'organisation devient la frontière d'isolation : projets, inventaires, identifiants et job templates lui appartiennent.

Liste des organisations AWX : Default et Infrastructure

Dans Accès > Équipes (Access > Teams), puis Ajouter (Add), créez l'équipe Ops et rattachez-la à l'organisation Infrastructure.

Une équipe ne donne aucun droit par elle-même. Elle est le conteneur auquel vous accorderez des rôles, et dans lequel vous placerez des utilisateurs.

Dans Accès > Utilisateurs (Access > Users), puis Ajouter (Add), créez alice. Le point décisif est le champ Type d'utilisateur (User Type) : laissez-le sur Utilisateur normal (Normal User). Ni Administrateur du système, ni Auditeur système.

Rattachez ensuite alice à l'équipe Ops, depuis l'onglet Utilisateurs (Users) de l'équipe.

À ce stade, alice ne voit rien. Elle peut se connecter, et son interface est vide. C'est le comportement attendu : dans AWX, on ne retire pas des droits, on en accorde.

Création d'un utilisateur AWX avec le type Normal User

Nous allons donner à l'équipe Ops le droit de lancer le job template Collecter les faits, sans lui donner le droit de le modifier, ni d'accéder à la clé SSH qu'il utilise.

Cette étape est la seule qui suppose un job template existant : on ne peut pas accorder un rôle sur un objet qui n'existe pas. Si votre plateforme est encore vide, créez d'abord ce template en suivant Premiers pas avec AWX, puis reprenez ici.

  1. Ouvrez le job template Collecter les faits, onglet Accès (Access), puis Ajouter (Add).

  2. Choisissez Équipes (Teams), sélectionnez Ops.

  3. Cochez le rôle Execute, et uniquement celui-là. Les noms de rôles viennent de l'API et restent en anglais.

  4. Enregistrez (Save).

C'est l'étape que l'on saute, et c'est la seule qui prouve quelque chose. Connectez-vous avec alice, ou interrogez l'API en son nom.

Fenêtre de terminal
TOKEN=$(curl -sk -u "alice:MotDePasseAlice" -X POST \
https://ascender.lab.local/api/v2/tokens/ \
-H "Content-Type: application/json" -d '{}' | jq -r .token)
# Ce qu'elle voit
curl -sk -H "Authorization: Bearer $TOKEN" \
https://ascender.lab.local/api/v2/job_templates/ | jq .count
curl -sk -H "Authorization: Bearer $TOKEN" \
https://ascender.lab.local/api/v2/credentials/ | jq .count
1 # un job template : celui sur lequel son équipe a le rôle Execute
0 # aucun identifiant

Et si elle tente de modifier le template auquel elle a pourtant accès :

Fenêtre de terminal
curl -sk -o /dev/null -w "%{http_code}\n" -X PATCH \
-H "Authorization: Bearer $TOKEN" -H "Content-Type: application/json" \
-d '{"name":"renomme"}' \
https://ascender.lab.local/api/v2/job_templates/23/
403

Alice peut lancer le job. Elle ne peut ni le modifier, ni voir la clé SSH qui l'exécute. C'est toute la promesse d'AWX, et elle tient.

Interface AWX vue par un utilisateur restreint : un seul job template, sans bouton d'édition

Trois paramètres, dans Paramètres (Settings), méritent d'être posés avant les premiers utilisateurs.

La durée de vie des sessions et le nombre de sessions simultanées par utilisateur limitent l'exposition d'un poste laissé ouvert. La valeur par défaut est confortable, donc permissive.

La durée de vie des jetons OAuth2 conditionne combien de temps un jeton volé reste exploitable. Un jeton d'API qui n'expire jamais est un mot de passe permanent.

Enfin, le message d'avertissement à la connexion permet d'afficher une mention légale ou un rappel de la politique interne, souvent exigé en entreprise.

PiègeConséquenceCorrectif
Tout le monde reste System Administratoraucune traçabilité, aucun garde-foucomptes nominatifs, Normal User par défaut
Rôles accordés aux personnesdroits orphelins au départ d'un collaborateuraccorder à des équipes
Tout vit dans l'organisation Defaultles équipes voient le travail des autresune organisation par frontière d'isolation
Rôle Admin accordé pour « débloquer »l'utilisateur peut modifier le playbook exécutéaccorder Execute, et rien de plus
Continuer à se connecter en adminle journal d'activité n'identifie personnecréer son propre compte administrateur
  • Dans AWX, un rôle est porté par un objet, pas par une personne. On accorde Execute sur un job template.
  • La hiérarchie est organisation, équipe, utilisateur : l'organisation isole, l'équipe porte les droits, l'utilisateur les hérite.
  • Accordez les rôles aux équipes, jamais directement aux personnes, sous peine de droits orphelins et inauditables.
  • Un utilisateur neuf ne voit rien : AWX accorde des droits, il n'en retire pas.
  • Le rôle Execute suffit pour lancer un job. Il ne donne accès ni au playbook, ni aux identifiants, et interdit toute modification (HTTP 403).
  • Vérifiez toujours en vous connectant avec le compte restreint : c'est la seule preuve que le modèle de droits fait ce que vous croyez.
  • Abandonnez le compte admin partagé au profit de comptes nominatifs, sinon le journal d'activité ne vaut rien.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn