中文|English
本方案使用 Terraform 自动化执行,受限于 Terraform 的一些限制(不支持动态 Provider),需要分为两步进行:第一步执行将根据主账号资源目录下的成员账号列表,动态生成出第二步所需要的Terraform模板并自动填好参数;第二步将根据Terraform模板,在成员账号下创建Idp和RAM角色。所有配置项均在第一步内完成。
- 确保当前环境已经安装Terraform
- 确保企业管理账号已经开启资源目录服务
- 确保已持有企业管理账号RAM用户AK且用户有权限完成操作。用户需要有AliyunResourceDirectoryReadOnlyAccess、AliyunSTSAssumeRoleAccess、AliyunRAMFullAccess权限。
- 确保已经获得Idp meta.xml元数据文件
-
下载附件的代码包,解压到某个目录。目录结构如下:
├── modules // 模块目录,无需修改 │ └── role // 创建角色相关的操作封装为模块便于使用,无需修改 │ ├── 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 = { "ssoTestRole": { description = "Test for Terraform" policies = [ "AliyunLogFullAccess" ] } }
-
根据自身需要修改idp配置信息,其中
metadata
存放Idp xml元文件路径# idp名称 saml_provider_name = "tf-testIdp" # idp元数据xml文件路径 metadata = "./meta.xml"
-
根据自身需要填写子账号黑名单(使用子账号uid标识),在黑名单内的子账号不会创建idp和ram角色。
# 子账号黑名单,填写子账号uid,在黑名单内的子账号不会创建idp和ram角色。 exclude = ["113************"] # 期望作用在所有子账号上则配置exclude=[]即可。 # exclude = []
-
-
第一阶段操作:
-
第二阶段操作: