中文|English
本方案使用 Terraform 自动化执行,受限于 Terraform 的一些限制(不支持动态 Provider),需要分为两步进行:第一步执行将根据settings.tfvars中用户指定要扮演的角色,动态生成出第二步所需要的Terraform模板并自动化填好参数;第二步将根据Terraform模板扮演RAM角色,并打印所扮演角色的账号uid。
- 确保当前环境已经安装 Terraform,并且版本 >= 0.13;
- 确保已持有企业管理账号下的RAM用户AK且用户有权限完成操作。进入主账号,创建用户并生成AK,并且赋予该账号AliyunResourceDirectoryReadOnlyAccess、AliyunSTSAssumeRoleAccess、AliyunRAMFullAccess权限。
- 确保被扮演角色的可信实体为该用户
-
下载附件的代码包,解压到某个目录。目录结构如下:
├── modules // 模块目录,无需修改 │ └── output // 打印当前角色所在账号的uid,无需修改 │ ├── main.tf │ └── variables.tf └── step1 // 第一阶段操作所需的目录 ├── main.tf // 第一阶段操作入口文件,无需修改 ├── settings.tfvars // 配置文件,可以根据自身需要修改 ├── step2.tmpl // 用于生成第二阶段操作的模板文件,无需修改 └── variables.tf // 第一阶段用到的变量定义,无需修改
-
使用编辑器打开
step1/settings.tfvars
这个文件,根据注释,修改该文件内的配置项:-
将前置条件中的AK、AK Secret填入到
access_key
,secret_key
内 -
根据自身需要修改
ram_roles
角色列表,运行脚本后,该用户将会去扮演指定账号下的指定角色ram_roles = [ { # 将扮演的角色名称 role_name = "cloudadmin" # 角色所在账号uid account_id = "1***************" }, { role_name = "networkadmin" account_id = "1***************" } ]
-
-
第一阶段操作:
-
第二阶段操作: