创建IAM用户并配置CCE最小权限
华为云主账号具有账号的所有权限,使用主账号进行日常操作风险较高,误操作可能导致资源不可用或数据泄露。在团队协作场景下,不同成员需要不同的权限,直接共享主账号无法实现权限隔离。
建议创建IAM用户并授予最小权限,仅开放业务所需的操作权限,降低安全风险。本文介绍如何通过Terraform创建IAM用户和用户组,并将CCE相关系统权限绑定到用户组,实现权限的精细化管控。
前提条件
- 当前账号具有IAM管理员权限(如IAMFullPolicy),用于创建用户、用户组和授权。
- 已安装Terraform,详情请参见安装Terraform并配置华为云Provider。
操作步骤
步骤一:创建项目目录并初始化配置
- 创建IAM用户管理目录(目录名可自定义)。
mkdir terraform_iam_user cd ./terraform_iam_user
- 将已准备好的Provider配置文件复制到当前目录。init.tf已在“安装Terraform并配置华为云Provider”章节的terraform_hw_demo目录中创建。
cp ../terraform_hw_demo/init.tf .
步骤二:创建配置文件
以下所有配置文件均在项目目录下创建。
- 查询IAM权限策略数据源。
创建policy_data.tf文件,查询系统策略信息并按名称过滤,用于后续绑定到用户组。
variable "policy_type" { description = "The type of the policy" type = string default = "system" } variable "policy_names" { description = "The name list of policies to be associated with the user group" type = list(string) } # 获取指定region(region参数缺省时默认继承当前provider块中所指定的region)下所有的IAM策略信息,用于关联到用户组 data "huaweicloud_identityv5_policies" "test" { policy_type = var.policy_type } # 根据策略名称过滤策略列表 locals { filtered_policies = [for policy in data.huaweicloud_identityv5_policies.test.policies : policy if contains(var.policy_names, policy.policy_name)] }涉及参数说明如下表所示。
参数
说明
policy_type
策略类型。取值:
- system(默认):系统策略
- custom:自定义策略
policy_names
需要绑定到用户组的策略名称列表。
- 创建用户组。
创建group.tf文件,创建IAM用户组,用于承载策略和用户。
variable "group_name" { description = "The name of the user group" type = string } variable "group_description" { description = "The description of the user group" type = string default = "" } # 在指定region(region参数缺省时默认继承当前provider块中所指定的region)下创建IAM用户组资源 resource "huaweicloud_identityv5_group" "test" { group_name = var.group_name description = var.group_description }涉及参数说明如下表所示。
参数
说明
group_name
用户组名称。
group_description
用户组描述。
- 创建group_attach.tf文件,给用户组授权。
# 在指定region(region参数缺省时默认继承当前provider块中所指定的region)下创建IAM策略与用户组关联资源 resource "huaweicloud_identityv5_policy_group_attach" "test" { count = length(local.filtered_policies) policy_id = try(local.filtered_policies[count.index].policy_id, null) group_id = huaweicloud_identityv5_group.test.id depends_on = [ huaweicloud_identityv5_group.test ] }涉及参数说明如下表所示。
参数
说明
count
创建资源数量,等于需要绑定的策略数量。
policy_id
策略ID,从步骤1的查询结果中获取。
group_id
用户组ID,即步骤2中创建的用户组ID。
- 创建users.tf文件,创建IAM用户。
variable "users_configuration" { description = "IAM用户的配置" type = list(object({ name = string password = optional(string, "") })) nullable = false } # 在指定region(region参数缺省时默认继承当前provider块中所指定的region)下创建IAM用户资源 resource "huaweicloud_identity_user" "test" { count = length(var.users_configuration) name = lookup(var.users_configuration[count.index], "name", null) password = lookup(var.users_configuration[count.index], "password", null) }涉及参数说明如下表所示。
参数
说明
name
用户名。
password
用户密码。新建用户首次登录控制台时需要重置密码。
- 将用户加入用户组。
创建group_members.tf文件,将步骤4中创建的用户加入步骤2中创建的用户组,用户将继承该用户组的所有权限。
resource "huaweicloud_identity_group_membership" "test" { count = length(var.users_configuration) group = huaweicloud_identityv5_group.test.id users = huaweicloud_identity_user.test[*].id depends_on = [ huaweicloud_identityv5_group.test, huaweicloud_identity_user.test ] }涉及参数说明如下表所示。
参数
说明
group
用户组ID,即步骤2中创建的用户组ID。
users
用户ID列表,即步骤4中创建的所有用户ID。
- 配置资源参数。
创建terraform.tfvars文件,预设资源所需的入参。以下为示例配置,请根据实际业务需求修改。
# IAM用户组配置 group_name = "cce_operate" group_description = "CCE resource management" # IAM策略配置 policy_type = "system" policy_names = [ "CCEFullPolicy" # 策略名称,此策略拥有CCE的所有权限 ] # IAM用户配置 users_configuration = [ { name = "cce_use" # 新建用户的用户名 password = "*******" # 新建用户的密码,新建的用户初次登录控制台需要重置密码 } ]涉及参数说明如下表所示。
参数
说明
group_name
用户组名称,示例为cce_operate。
group_description
用户组描述。
policy_type
策略类型,示例为system(系统策略)。
policy_names
策略名称列表,示例为CCEFullPolicy(CCE完全访问权限)。如需最小权限,可替换为CCEReadOnlyPolicy(CCE只读权限)。
users_configuration
用户配置列表,包含用户名和密码。
步骤三:初始化并应用Terraform配置
- 初始化环境。
terraform init
- 查看执行计划,确认资源变更是否符合预期。
terraform plan
- 计划确认无误后,创建资源。执行时Terraform会向用户确认,输入yes确认执行。
terraform apply
- 查看已创建的资源。
terraform show
步骤四:清理资源
当不再需要通过Terraform创建的资源时,可以执行以下命令释放资源。执行时Terraform会向用户确认,输入yes确认执行。
此操作将永久删除通过Terraform创建的所有IAM用户、用户组和授权关系,请确认不再需要后再执行。
terraform destroy
相关文档
- 如需了解Terraform的安装和华为云Provider的配置,请参见安装Terraform并配置华为云Provider。
- 如需了解CCE支持的系统权限策略,请参见权限管理。
- 如需通过Terraform创建CCE集群,请参见使用Terraform创建CCE集群。