生成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 TABLECREATE DATABASE等操作。

  • glue\u作业:boolean;必须设置为true,以允许角色运行粘合作业。如果false或缺少角色,则无法运行粘合作业。

  • secrets:boolean;必须设置为true,以允许角色从aws参数存储访问机密。如果false或缺少角色将无法访问机密。

  • s3:最多可以有3个键:read_onlywrite_onlyread_write。每个键描述您希望IAM策略对每个S3路径具有的访问级别。更多详情如下:

    • 只读:IAM角色应该能够访问的S3路径列表(只读)。列表中的每个项都应该是一个对象的路径,或者以/*结束,以表示它可以访问该目录中的所有内容。注意s3路径在配置中不是以s3://开头的。

    • 只写:IAM角色应该能够访问的S3路径列表(只写)。列表中的每个项都应该是一个对象的路径,或者以/*结束,以表示它可以访问该目录中的所有内容。注意s3路径在配置中不是以s3://开头的。

    • 读写S3U访问:IAM角色应该能够访问的S3路径列表(读和写)。列表中的每个项都应该是一个对象的路径,或者以/*结束,以表示它可以访问该目录中的所有内容。注意s3路径在配置中不是以s3://开头的。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
SimpleDataFormat如何在Java中使用DateFormat解析月份完整格式字符串?   java如何使用JBPM引导规则创建规则流组?   java将SQL和应用程序服务器从Windows 2003迁移到Windows server 2012 R2   java游戏!Intellij IDEA中的2.0控制台无法工作   java如何获取线程内分配的变量值?   java Android翻译动画导致Clicklistener问题   当前平台不支持java桌面API   java删除hashmap条目的方法是什么   用Spring MVC提供Java模型的RDF表示?   JAVA未安装Java的计算机上的lang.UnsupportedClassVersionError   java SQLite从3个表中获取使用组合的对象列表   来自的TLS握手错误的java云数据流BQ输出挂起作业   java如何使用SPARQL进行排名?   java如何在Netbeans 7.1.2中设置${user}的值?   java如何删除括号内的字符串?