
Découvrez les ressources créées dans un compte AWS.
Cet outil tente de découvrir toutes les ressources AWS créées dans un compte. AWS possède de nombreux produits (également appelés services), avec de nouveaux ajoutés en permanence et des produits existants enrichis de nouvelles fonctionnalités. L'écosystème permet aux utilisateurs de combiner de nombreux services différents pour former une expérience cloud personnalisée. La capacité de déployer instantanément des services à grande échelle a un coût en matière de gestion. Il peut rapidement devenir difficile d'auditer un compte AWS pour identifier les ressources utilisées. C'est important non seulement pour la facturation, mais aussi pour la sécurité. Les ressources dormantes et les ressources inconnues sont plus sujettes à des faiblesses de configuration de sécurité. De plus, les ressources ayant des dépendances inattendues posent des problèmes de disponibilité, de contrôle d'accès et d'autorisation.
Il utilise botocore pour découvrir les services AWS et les régions dans lesquelles ils s'exécutent. Il est également utilisé pour invoquer les API des services. Les API invoquées sont celles qui doivent lister ou décrire des ressources. Les résultats peuvent être affichés sur stdout au format JSON. Ils peuvent également être écrits dans plusieurs fichiers :
Tout d'abord, installez Python2.7.
Il existe une petite interface graphique pour afficher la progression qui utilise le module standard Python Tkinter. Cependant, le code de bibliothèque natif sous-jacent pour Tcl/Tk peut nécessiter des étapes supplémentaires à installer. Ensuite,
pip install -r requirements.txt
Utilisez le programme d'installation de Python pour installer Tkinter/Tcl/Tk.
Utilisez le gestionnaire de paquets de votre système d'exploitation :
sudo apt-get install python-tk
Vous pouvez exécuter le script sans aucun paramètre. Il recherchera vos identifiants AWS dans votre environnement shell, les métadonnées d'instance, le fichier de configuration, puis le fichier d'identifiants. Vous pouvez également fournir un fichier CSV contenant vos identifiants en ligne de commande. Vous aurez besoin d'un utilisateur disposant d'autorisations similaires à la politique gérée AWS ViewOnlyAccess. Si vous vous sentez chanceux, vous pouvez simplement rediriger la sortie de l'outil vers un analyseur JSON comme jq.
L'outil peut prendre beaucoup de temps (des dizaines de minutes) pour se terminer si aucune restriction n'est imposée sur les opérations à invoquer pour chaque service dans chaque région. Le filtrage par service et par région peut être effectué en ligne de commande, tandis que le filtrage par opération de service peut être effectué via un fichier de configuration. Un fichier préconfiguré a été créé et ajouté au référentiel. Il sera utilisé par défaut.
En plus de la sortie en ligne de commande, vous pouvez consulter les résultats localement dans une application monopage React. Aucun serveur web n'est nécessaire. Il suffit d'ouvrir le fichier HTML dans un navigateur et de sélectionner le fichier JSON généré lorsque vous y êtes invité.
L'application utilise jsTree pour afficher les données dans une structure hiérarchique, en forme d'arbre. Il existe également une fonctionnalité de recherche.
REMARQUE : Lors de l'invocation des API, celles qui lèvent une exception ne sont plus utilisées, quelle que soit la région. Les causes connues d'exceptions sont :
$ python aws_inventory.py
$ python aws_inventory.py --list-svcs
acm
apigateway
application-autoscaling
appstream
autoscaling
batch
budgets
clouddirectory
cloudformation
cloudfront
.
.
.
$ python aws_inventory.py --list-operations
[shield]
DescribeSubscription
ListAttacks
ListProtections
[datapipeline]
ListPipelines
[firehose]
ListDeliveryStreams
.
.
.
[glacier]
# NONE
[stepfunctions]
ListActivities
ListStateMachines
Total operations to invoke: 4045
$ python aws_inventory.py --debug --dry-run

