同步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>}
使用Action的AssumeRoleWithSAML。
- {federated: <iam_specifier>}
将原理设置为{"Federated": <expanded iam specifier>}
使用Action的AssumeRoleWithSAML。
字典中以大写字符开头的任何内容都包含在 在声明中。
另外,allow_to_assume_me和^{tt14}之间的区别$ 是信任文档中的一个集合Principle,而另一个集合NotPrinciple。
而<permission_statement>可以是:
- {"action": <action>, resource: <resource>, "allow":<True|False>}
允许对指定的<resource>(字符串或字符串列表)使用<action>。
“允许”将覆盖您指定的任何默认允许或“效果”
任何以大写字符开头的内容都包含在 按原样陈述。
其中action和resource可以是notaction和notresource。
并且<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”开头的行表示修改。
修改之后是要进行的差异的缩进差异。
未来
按重要性排序:
- 更多测试