You need to enable JavaScript to run this app.
导航
Terraform自动化搭建基础账号架构
最近更新时间:2024.10.11 21:13:17首次发布时间:2024.10.11 21:13:17
客户背景介绍

某集团客户在业务上广泛采用公共云和IDC混合部署的方式,众多业务部门使用云基础设施,IT运维需要完善的云管理框架,以实现安全高效的IT设施管控。

项目背景和面临挑战

该客户参照Landing Zone的解决方案,对多个业务线的公共云资源进行统一的管理。搭建Landing Zone的过程中主要面临以下几个挑战:

  • 集团下多个业务申请开通云服务频繁,运维人员操作负担大;

  • 账号创建之后需要进行财务、权限配置的初始化,人工操作难以标准化;

  • 员工访问多账号授权繁琐,授予和收回权限疏漏可能造成越权风险。

基于IaC的思想,将集团内账号的管理和人员的授权使用Terraform开发了DevOps平台,通过版本化管理的Terraform代码实现部署。

火山引擎解决方案

Terraform 是一个开源的 IT 基础设施编排工具,可用于安全高效的配置和管理云基础资源。使用Terraform可以为IT管理带来众多优势,包括

  • 基础设施即代码:使用高级配置语言描述基础设施,使其能够代码化和版本化,便于共享和重复使用。

  • 多云部署:您可以将类似的基础结构部署到火山引擎、其他云提供商或本地数据中心,通过相同的配置文件同时管理不同云提供商的云资源。

  • 执行计划:Terraform支持生成一个执行计划,显示调用apply时Terraform的状态,避免Terraform操作基础设施时出现意外。

  • 资源图:Terraform支持建立一个所有资源的图,并行创建和修改任何非依赖性资源,尽可能高效地构建基础设施,操作人员可以深入了解基础设施中的依赖性。

业界通常熟悉使用Terraform进行云资源的部署,同样可以实现对于基础的云账号及人员身份授权自动化。这部分工作可以主要分解为以下几个流程:
暂时无法在飞书文档外展示此内容

  1. 初始化配置

在开始使用Terraform自动化流程之前,首先需要开通火山引擎的企业组织和云身份中心。其中企业组织帮助管理多账号关系,需要涉及到多主体的关系关联。云身份中心用于实现多账号下的人员权限管理,并实现与企业内部系统的SSO配置。初始化工作是一次性操作,后续的工作可使用自动化方式完成。

  1. 账号管理

使用Terraform实现新账号的创建,然后对新账号指定财务关系,以下是一个简单的例子:

resource "volcengine_organization_unit" "foo" {
  name        = "acc-test-org-unit"
  parent_id   = "730671013833632****"
  description = "acc-test"
}

resource "volcengine_organization_account" "foo" {
  account_name = "acc-test-account"
  show_name    = "acc-test-account"
  description  = "acc-test"
  org_unit_id  = volcengine_organization_unit.foo.id
  verification_relation_id = "210026****"

  tags {
    key   = "k1"
    value = "v1"
  }
}

resource "volcengine_financial_relation" "financial_relation_4" {
  sub_account_id = 2100259504
  relation = 4
  #account_alias = "acc-test-financial"
  auth_list = [1, 2, 3]
}

在上述Terraform脚本中:
1)verification_relation_id可用于指定企业组织内的一个认证主体,以实现多主体实名认证的账号创建,实现集团场景下的账号管理。
2)可对账号添加对应的标签,方便进行管理
3)设定某个账号与Master Account之间的财务关系,支持设定财务托管关系或财务管理,选择财务管理关系时,需要制定对应的财务权益。

  1. 人员权限管理

根据企业的管理规范,首先需要定义不同职能用云的权限,将这些规范使用访问控制的策略语句设置为权限集。当新员工需要访问云资源时,可以使用Terraform进行便捷的用户创建和授权:

//permission_set
 resource "volcengine_cloud_identity_permission_set" "permission_set_4" {
   name             = "tf-test-permission_set_4"
   description      = "tf_test_1"
   session_duration = 36361
   relay_state = "https://console.volcengine.com/home"
   permission_policies {
     permission_policy_type = "System"
     permission_policy_name = "AdministratorAccess"
   }
   permission_policies {
     permission_policy_type = "System"
     permission_policy_name = "CloudIdentityFullAccess"
   }
   permission_policies {
     permission_policy_type = "Inline"
     inline_policy_document = "{\"Statement\":[{\"Effect\":\"Allow\",\"Action\":[\"auto_scaling:DescribeScalingGroups\"],\"Resource\":[\"*\"]}]}"
   }
 }
 
 resource "volcengine_cloud_identity_user" "tf_user" {
  user_name    = "tf-test-user"
  display_name = "tf-test-user"
  description  = "一个测试用户"
  email = "test@tf.com"
}

//permission_set_assignment
resource "volcengine_cloud_identity_permission_set_assignment" "permission_set_assignment_1" {
  permission_set_id = volcengine_cloud_identity_permission_set.permission_set_4.id
  target_id         = "2100728987"
  principal_type    = "User"
  principal_id      = volcengine_cloud_identity_user.tf_user.id
}

在上述Terraform脚本中:
1)首先初始化了权限集,这里以管理员身份为例。实际的场景中需要设置多个职能的策略。
2)创建新用户,这里假设用户通过邮箱的方式实现SSO登录
3)对新用户进行访问授权,这里的target_id对应可以访问的账号,permission_set_id对应某一个权限集。
设置完成之后,此用户可以使用角色SSO的方式登录火山引擎。

方案优势
  • 使用Terraform实现便捷、灵活的账号管理,支持集团内多主体使用云资源的场景

  • 创建账号时自动化部署账号的财务关系和基础权限、VPC等资源,实现统一的账号规范

  • 使用云身份中心实现用户对多账号的访问授权,使用Terraform实现人员权限管理自动化

上述方案中,使用到以下主要的服务:

序号业务功能产品使用的功能方案价值

1

使用Terraform实现自动化部署

Terraform

火山引擎Terraform

使用Terraform实现轻松的资源编排,并对其进行版本控制。

2

使用企业组织组织内云账号的创建

企业组织

创建成员账号

灵活的实现多主体云账号的自动化创建,无需额外实名认证,快速开展新的业务。

3

建立财务关系

企业财务

财务管理

实现集团内多主体的财务管理模式,进行优惠共享设置,划拨信控,统一开票等动作

4

预设权限集

云身份中心

初始化访问权限集

集中管理企业员工访问权限的模版,实现统一的权限管理规范,保障访问安全。

5

申请/授予访问权限

企业身份中心

配置角色SSO

基于云身份中心实现员工权限的授予,将复杂的身份管理操作用Terraform实现便捷的管理。