Cloudsplaining est un outil d'évaluation de la sécurité AWS IAM qui identifie les violations du moindre privilège et génère un rapport priorisé par risque.
Cloudsplaining est un outil d'évaluation de la sécurité AWS IAM qui identifie les violations du moindre privilège et génère un rapport HTML priorisé par risque.
Pour la documentation complète, veuillez consulter le projet sur ReadTheDocs.
Cloudsplaining identifie les violations du moindre privilège dans les politiques AWS IAM et génère un rapport HTML attrayant. Il peut analyser toutes les politiques de votre compte AWS, sur plusieurs comptes AWS, ou il peut analyser un seul fichier de politique.
Il aide à identifier les actions IAM qui n'exploitent pas les contraintes de ressources. Il aide également à prioriser le processus de correction en signalant les politiques IAM qui présentent les risques suivants pour le compte AWS concerné sans restriction :
s3:GetObject, ssm:GetParameter, secretsmanager:GetSecretValue)Cloudsplaining identifie également les rôles IAM qui peuvent être assumés par les services de calcul AWS (tels que EC2, ECS, EKS ou Lambda), car ils peuvent présenter un plus grand risque que les rôles définis par l'utilisateur - surtout si le service de calcul AWS se trouve sur une instance directement ou indirectement exposée à Internet. Signaler ces rôles est particulièrement utile pour les testeurs de pénétration (ou les attaquants) dans certains scénarios. Par exemple, si un attaquant obtient des privilèges pour exécuter ssm:SendCommand et qu'il existe des instances EC2 privilégiées avec l'agent SSM installé, il peut effectivement avoir les privilèges de ces instances EC2. L'exécution de code à distance via l'agent AWS Systems Manager était déjà un chemin d'escalade/exploitation connu, mais Cloudsplaining peut faciliter le processus d'identification de ces cas. Voir le rapport exemple pour quelques exemples.
Vous pouvez également spécifier un fichier d'exclusions personnalisées pour filtrer les résultats qui sont des faux positifs pour diverses raisons. Par exemple, les politiques utilisateur sont permissives par conception, tandis que les rôles système sont généralement plus restrictifs. Vous pouvez également avoir des exclusions spécifiques à la stratégie multi-comptes de votre organisation ou à l'architecture applicative AWS.
Policy Sentry nous a révélé qu'il est enfin possible d'écrire des politiques IAM conformément au moindre privilège de manière évolutive. Avant la sortie de Policy Sentry, il était trop facile de trouver des documents de politique IAM sans contraintes de ressources. Considérez la politique ci-dessous, qui permet au principal IAM (un rôle ou un utilisateur) d'exécuter s3:PutObject sur n'importe quel compartiment S3 du compte AWS :```json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:PutObject"
],
"Resource": "*"
}
]
}
C'est mauvais. Idéalement, l'accès devrait être restreint en fonction des ARN de ressources, comme suit :```json
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:GetObject"
],
"Resource": "arn:aws:s3:::my-bucket/*"
}
]
}
Policy Sentry rend cela très facile. Une fois que les développeurs d'Infrastructure as Code ou les administrateurs AWS se familiarisent avec l'outil (qui est assez facile à utiliser), nous avons constaté que l'adoption commence très rapidement. Cependant, si vous utilisez AWS, il y a probablement un très grand arriéré de politiques IAM qui pourraient bénéficier d'une amélioration. Si vous avez des centaines de comptes AWS avec des dizaines de politiques dans chaque, comment pouvons-nous verrouiller ces comptes AWS en identifiant par programmation les politiques qui doivent être corrigées ?
C'est pourquoi nous avons écrit Cloudsplaining.
Cloudsplaining identifie les violations du moindre privilège dans les politiques AWS IAM et génère un joli rapport HTML. Il peut analyser toutes les politiques de votre compte AWS, sur plusieurs comptes AWS, ou il peut analyser un seul fichier de politique.
brew tap salesforce/cloudsplaining https://github.com/salesforce/cloudsplaining brew install cloudsplaining
#### Pip3```bash
pip3 install --user cloudsplaining
cloudsplaining depuis la ligne de commande en lançant cloudsplaining --help.Pour activer la complétion Bash, placez ceci dans votre .bashrc :```bash
eval "$(_CLOUDSPLAINING_COMPLETE=bash_source cloudsplaining)"
Pour activer la complétion ZSH, mettez ceci dans votre .zshrc:```bash
eval "$(_CLOUDSPLAINING_COMPLETE=zsh_source cloudsplaining)"
Vous pouvez également analyser un seul fichier de politique pour identifier les risques au lieu d'un compte entier.```bash cloudsplaining scan-policy-file --input-file examples/policies/explicit-actions.json
Le résultat inclura une description de la constatation et une liste des actions IAM qui n'utilisent pas de contraintes de ressources.
Le résultat ressemblera à ce qui suit :```console
Issue found: Data Exfiltration
Actions: s3:GetObject
Issue found: Resource Exposure
Actions: ecr:DeleteRepositoryPolicy, ecr:SetRepositoryPolicy, s3:BypassGovernanceRetention, s3:DeleteAccessPointPolicy, s3:DeleteBucketPolicy, s3:ObjectOwnerOverrideToBucketOwner, s3:PutAccessPointPolicy, s3:PutAccountPublicAccessBlock, s3:PutBucketAcl, s3:PutBucketPolicy, s3:PutBucketPublicAccessBlock, s3:PutObjectAcl, s3:PutObjectVersionAcl