InfrastructureCompte de serviceVérifié le 21 septembre 2026
Lutril a besoin d’un compte de service portant un unique rôle personnalisé au niveau de l’organisation pour inventorier chaque compte de service et chaque clé Google Cloud, indiquer la date de dernière utilisation de chacun et vous permettre de désactiver les comptes dormants. Pas d’empilement de rôles prédéfinis : le rôle personnalisé ci-dessous est la liste complète des permissions, vérifiée en le créant. Lutril ne supprime jamais de compte de service, ne crée, ne renouvelle ni ne supprime jamais de clé, et ne modifie les stratégies IAM que pour ajouter ou retirer les autorisations limitées dans le temps des demandes d’accès approuvées.
Remédiation (facultatif) : iam.serviceAccounts.disable, iam.serviceAccounts.enable. Sans elles, l’inventaire fonctionne et le bouton Désactiver signale une erreur de permission.
Suggestions de rôle par IA (facultatif, Preview) : iam.roles.list. Sert uniquement à appeler l'API Policy Assist de Google avec la description en langage naturel du demandeur ; les suggestions sont toujours filtrées sur les rôles autorisés par le scope précédent.
Accès just-in-time (facultatif) : resourcemanager.projects.setIamPolicy. Sert uniquement à ajouter et retirer une autorisation IAM limitée dans le temps par demande d’accès approuvée.
Accès par secret (facultatif) : secretmanager.secrets.get, secretmanager.secrets.getIamPolicy, secretmanager.secrets.setIamPolicy. Sert à vérifier qu’un secret existe encore et à ajouter puis retirer une autorisation limitée dans le temps sur ce secret. Jamais secretmanager.versions.access.
Les valeurs Last used viennent de Policy Analyzer, qui agrège les authentifications par jour (heure du Pacifique). Google indique que les événements très récents peuvent manquer ; un décalage de plusieurs jours est courant. Google ne suit pas non plus les requêtes authentifiées par clé API liée, par clé HMAC Cloud Storage, ni les API Google hors Cloud (par exemple la délégation domain-wide vers Workspace, utilisée par GAM) : ces comptes peuvent apparaître jamais utilisés alors qu’ils sont actifs. C’est pourquoi Lutril traite l’absence d’authentification observée comme un signal d’alerte, jamais comme une preuve de non-usage.
Étapes de configuration
1
Créez un compte de service pour Lutril dans un projet dédié. Ce projet devient le projet de quota des appels Policy Analyzer, gardez-le donc séparé de vos charges de travail. Ouvrez le compte, allez dans Clés, choisissez Ajouter une clé, puis Créer une clé au format JSON. Le fichier se télécharge une seule fois et ne pourra pas être téléchargé à nouveau ; vous le collerez dans Lutril à l’étape 5.
Activez quatre API dans ce projet uniquement : Cloud Asset, IAM, Cloud Resource Manager et Policy Analyzer. Lutril attribue chaque appel au projet du compte de service, Policy Analyzer n’a donc jamais besoin d’être activé dans les projets analysés.
Remplacez <LUTRIL_PROJECT_ID> par l’ID du projet dans lequel vous avez créé le compte de service.
3
Créez le rôle personnalisé au niveau de l’organisation depuis Cloud Shell. ORG_ID est l’identifiant numérique de l’organisation, visible dans le sélecteur d’organisation ou via gcloud organizations list. Vous préférez la console ? Ouvrez IAM et administration, puis Rôles avec l’organisation sélectionnée, cliquez sur Créer un rôle et ajoutez les mêmes permissions.
Le rôle est en lecture seule, à l’exception des deux dernières permissions. Retirez iam.serviceAccounts.disable et iam.serviceAccounts.enable si vous souhaitez que Lutril observe sans jamais remédier.Ouvrir les rôles
4
Attribuez le rôle au compte de service Lutril sur l’organisation. Une seule attribution au niveau de l’organisation couvre tous les dossiers et projets, y compris ceux créés après aujourd’hui.
<LUTRIL_SA_EMAIL> est l’adresse du compte créé à l’étape 1, se terminant par .iam.gserviceaccount.com.
5
Facultatif, pour l’accès just-in-time. Quand une demande d’accès à un projet est approuvée, Lutril accorde à la personne un rôle IAM limité dans le temps sur ce projet (une condition IAM sur request.time) et le retire à l’échéance. Cela demande une permission d’écriture sur le même rôle.
Shell
gcloud iam roles update lutrilNhiGovernance \
--organization=<ORG_ID> \
--add-permissions=resourcemanager.projects.setIamPolicy
Attribuée au niveau de l’organisation, setIamPolicy permet au compte de service Lutril d’accorder n’importe quel rôle sur n’importe quel projet. Mitigations : n’attribuez le rôle que sur le dossier qui contient les projets demandables, ou ajoutez une politique de refus IAM qui bloque resourcemanager.projects.setIamPolicy pour roles/owner, roles/editor, roles/iam.securityAdmin et roles/resourcemanager.projectIamAdmin quand le principal est le compte de service Lutril. Lutril refuse lui-même d’accorder Owner, Editor ou Viewer (ils ne peuvent pas porter de condition temporelle).
6
Facultatif, pour l’accès par secret. Un demandeur peut restreindre une demande sur un projet à un seul secret Secret Manager : Lutril liste les secrets de chaque projet (via Cloud Asset, déjà accordé ci-dessus), montre qui peut lire chacun sur la page du projet et, à l’approbation, écrit l’autorisation limitée dans le temps sur ce secret uniquement, avec le rôle Secret Manager Secret Accessor. Cela demande trois permissions de plus sur le même rôle.
Shell
gcloud iam roles update lutrilNhiGovernance \
--organization=<ORG_ID> \
--add-permissions=secretmanager.secrets.get,secretmanager.secrets.getIamPolicy,secretmanager.secrets.setIamPolicy
Même réserve qu’à l’étape 5 : attribuée au niveau de l’organisation, secrets.setIamPolicy permet au compte de service Lutril d’accorder Secret Accessor sur n’importe quel secret. Attribuez le rôle sur le dossier qui contient les projets demandables si c’est trop large. Lutril ne demande jamais secretmanager.versions.access : il lit et écrit qui peut accéder à un secret, jamais le secret lui-même. Les lectures ne sont pas affichées non plus : les journaux d’audit d’accès aux données de Secret Manager sont désactivés par défaut et Lutril ne les ingère pas. Les secrets régionaux sont signalés comme ignorés.
7
Facultatif, pour les suggestions de rôle par IA (Preview). Quand un demandeur ne sait pas quel rôle choisir, Lutril peut appeler l'API Policy Assist de Google pour qu'il décrive en langage naturel ce dont il a besoin et reçoive une suggestion, tirée uniquement des rôles déjà autorisés à l'étape 5. Cela demande d'activer une API Preview et une permission de lecture de plus sur le même rôle.
Preview : soumise aux Pre-GA Offerings Terms de Google, elle peut donc changer ou disparaître sans préavis. Lutril se dégrade silencieusement si elle devient indisponible ; la liste de rôles habituelle continue de fonctionner. Une suggestion ne peut jamais accorder un rôle en dehors de la liste autorisée à l'étape 5, quoi qu'elle renvoie.
8
Dans Lutril, ouvrez Paramètres, puis Intégrations, puis Google Cloud. Collez le JSON du compte de service. Renseignez l’Organization ID pour une analyse de toute l’organisation (recommandé) ou un Project ID pour analyser un seul projet. Conservez le seuil de clé obsolète à 90 jours sauf si votre politique en dispose autrement. Activez la lentille d’impersonation pour lister qui peut usurper chaque compte de service ; elle coûte une lecture IAM supplémentaire par compte.
9
Ouvrez Identités non humaines et cliquez sur Actualiser. La synchronisation s’exécute en arrière-plan et prend quelques minutes sur les grandes organisations ; la page signale toute API ou permission manquante par un avertissement. Une dernière utilisation Inconnue partout signifie que Policy Analyzer n’est pas activé dans le projet Lutril ou que ses permissions manquent. Les projets marqués Non synchronisé n’ont pas les permissions resourcemanager. Une désactivation qui échoue avec une erreur de permission signifie que le rôle n’a pas iam.serviceAccounts.disable. Les limites de débit (429) sont réessayées automatiquement et les données déjà connues sont conservées.