Quand un outil externe doit entrer dans votre compte AWS, il y a deux chemins. Le connu : créer un utilisateur IAM et lui donner une clé d'accès, c'est-à-dire un mot de passe qui n'expire pas et qui peut finir dans un fichier de configuration, un dépôt ou un e-mail. Le bon : créer un rôle que l'outil assume depuis son propre compte AWS. Il n'y a aucune clé à conserver ni à faire fuiter ; AWS fournit des identifiants temporaires qui expirent d'eux-mêmes, et vous pouvez couper l'accès en une seconde en supprimant le rôle.
Pour cela, l'outil doit le prendre en charge (il vous demandera un « accès par rôle », un « cross-account role » ou l'« ARN du rôle ») et vous fournir deux données : le numéro de son compte AWS et un identifiant externe (external ID). Avec cela, c'est fait en dix minutes.
Avant de commencer : ce que signifie chaque chose
- IAM
- Le service AWS qui gère qui peut faire quoi dans votre compte.
- Compte AWS
- Chaque client d'Amazon a un compte avec un numéro à douze chiffres. L'outil externe a le sien ; vous avez le vôtre.
- Clé d'accès
- Le « nom d'utilisateur et mot de passe » des programmes. Elle n'expire pas, et c'est pour cela que ce guide l'évite.
- Rôle
- Un ensemble de permissions qui n'appartient à personne en particulier : qui y est autorisé l'« assume » et reçoit des identifiants temporaires qui expirent d'eux-mêmes.
- Assumer un rôle
- Demander à AWS ces identifiants temporaires pour agir avec les permissions du rôle pendant un moment.
- Entité de confiance
- Qui a la permission d'assumer le rôle. Ici, le compte AWS de l'outil externe.
- External ID (identifiant externe)
- Un mot de passe supplémentaire qui accompagne la demande d'assumer le rôle, pour que seul cet outil, agissant pour vous, puisse l'utiliser.
- Politique
- La liste des permissions, au format JSON. Le guide vous donne un exemple.
- ARN
- Le nom complet et unique du rôle (arn:aws:iam::...). C'est ce que vous donnez à l'outil.
- CloudTrail
- Le journal de tout ce qui se passe dans votre compte AWS : qui a fait quoi et quand. Il sert à voir ce que fait l'outil.
Pas à pas
Réunissez les données du fournisseur
Notez l'ID de compte de l'outil (douze chiffres) et l'external ID qu'il vous attribue, une chaîne unique pour vous. L'external ID évite ce qu'on appelle le « problème de l'adjoint confus » : qu'un autre client du même outil puisse lui faire utiliser votre rôle. Ne le partagez pas et ne le réutilisez pas.
Créez la politique de permissions minimales
Dans la console IAM, Politiques, Créer une politique, onglet JSON. Collez uniquement les actions dont l'outil a besoin ; un fournisseur sérieux vous donne la liste exacte. Par exemple, pour voir et gérer des machines Lightsail :
{ "Version": "2012-10-17", "Statement": [{ "Effect": "Allow", "Action": [ "lightsail:GetInstances", "lightsail:GetInstance", "lightsail:GetInstanceState", "lightsail:StartInstance", "lightsail:StopInstance", "lightsail:RebootInstance", "lightsail:GetInstanceSnapshots", "lightsail:CreateInstanceSnapshot" ], "Resource": "*" }] }Donnez-lui un nom reconnaissable, comme
PanelExterno-Maquinas. Si l'on vous demandeAdministratorAccess, demandez pourquoi.Créez le rôle avec l'autre compte comme entité de confiance
IAM, Rôles, Créer un rôle. Type d'entité de confiance : Compte AWS, option Un autre compte AWS, et saisissez l'ID de compte du fournisseur. Cochez Exiger un ID externe et collez l'external ID. Ne cochez pas « Exiger la MFA » : l'outil est un programme, pas une personne. Suivant.
Attachez la politique et nommez le rôle
Cherchez la politique créée à l'étape 2, cochez-la et continuez. Nom du rôle : quelque chose qui dise à quoi il sert et à qui, par exemple
PanelExterno-Simplio. Vérifiez le résumé : la politique de confiance doit afficher le compte du fournisseur et la conditionsts:ExternalId. Créez le rôle.Transmettez l'ARN du rôle
Ouvrez le rôle que vous venez de créer et copiez son ARN, de la forme
arn:aws:iam::123456789012:role/PanelExterno-Simplio. C'est la seule chose dont l'outil a besoin ; collez-le là où il vous le demande. Ce n'est pas un secret en soi (sans l'external ID et sans être dans le compte de confiance, il ne sert à rien), mais inutile non plus de le publier.Vérifiez l'accès et le journal
L'outil devrait se connecter immédiatement. Pour voir ce qu'il fait, dans CloudTrail, historique des événements, filtrez par le nom du rôle : chaque action qu'il exécute apparaît avec le rôle comme identité. Si un jour vous voulez couper l'accès, supprimez le rôle ou changez l'external ID ; l'effet est immédiat dès que les identifiants temporaires en cours expirent, ce qui prend au maximum une heure sauf si vous avez allongé cette durée.
Ce qui peut mal tourner
L'outil dit « not authorized to perform sts:AssumeRole »
Soit l'ID de compte de confiance n'est pas le bon, soit l'external ID ne correspond pas, soit l'outil essaie d'assumer le rôle avec un autre principal que celui que vous avez autorisé. Vérifiez l'onglet Relations d'approbation du rôle et comparez-le lettre par lettre avec ce que le fournisseur vous a donné.
Il se connecte mais il lui manque une permission
Le message d'AWS dit exactement quelle action manque. Ajoutez-la à la politique de l'étape 2 ; le changement s'applique aux appels suivants sans toucher au rôle.
Et si l'outil ne prend pas en charge les rôles ?
Alors un utilisateur IAM avec permissions minimales et une clé d'accès est le plan B (le guide est dans cette section). Faites tourner la clé de temps en temps et surveillez sa « dernière utilisation » dans IAM.
J'ai créé le rôle dans le mauvais compte
Avec plusieurs comptes, ça arrive. Le rôle doit se trouver dans le compte dont vous voulez que l'outil voie les ressources. Supprimez-le et recréez-le dans le bon ; l'ARN changera, mettez-le à jour dans l'outil.
Dans Simplio
Simplio accepte la connexion par rôle : dans l'aide, il vous montre l'ID de compte de Simplio et un external ID généré pour vous, et il génère la politique de confiance et celle de permissions en cochant ce que vous voulez autoriser. Vous collez l'ARN du rôle et c'est fait : aucune clé à conserver, et les identifiants que Simplio demande à AWS expirent au bout d'une heure.
La même chose, dans AWS et dans Simplio
| Dans la console AWS | Dans Simplio | |
|---|---|---|
| Créer le rôle | Politique, rôle, entité de confiance, external ID, ARN : 6 étapes, 15 minutes en sachant ce que l'on fait | L'aide vous donne le compte, l'external ID et les deux politiques déjà écrites : coller et copier l'ARN, 3 minutes |
| Permissions justes | Connaître le nom de chaque action | Des cases : lecture seule, sans pare-feu, sans terminal, une région |
| Révoquer | Supprimer le rôle dans IAM | Supprimer la connexion dans Simplio ou le rôle dans IAM ; aucune clé à traquer |