使用Terraform创建QCS角色

2023-01-29 11:03:48 浏览数 (1)

在一些规模较大的企业,特别是外企,喜欢使用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
}

0 人点赞