同步IAM角色

iam_syncr的Python项目详细描述


IAM同步器

用于保持IAM角色同步的工具。

安装

只需使用pip:

pip install iam_syncr

用法

你为你拥有的每个亚马逊账户创建一个文件夹,然后把文件放进去 定义要在该帐户中定义的角色。

然后运行:

iam_syncr <folder>
<>它会发现你定义的角色并确保它们存在并且只有 您定义的策略。

它将在您的帐户中保留其他角色。

注意,对于您定义的角色,它将删除任何不 匹配你拥有的。

您可以通过 aws_access_key_id和aws_secret_access_key。

格式

帐户.yaml

脚本将在文件夹上方的目录中查找accounts.yaml 你指定的。这应该是{account\u name:account\u id}的映射 其中account_id是每个amazon帐户的12位id,不带连字符。

脚本将使用这些值来检查 提供的是您正在同步的帐户,如果 在策略中指定帐户名。

指定文件夹中的任何yaml文件
当前仅支持包含“角色”或“删除角色”定义的文件。

yaml配置

山药看起来像:

 ---

 templates:
   <template_name>: template

 roles:
   <role_name>:
      use: <template_name>

      description: <optional>

      make_instance_profile: <boolean saying whether to make an instance profile with this role in it>

      allow_to_assume_me: [<assume_role_statements>]
      disallow_to_assume_me: [<assume_role_statements>]

      permission: [<permission_statements>]
      deny_permission: [<permission_statemnt> where "Effect" is set to "Deny"]
      allow_permission: [<permission_statemnt> where "Effect" is set to "Allow"]

buckets:
   <bucket_name>:
      location: <ap-southeast-2, us-east-1, etc>
      permission: [<permission_statements>]
      deny_permission: [<permission_statemnt> where "Effect" is set to "Deny"]
      allow_permission: [<permission_statemnt> where "Effect" is set to "Allow"]

keys:
   <kms key alias>:
      location: <ap-southeast-2, us-east-1, etc>
      admin_users: <iam_specifier>

      permission: [<permission_statements>]
      deny_permission: [<permission_statemnt> where "Effect" is set to "Deny"]
      allow_permission: [<permission_statemnt> where "Effect" is set to "Allow"]

      grant:
         - grantee: <iam_specifier>
           retiree: <iam_specifier>
           operations: (see http://boto.readthedocs.org/en/latest/ref/kms.html#boto.kms.layer1.KMSConnection.create_grant)
           constraints: <dictionary>
           grant_tokens: <list>

remove_role:
   - <role_name>
   - <role_name>
   - ...

其中<assume_role_statement>可以是:

{service: ec2}

将原理设置为{"Service": "ec2.amazonaws.com"}

如果要在ec2框上使用metdata凭据,则需要执行此操作

<iam_specifier>

请参见下文,它指定一个IAM资源

基本上允许指定的iam角色调用assume role作为此角色。

{federated: <string>}

将原理设置为{"Federated": <string>}

使用ActionAssumeRoleWithSAML

{federated: <iam_specifier>}

将原理设置为{"Federated": <expanded iam specifier>}

使用ActionAssumeRoleWithSAML

字典中以大写字符开头的任何内容都包含在 在声明中。

另外,allow_to_assume_me和^{tt14}之间的区别$ 是信任文档中的一个集合Principle,而另一个集合NotPrinciple

<permission_statement>可以是:

{"action": <action>, resource: <resource>, "allow":<True|False>}

允许对指定的<resource>(字符串或字符串列表)使用<action>

“允许”将覆盖您指定的任何默认允许或“效果”

任何以大写字符开头的内容都包含在 按原样陈述。

其中actionresource可以是notactionnotresource

并且<resource>可以是:

单个字符串
作为该字符串的列表放入策略中
一个<resource>
列表
放入策略中,每个<resource>展开
<iam_specifier>
请参见下文,它指定一个IAM资源
{"s3": <s3_specifier>}
“arn:aws:s3:::<;s3指定符>;
{"s3": [<s3_specifier>, <s3_specifier>, ...]}
[“arn:aws:s3::<;s3指定符>;”,“arn:aws:s3::<;s3指定符>;”,…]

其中<iam_specifer>可以是:

{"iam":"__self__"}
了解此策略授予的角色/用户
{"iam":<specifier>,"account":<account>"}

“arn:aws:iam::<;account>;:<;说明符>;”

其中account是从accounts.yaml的accounts字典中检索到的

KMS键

可以使用keys命名空间创建KMS密钥和相关的授权。

这些密钥将自动从帐户的根目录访问,以及 指定的任何admin_users中的所有KMS操作。

干运行

您可以使用--dry-run选项使IAM同步告诉您将要进行的更改 不做那些改变就做。

它将打印出对stdout的更改。

以“+”开头的行表示加法,st行用“-”表示 删除和以“m”开头的行表示修改。

修改之后是要进行的差异的缩进差异。

未来

按重要性排序:

  • 更多测试

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

推荐PyPI第三方库


热门话题
Java程序运行时错误   JavaAndroidStudio:与往常一样,四舍五入到next.5或.0   apache使用Java以表单数据形式上载文件   带矢量的java Freeflight相机如何正确旋转?   java如何以编程方式检索有关当前项目的语言、操作系统、体系结构等信息   java Twitter4J tweet实体?   java PdfBox编码异常   java在拖动未装饰的舞台时,如何强制光标停留在窗口上   JavaSpring注释扫描优化   java无法通过IntelliJ Idea在tomcat上运行服务   java在生命周期中如何拦截请求?   java中的数组返回错误