前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Repokid:一款针对AWS的分布式最小权限高速部署工具

Repokid:一款针对AWS的分布式最小权限高速部署工具

作者头像
FB客服
发布2024-04-26 08:49:59
870
发布2024-04-26 08:49:59
举报
文章被收录于专栏:FreeBufFreeBuf
关于Repokid

Repokid是一款针对AWS的分布式最小权限高速部署工具,该工具基于Aardvark项目的Access Advisor API实现其功能,可以帮助广大研究人员根据目标AWS账号中的IAM角色策略移除多余服务被授予的访问权限。

工具要求

DynamoDB mkvirtualenv虚拟环境 Python Docker

工具安装

广大研究人员可以直接使用下列命令将该项目源码克隆至本地,并进行工具配置:

代码语言:javascript
复制
mkvirtualenv repokid

git clone git@github.com:Netflix/repokid.git

cd repokid

pip install -e .

repokid config config.json

DynamoDB

我们需要配置一个DynamoDB表,该表需要包含下列属性:

1、RoleId(字符串)作为主分区键; 2、一个名为Account的全局辅助索引; 3、一个名为RoleName的全局辅助索引;

本地运行:

代码语言:javascript
复制
docker-compose up

打开浏览器并访问「http://localhost:8000」即可查看DynamoDB节点,访问「http://localhost:8001」即可查看DynamoDB管理员面板。

IAM权限

代码语言:javascript
复制
{

 "Version": "2012-10-17",

 "Statement": [

   {

     "Action": [

       "iam:DeleteInstanceProfile",

       "iam:DeleteRole",

       "iam:DeleteRolePolicy",

       "iam:GetAccountAuthorizationDetails",

       "iam:GetInstanceProfile",

       "iam:GetRole",

       "iam:GetRolePolicy",

       "iam:ListInstanceProfiles",

       "iam:ListInstanceProfilesForRole",

       "iam:ListRolePolicies",

       "iam:PutRolePolicy",

       "iam:UpdateRoleDescription"

     ],

     "Effect": "Allow",

     "Resource": "*"

   }

 ]

}

工具使用

标准工作流

更新角色缓存:

代码语言:javascript
复制
repokid update_role_cache <ACCOUNT_NUMBER>

显示角色缓存:

代码语言:javascript
复制
repokid display_role_cache <ACCOUNT_NUMBER>

显示指定角色的信息:

代码语言:javascript
复制
repokid display_role <ACCOUNT_NUMBER> <ROLE_NAME>

操作指定角色:

代码语言:javascript
复制
repokid repo_role <ACCOUNT_NUMBER> <ROLE_NAME>

操作账号中的所有角色:

代码语言:javascript
复制
repokid repo_all_roles <ACCOUNT_NUMBER> -c

针对特定权限执行操作

代码语言:javascript
复制
$ repokid find_roles_with_permissions "s3:putobjectacl" "sts:assumerole" --output=myroles.json

...

$ repokid remove_permissions_from_roles --role-file=myroles.json "s3:putobjectacl" "sts:assumerole" -c

以代码库使用

Repokid还支持以代码库的形式使用,使用时需要导入repokid.lib模块:

代码语言:javascript
复制
from repokid.lib import display_role, repo_role, update_role_cache

 

account_number = "123456789012"

 

display_role(account_number, "superCoolRoleName")

update_role_cache(account_number)

repo_role(account_number, "superCoolRoleName", commit=True)

许可证协议

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

项目地址

Repokid:

https://github.com/Netflix/repokid

https://github.com/Netflix-Skunkworks/aardvark https://aws.amazon.com/dynamodb/

本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-04-20,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • IAM权限
  • 标准工作流
  • 针对特定权限执行操作
  • 以代码库使用
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com