生成iam策略的lil-python包
iam-builder的Python项目详细描述
IAM生成器
基于yaml或json配置生成iam策略的python脚本。
要安装:
# Most stable
pip install iam-builder
# OR directly from github
pip install git+git://github.com/moj-analytical-services/iam_builder.git#egg=iam_builder
要使用命令行界面:
iam_builder -c examples/iam_config.yaml -o examples/iam_policy.json
-c
是iam配置的路径(yaml或json文件)。-o
是输出iam策略的路径(需要是json文件)。
或者在python中执行相同的操作:
importyamlimportjsonfromiam_builder.iam_builderimportbuild_iam_policywithopen('examples/iam_config.yaml')asf:config=yaml.load(f)iam_policy=build_iam_policy(config)withopen('examples/iam_policy.json',"w+")asf:json.dump(iam_policy,f,indent=4,separators=(',',': '))
两个脚本都将创建在examples文件夹中看到的输出iam_策略。通过查看单元测试,您还可以看到more example configs。
配置文件可以是yaml或json文件。
示例yaml(iam_config.yaml
)如下所示:
iam_role_name:iam_role_nameathena:write:falseglue_job:truesecrets:trues3:read_only:-test_bucket_read_only/*write_only:-test_bucket_write_only/*-test_bucket_read_only/write_only_folder/*read_write:-test_bucket_read_write/*-test_bucket_read_only/write_folder/*
而示例json(iam_config.json
)看起来是这样的:
{"iam_role_name":"iam_role_name","athena":{"write":false},"glue_job":true,"secrets":true,"s3":{"read_only":["test_bucket_read_only/*"],"write_only":["test_bucket_write_only/*","test_bucket_read_only/write_only_folder/*"],"read_write":["test_bucket_read_write/*","test_bucket_read_only/write_folder/*"]}}
iam_role_name:气流作业的角色名;如果要运行粘合作业或访问机密,则必须输入。
athena:只有一个键值对。
write
这是真是假。如果false
,则只能读取对Athena的访问权限(不能创建、删除或更改表、数据库和分区)。如果true
,则角色还可以执行诸如ctas查询、DROP TABLE
、CREATE DATABASE
等操作。glue\u作业:boolean;必须设置为
true
,以允许角色运行粘合作业。如果false
或缺少角色,则无法运行粘合作业。secrets:boolean;必须设置为
true
,以允许角色从aws参数存储访问机密。如果false
或缺少角色将无法访问机密。s3:最多可以有3个键:
read_only
、write_only
和read_write
。每个键描述您希望IAM策略对每个S3路径具有的访问级别。更多详情如下:只读:IAM角色应该能够访问的S3路径列表(只读)。列表中的每个项都应该是一个对象的路径,或者以
/*
结束,以表示它可以访问该目录中的所有内容。注意s3路径在配置中不是以s3://
开头的。只写:IAM角色应该能够访问的S3路径列表(只写)。列表中的每个项都应该是一个对象的路径,或者以
/*
结束,以表示它可以访问该目录中的所有内容。注意s3路径在配置中不是以s3://
开头的。读写S3U访问:IAM角色应该能够访问的S3路径列表(读和写)。列表中的每个项都应该是一个对象的路径,或者以
/*
结束,以表示它可以访问该目录中的所有内容。注意s3路径在配置中不是以s3://
开头的。