Aardvark:一个针对多账户AWS IAM访问与身份管理的API框架
2024-7-31 21:33:37 Author: www.freebuf.com(查看原文) 阅读量:1 收藏

freeBuf

主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

关于Aardvark

Aardvark是一个针对多账户AWS IAM访问与身份管理的API框架和缓存层,该工具可以帮助广大研究人员在一个平台下轻松管理多个AWS账号的IAM安全。

工具要求

aniso8601==8.0.0

astroid==2.4.2

attrs==19.3.0

better-exceptions==0.1.7

blinker

boto3==1.20.43

botocore==1.23.43

bunch==1.0.1

certifi==2023.7.22

chardet==3.0.4

Click==7.0

click-log==0.3.2

cloudaux==1.8.0

decorator==4.4.0

deepdiff==3.3.0

defusedxml==0.6.0

docutils==0.15.2

dogpile.cache==0.8.0

flagpole==1.1.1

flasgger==0.6.3

Flask==1.0.2

Flask-RESTful==0.3.5

Flask-Script==2.0.5

Flask-SQLAlchemy>=2.5

gunicorn==19.7.1

idna==2.8

importlib-metadata

inflection==0.3.1

isort==4.3.21

itsdangerous==1.1.0

Jinja2

jmespath==0.9.4

joblib==0.14.0

jsonpickle==1.2

jsonschema==3.1.1

lazy-object-proxy==1.4.2

MarkupSafe==1.1.1

marshmallow==2.20.5

mccabe==0.6.1

mistune==0.8.4

more-itertools==7.2.0

pexpect==4.7.0

psycopg2-binary==2.9.3

ptyprocess==0.6.0

pylint==2.6.0

pyrsistent==0.15.4

python-dateutil==2.8.0

pytz==2017.2

PyYAML

requests==2.31.0

retrying==1.3.3

simplejson==3.16.0

six==1.12.0

SQLAlchemy==1.3.10

swag-client==0.4.6

tabulate==0.8.5

tqdm==4.40.0

Werkzeug==0.16.0

wrapt==1.11.2

zipp==0.6.0

工具安装

由于该工具基于Python 3开发,因此我们首先需要在本地设备上安装并配置好最新版本的Python 3.6+环境。

接下来,广大研究人员可以直接使用下列命令将该项目源码克隆至本地:

git clone https://github.com/Netflix-Skunkworks/aardvark.git

然后切换到项目目录中,并运行下列命令激活虚拟环境,然后执行工具安装脚本:

cd aardvark

python3 -m venv env

. env/bin/activate

python setup.py develop

工具配置

使用Aardvark配置向导将指导我们完成设置:

% aardvark config

 

Aardvark can use SWAG to look up accounts. https://github.com/Netflix-Skunkworks/swag-client

Do you use SWAG to track accounts? [yN]: no

ROLENAME: Aardvark

DATABASE [sqlite:////home/github/aardvark/aardvark.db]:

# Threads [5]:

 

>> Writing to config.py

创建数据表

aardvark create_db

工具使用

收集数据

未使用SWAG:

aardvark update -a 123456789012,210987654321

使用SWAG:

aardvark update

或通过账户名称/标签收集:

aardvark update -a dev,test,prod

API使用

启动API:

aardvark start_api -b 0.0.0.0:5000

使用API,并通过传递count和/或page参数来控制分页:

curl localhost:5000/api/1/advisors

curl localhost:5000/api/1/advisors?phrase=SecurityMonkey

curl localhost:5000/api/1/advisors?arn=arn:aws:iam::000000000000:role/SecurityMonkey&arn=arn:aws:iam::111111111111:role/SecurityMonkey

curl localhost:5000/api/1/advisors?regex=^.*Monkey$

Docker使用

Aardvark 还可以使用Docker和Docker Compose进行部署,Aardvark服务建立在共享容器上,我们需要安装Docker和Docker Compose才能运行此功能。

如需为一组账户配置容器,请在在此目录的根目录中创建一个.env文件,并在此文件中定义环境变量:

AARDVARK_ROLE=Aardvark

AARDVARK_ACCOUNTS=<account id>

AWS_DEFAULT_REGION=<aws region>

AWS_ACCESS_KEY_ID=<your access key>

AWS_SECRET_ACCESS_KEY=<you secret key>

名称

服务

描述

AARDVARK_ROLE

collector

Aardvark 将承担的角色的名称,以便它可以收集数据。

AARDVARK_ACCOUNTS

collector

如果使用 SWAG,则为可选,否则为必需。将其设置为 SWAG 帐户名称标签列表或 AWS 帐号列表,以便从中收集访问顾问记录。

AWS_ARN_PARTITION

collector

如果未使用 AWS 商业区域,则为必填项。例如,aws-us-gov。默认情况下,这是aws。

AWS_DEFAULT_REGION

collector

sts:AssumeRole如果未在具有适当实例配置文件的 EC2 实例上运行,则必需。将这些设置为具有 Aardvark 审计角色权限的 AWS IAM 用户的凭证。

AWS_ACCESS_KEY_ID

collector

sts:AssumeRole如果未在具有适当实例配置文件的 EC2 实例上运行,则必需。将这些设置为具有 Aardvark 审计角色权限的 AWS IAM 用户的凭证。

AWS_SECRET_ACCESS_KEY

collector

sts:AssumeRole如果未在具有适当实例配置文件的 EC2 实例上运行,则必需。将这些设置为具有 Aardvark 审计角色权限的 AWS IAM 用户的凭证。

AARDVARK_DATABASE_URI

collector和apiserver

指定 SQL Alchemy 支持的自定义数据库 URI。默认情况下,这将使用该AARDVARK_DATA_DIR值创建 SQLLite 数据库。示例:sqlite:///$AARDVARK_DATA_DIR/aardvark.db

构建容器:

docker-compose build

开启容器:

docker-compose up

清理环境:

docker-compose down

移除容器:

docker-compoes rm

许可证协议

本项目的开发与发布遵循Apache-2.0开源许可协议。

项目地址

Aardvark:【GitHub传送门

参考资料

https://github.com/Netflix-Skunkworks/swag-client

https://pythonhosted.org/blinker/

本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022


文章来源: https://www.freebuf.com/sectool/407463.html
如有侵权请联系:admin#unsafe.sh