文档首页/ 云容器引擎 CCE/ 最佳实践/ Terraform/ 创建IAM用户并配置CCE最小权限
更新时间:2026-08-20 GMT+08:00

创建IAM用户并配置CCE最小权限

华为云主账号具有账号的所有权限,使用主账号进行日常操作风险较高,误操作可能导致资源不可用或数据泄露。在团队协作场景下,不同成员需要不同的权限,直接共享主账号无法实现权限隔离。

建议创建IAM用户并授予最小权限,仅开放业务所需的操作权限,降低安全风险。本文介绍如何通过Terraform创建IAM用户和用户组,并将CCE相关系统权限绑定到用户组,实现权限的精细化管控。

前提条件

操作步骤

步骤一:创建项目目录并初始化配置

  1. 创建IAM用户管理目录(目录名可自定义)。
    mkdir terraform_iam_user
    cd ./terraform_iam_user
  2. 将已准备好的Provider配置文件复制到当前目录。init.tf已在“安装Terraform并配置华为云Provider”章节的terraform_hw_demo目录中创建。
    cp ../terraform_hw_demo/init.tf .

步骤二:创建配置文件

以下所有配置文件均在项目目录下创建。

  1. 查询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

    需要绑定到用户组的策略名称列表。

  2. 创建用户组。

    创建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

    用户组描述。

  3. 创建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。

  4. 创建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

    用户密码。新建用户首次登录控制台时需要重置密码。

  5. 将用户加入用户组。

    创建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。

  6. 配置资源参数。

    创建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配置

  1. 初始化环境。
    terraform init
  2. 查看执行计划,确认资源变更是否符合预期。
    terraform plan
  3. 计划确认无误后,创建资源。执行时Terraform会向用户确认,输入yes确认执行。
    terraform apply
  4. 查看已创建的资源。
    terraform show

步骤四:清理资源

当不再需要通过Terraform创建的资源时,可以执行以下命令释放资源。执行时Terraform会向用户确认,输入yes确认执行。

此操作将永久删除通过Terraform创建的所有IAM用户、用户组和授权关系,请确认不再需要后再执行。

terraform destroy

相关文档