
Descubra recursos criados em uma conta AWS.
Esta é uma ferramenta que tenta descobrir todos os recursos AWS criados em uma conta. A AWS tem muitos produtos (também conhecidos como serviços), com novos sendo constantemente adicionados e os existentes expandidos com novos recursos. O ecossistema permite que os usuários combinem muitos serviços diferentes para formar uma experiência de nuvem personalizada. A capacidade de criar instantaneamente serviços em escala tem um custo de gerenciabilidade. Pode rapidamente se tornar difícil auditar uma conta AWS quanto aos recursos em uso. Isso é importante não apenas para fins de faturamento, mas também para segurança. Recursos inativos e recursos desconhecidos são mais propensos a fragilidades de configuração de segurança. Além disso, recursos com dependências inesperadas apresentam problemas de disponibilidade, controle de acesso e autorização.
Ele usa botocore para descobrir serviços AWS e em quais regiões eles são executados. Também é usado para invocar as APIs dos serviços. As APIs invocadas são aquelas que devem listar ou descrever recursos. Os resultados podem ser impressos no stdout em formato JSON. Eles também podem ser gravados em vários arquivos:
Primeiro, instale o Python2.7.
Há uma pequena GUI para exibir o progresso que usa o módulo padrão Tkinter do Python. No entanto, o código da biblioteca nativa subjacente para Tcl/Tk pode exigir etapas extras para instalação. Então,
pip install -r requirements.txt
Use o instalador do Python para instalar Tkinter/Tcl/Tk.
Use o gerenciador de pacotes do seu sistema operacional:
sudo apt-get install python-tk
Você pode executar o script sem nenhum parâmetro. Ele procurará suas credenciais AWS no ambiente do shell, nos metadados da instância, no arquivo de configuração e, depois, no arquivo de credenciais. Você também pode fornecer um arquivo CSV, contendo suas credenciais, na linha de comando. Você vai querer um usuário que tenha permissões como as da política gerenciada da AWS ViewOnlyAccess. Se você estiver se sentindo com sorte, pode simplesmente canalizar a saída da ferramenta para um analisador JSON como jq.
A ferramenta pode levar muito tempo (dezenas de minutos) para ser concluída se não forem impostas restrições sobre quais operações invocar para cada serviço em cada região. A filtragem por serviço e região pode ser feita na linha de comando, enquanto a filtragem por operação de serviço pode ser feita via arquivo de configuração. Um arquivo pré-configurado foi criado e adicionado ao repositório. Ele será usado por padrão.
Além da saída da linha de comando, você pode visualizar os resultados localmente em um aplicativo de página única em React. Não é necessário servidor web. Basta abrir o arquivo HTML em um navegador e selecionar o arquivo JSON gerado quando solicitado.
O aplicativo usa jsTree para exibir os dados em uma estrutura hierárquica, semelhante a uma árvore. Também há um recurso de pesquisa.
NOTA: Ao invocar APIs, aquelas que geram uma exceção não são usadas novamente, independentemente da região. Causas conhecidas de exceções são:
$ 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

