
Scopri le risorse create in un account AWS.
Questo è uno strumento che tenta di scoprire tutte le risorse AWS create in un account. AWS ha molti prodotti (noti anche come servizi), con nuovi che vengono costantemente aggiunti e quelli esistenti ampliati con nuove funzionalità. L'ecosistema consente agli utenti di combinare molti servizi diversi per creare un'esperienza cloud personalizzata. La possibilità di attivare istantaneamente servizi su larga scala comporta un costo in termini di gestibilità. Può diventare rapidamente difficile verificare un account AWS per le risorse in uso. Ciò è importante non solo per la fatturazione, ma anche per la sicurezza. Le risorse dormienti e quelle sconosciute sono più soggette a debolezze di configurazione della sicurezza. Inoltre, le risorse con dipendenze impreviste pongono problemi di disponibilità, controllo degli accessi e autorizzazione.
Usa botocore per scoprire i servizi AWS e in quali regioni vengono eseguiti. Viene inoltre utilizzato per invocare le API dei servizi. Le API invocate sono quelle che dovrebbero elencare o descrivere le risorse. I risultati possono essere stampati su stdout in formato JSON. Possono anche essere scritti su diversi file:
Innanzitutto, installa Python 2.7.
C'è una piccola GUI per visualizzare l'avanzamento che usa il modulo standard Tkinter di Python. Tuttavia, il codice della libreria nativa sottostante per Tcl/Tk potrebbe richiedere passaggi aggiuntivi per l'installazione. Quindi,
pip install -r requirements.txt
Usa il programma di installazione di Python per installare Tkinter/Tcl/Tk.
Usa il gestore pacchetti del tuo sistema operativo:
sudo apt-get install python-tk
Puoi eseguire lo script senza parametri. Cercherà le tue credenziali AWS nell'ambiente della shell, nei metadati dell'istanza, nel file di configurazione e poi nel file delle credenziali. Puoi anche fornire un file CSV, contenente le tue credenziali, dalla riga di comando. Ti servirà un utente con permessi simili alla policy gestita AWS ViewOnlyAccess. Se ti senti fortunato, puoi semplicemente convogliare l'output dello strumento in un parser JSON come jq.
Lo strumento potrebbe impiegare molto tempo (decine di minuti) per completarsi se non vengono imposte restrizioni su quali operazioni invocare per ciascun servizio in ciascuna regione. Il filtraggio per servizio e regione può essere fatto dalla riga di comando, mentre il filtraggio per operazione del servizio può essere fatto tramite file di configurazione. Un file preconfigurato è stato creato e inserito nel repository. Verrà usato di default.
Oltre all'output dalla riga di comando, puoi visualizzare i risultati localmente in una single-page app React. Non è necessario un web server. Basta aprire il file HTML in un browser e selezionare il file JSON generato quando richiesto.
L'app usa jsTree per visualizzare i dati in una struttura gerarchica, simile ad un albero. C'è anche una funzione di ricerca.
NOTA: Quando si invocano le API, quelle che sollevano un'eccezione non vengono più usate indipendentemente dalla regione. Cause note di eccezioni sono:
$ 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

