
Descubre recursos creados en una cuenta de AWS.
Esta es una herramienta que intenta descubrir todos los recursos de AWS creados en una cuenta. AWS tiene muchos productos (también conocidos como servicios) y constantemente se añaden nuevos, mientras que los existentes se amplían con nuevas funciones. El ecosistema permite a los usuarios combinar muchos servicios diferentes para formar una experiencia en la nube personalizada. La capacidad de poner en marcha servicios al instante y a escala conlleva un coste de gestión. Auditar una cuenta de AWS para conocer los recursos en uso puede volverse rápidamente difícil. No solo es importante por motivos de facturación, sino también de seguridad. Los recursos inactivos y desconocidos son más propensos a debilidades de configuración de seguridad. Además, los recursos con dependencias inesperadas plantean problemas de disponibilidad, control de acceso y autorización.
Utiliza botocore para descubrir los servicios de AWS y en qué regiones se ejecutan. También se utiliza para invocar las API de los servicios. Las API que se invocan son aquellas que deben enumerar o describir recursos. Los resultados pueden imprimirse en stdout en formato JSON. También pueden escribirse en varios archivos:
Primero, instale Python2.7.
Hay una pequeña GUI para mostrar el progreso que utiliza el módulo estándar Tkinter de Python. Sin embargo, el código de la biblioteca nativa subyacente para Tcl/Tk puede requerir pasos adicionales para instalarse. Después,
pip install -r requirements.txt
Use el instalador de Python para instalar Tkinter/Tcl/Tk.
Use el administrador de paquetes de su sistema operativo:
sudo apt-get install python-tk
Puede ejecutar el script sin ningún parámetro. Buscará sus credenciales de AWS en el entorno de su shell, en los metadatos de la instancia, en el archivo de configuración y luego en el archivo de credenciales. También puede proporcionar un archivo CSV, que contenga sus credenciales, en la línea de comandos. Necesitará un usuario que tenga permisos similares a la política administrada de AWS ViewOnlyAccess. Si se siente con suerte, puede simplemente canalizar la salida de la herramienta a un analizador JSON como jq.
La herramienta puede tardar mucho tiempo (decenas de minutos) en completarse si no se imponen restricciones sobre qué operaciones invocar para cada servicio en cada región. El filtrado por servicio y región se puede hacer en la línea de comandos, mientras que el filtrado por operación de servicio se puede hacer mediante un archivo de configuración. Se creó un archivo preconfigurado y se incorporó al repositorio. Se utilizará por defecto.
Además de la salida por línea de comandos, puede ver los resultados localmente en una aplicación de una sola página de React. No se necesita servidor web. Simplemente abra el archivo HTML en un navegador y seleccione el archivo JSON generado cuando se le solicite.
La aplicación usa jsTree para mostrar los datos en una estructura jerárquica, similar a un árbol. También incluye una función de búsqueda.
NOTA: Al invocar API, las que generan una excepción no se vuelven a utilizar independientemente de la región. Las causas conocidas de excepciones son:
$ 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

