在一些规模较大的企业,特别是外企,喜欢使用terraform来批量管理云产品的资源,腾讯云对Terraform的支持也是比较完善的
https://registry.terraform.io/providers/tencentcloudstack/tencentcloud/latest/docs
如果是使用角色登录控制台进行管理,时常会面临无法创建QCS类型角色的情况
比如创建mysql后,开启数据透明加密,这里会提示需要KMS密钥授权,角色方式点击进行授权会提示需要主账号进行操作。
(这里的子账号现在是可以创建QCS授权的,但是角色方式登录控制台还是不可以)
这个时候,就可以用到terraform来进行创建,不仅能跳过主账号授权,还能针对多账号进行统一管理。
如下提供一个MySQL_QCSRole角色创建的代码,其他的QCS角色可以使用同样的方法创建(还有一种linkedRole角色也有专门的创建方式,暂时不做介绍。)
创建这个TF文件的过程中,需要先用不受限制的账号进行测试,先通过控制台创建QCS角色,然后再分析下绑定了哪些策略以及角色载体,然后通过tf来创建一样的角色。
针对上图,用TF的方式进行创建
代码语言:text复制resource "tencentcloud_cam_role" "foo" {
name = "MySQL_QCSRole"
document = <<EOF
{
"version": "2.0",
"statement": [
{
"action": ["name/sts:AssumeRole"],
"effect": "allow",
"principal": {
"service": ["cdb.zijiebao.com"]
}
}
]
}
EOF
description = "当前角色为 云数据库 MySQL 服务角色,该角色将在已关联策略的权限范围内访问您的其他云服务资源。由tf创建"
console_login = false
tags = {
test = "tf-cam-role",
}
lifecycle {
prevent_destroy = true
}
}
data "tencentcloud_cam_policies" "bar" {
name = "QcloudAccessForMySQLRole"
}
resource "tencentcloud_cam_role_policy_attachment" "foo" {
role_id = tencentcloud_cam_role.foo.id
policy_id = data.tencentcloud_cam_policies.bar.policy_list.0.policy_id
}