La politique de confiance d'un rôle peut nommer un principal dans un autre compte. Lorsqu'elle nomme le root du compte (arn:aws:iam::<acct>:root) plutôt qu'un rôle spécifique, tout principal de ce compte disposant de sts:AssumeRole peut assumer le rôle, ce qui transforme un point d'appui dans un compte en accès dans un autre.
Repérer la confiance#
{ "Effect": "Allow",
"Principal": { "AWS": "arn:aws:iam::111111111111:root" },
"Action": "sts:AssumeRole" }
Ici, root désigne le compte entier, et pas seulement son utilisateur root : il délègue la décision d'autorisation à l'IAM du compte 111111111111 lui-même.
Assumer à travers les comptes#
aws sts assume-role \
--role-arn arn:aws:iam::<target>:role/<role> \
--role-session-name x --query Credentials
Notes d'exploitation#
- Énumérez les documents de confiance à l'échelle du compte avec
get-account-authorization-details, puis filtrez les valeursPrincipal.AWSqui sont des roots de compte ou des jokers. - Le chaînage de rôles fonctionne : assumez le rôle A dans le compte 1, puis utilisez-le pour assumer le rôle B dans le compte 2, en suivant le graphe de confiance que PMapper dessine.
- Une session assumée par chaînage est plafonnée à une heure et ne peut pas être renouvelée par un nouveau chaînage, ce qui compte pour les opérations longues.
Outils#
- AWS CLI (
sts assume-role) : l'assomption. - PMapper : arêtes cross-account lorsque les graphes des deux comptes sont chargés.
- Pacu (
iam__enum_assume_role) : force brute des ARN de rôle candidats pour trouver des rôles assumables.