关于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传送门】