某集团客户在业务上广泛采用公共云和IDC混合部署的方式,众多业务部门使用云基础设施,IT运维需要完善的云管理框架,以实现安全高效的IT设施管控。
该客户参照Landing Zone的解决方案,对多个业务线的公共云资源进行统一的管理。搭建Landing Zone的过程中主要面临以下几个挑战:
集团下多个业务申请开通云服务频繁,运维人员操作负担大;
账号创建之后需要进行财务、权限配置的初始化,人工操作难以标准化;
员工访问多账号授权繁琐,授予和收回权限疏漏可能造成越权风险。
基于IaC的思想,将集团内账号的管理和人员的授权使用Terraform开发了DevOps平台,通过版本化管理的Terraform代码实现部署。
Terraform 是一个开源的 IT 基础设施编排工具,可用于安全高效的配置和管理云基础资源。使用Terraform可以为IT管理带来众多优势,包括
基础设施即代码:使用高级配置语言描述基础设施,使其能够代码化和版本化,便于共享和重复使用。
多云部署:您可以将类似的基础结构部署到火山引擎、其他云提供商或本地数据中心,通过相同的配置文件同时管理不同云提供商的云资源。
执行计划:Terraform支持生成一个执行计划,显示调用apply时Terraform的状态,避免Terraform操作基础设施时出现意外。
资源图:Terraform支持建立一个所有资源的图,并行创建和修改任何非依赖性资源,尽可能高效地构建基础设施,操作人员可以深入了解基础设施中的依赖性。
业界通常熟悉使用Terraform进行云资源的部署,同样可以实现对于基础的云账号及人员身份授权自动化。这部分工作可以主要分解为以下几个流程:
暂时无法在飞书文档外展示此内容
在开始使用Terraform自动化流程之前,首先需要开通火山引擎的企业组织和云身份中心。其中企业组织帮助管理多账号关系,需要涉及到多主体的关系关联。云身份中心用于实现多账号下的人员权限管理,并实现与企业内部系统的SSO配置。初始化工作是一次性操作,后续的工作可使用自动化方式完成。
使用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之间的财务关系,支持设定财务托管关系或财务管理,选择财务管理关系时,需要制定对应的财务权益。
根据企业的管理规范,首先需要定义不同职能用云的权限,将这些规范使用访问控制的策略语句设置为权限集。当新员工需要访问云资源时,可以使用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实现轻松的资源编排,并对其进行版本控制。 | |
2 | 使用企业组织组织内云账号的创建 | 企业组织 | 灵活的实现多主体云账号的自动化创建,无需额外实名认证,快速开展新的业务。 | |
3 | 建立财务关系 | 企业财务 | 实现集团内多主体的财务管理模式,进行优惠共享设置,划拨信控,统一开票等动作 | |
4 | 预设权限集 | 云身份中心 | 初始化访问权限集 | 集中管理企业员工访问权限的模版,实现统一的权限管理规范,保障访问安全。 |
5 | 申请/授予访问权限 | 企业身份中心 | 配置角色SSO | 基于云身份中心实现员工权限的授予,将复杂的身份管理操作用Terraform实现便捷的管理。 |