使用资源组对ACK集群资源进行精细化控制

为了更加高效地管理容器服务 Kubernetes 版的资源,您可以使用资源组对资源进行分组管理。资源组使您能够按照部门、项目、环境等维度对资源进行分组,并结合访问控制(RAM),在单个阿里云账号内实现资源的隔离和精细化权限管理。本文为您介绍ACK集群对资源组的支持情况,以及如何对容器服务 Kubernetes 版的资源进行分组和资源组级别的授权操作。

基本概念

  • 资源组

    资源组(Resource Group)是在阿里云账号下进行资源分组管理的一种机制,能够有效解决单个阿里云账号内的资源分组、权限管理和成本分摊等复杂问题。例如,您可以为不同的项目创建对应的资源组,并将项目使用的资源转移到对应的组中,以便集中管理各项目的资源。更多信息,请参见什么是资源组资源组设计最佳实践

  • 资源组级别授权

    在完成资源分组后,您可以使用RAMRAM授权主体(RAM用户、RAM用户组或RAM角色)授予指定资源组范围的权限,从而限制其可管理的资源范围仅为指定资源组内的资源。这种授权方式具有良好的扩展性,后续新增资源时,只需将资源加入相应的资源组,无需修改权限策略。更多信息,请参见资源分组和授权

资源组级别授权的操作步骤

以下以授予RAM用户在指定资源组内管理ACK集群资源的权限为例,为您介绍资源组级别授权的操作步骤。

  1. RAM控制台,创建RAM用户。

    具体操作,请参见创建RAM用户

  2. 资源组控制台,创建资源组。

    具体操作,请参见创建资源组

  3. 资源划分到对应资源组。

    • 新创建的资源:在创建资源时,指定其所属的资源组。

    • 现有资源:将现有资源转移到对应的资源组。具体操作,请参见资源手动转组

  4. RAM控制台,创建自定义权限策略。

    创建自定义权限策略,将RAM用户所需的操作权限包含在内。具体操作,请参见创建自定义权限策略。如果您选择为RAM用户授予系统权限策略,可跳过此步骤。

    在实际业务环境中,建议您遵循最小授权原则,仅授予RAM用户所需的最少权限,以避免权限过大带来的安全风险。

    自定义权限策略示例:

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": ["cs:DescribeClusterDetail"],
          "Resource": "*"
        }
      ]
    }
  5. RAM用户授予指定资源组范围的权限。

    以下两种授权方法您可以任选其一:

重要
  • 只有支持资源组的资源类型,资源组级别授权才能生效。容器服务 Kubernetes 版支持资源组的资源类型,请参见支持资源组的资源类型

  • 对于不支持资源组的资源类型,在选择资源范围时,请选择账号级别,进行账号级别授权。容器服务 Kubernetes 版不支持资源组级别授权的操作,请参见不支持资源组级别授权的操作。具体的授权策略,请参见自定义权限策略示例

支持资源组的资源类型

容器服务 Kubernetes 版中部分资源类型支持资源组,支持的资源类型如下表所示。

云服务

云服务代码

资源类型

容器服务 Kubernetes 版

cs

cluster:集群

说明

对于暂不支持资源组的资源类型,如有需要,您可以提交工单反馈。

不支持资源组级别授权的操作

容器服务 Kubernetes 版中不支持资源组级别授权的操作(Action)如下表所示。具体的权限策略,请参见自定义权限策略示例

操作(Action)

描述

cs:OpenAckService

开通容器服务 Kubernetes 版

cs:ListOperationPlans

查询自动运维任务执行计划列表

cs:CancelOperationPlan

取消自动运维任务执行计划

cs:DescribeTaskInfo

查询任务详情

cs:PauseTask

暂停任务

cs:CancelTask

取消任务

cs:ResumeTask

恢复任务

cs:CreateKubernetesTrigger

创建应用触发器

cs:DeleteTriggerHook

删除触发器

cs:CreateTemplate

创建编排模板

cs:DeleteTemplate

删除编排模板

cs:UpdateTemplate

更新编排模板

cs:DescribeTemplates

查询所有编排模板

cs:DescribeTemplateAttribute

查询指定编排模板的详情

cs:ListUserKubeConfigStates

查询指定用户所有集群的KubeConfig状态列表

cs:ListAddons

查询可用的组件列表

cs:DescribeAddon

查询指定组件的信息

cs:DescribeAddons

查询所有组件信息

cs:DescribeEvents

查询事件详情

cs:DescribeEventsForRegion

查询指定地域的事件列表

cs:DescribeKubernetesVersionMetadata

查询Kubernetes版本的详细信息

cs:CheckServiceRole

检查是否授权指定服务角色

cs:DescribePatternTypes

获取实例规格列表

cs:CheckUserClustersActivity

检查用户在指定集群中的活跃情况

cs:CreateSessionMessage

创建ACK AI助手消息会话

cs:UpdateMessageFeedback

更新ACK AI助手消息反馈

cs:DescribeKubeConfigManagementTaskList

列出KubeConfig相关任务列表

cs:ListHaveKubeconfigDeletedAccounts

查询账号中存在已删除的RAM用户或RAM角色,但其KubeConfig仍在生效中的用户列表

cs:ListKubeConfigRecycle

列出当前阿里云账号下处于回收站中的KubeConfig列表

cs:RestoreKubeConfigRecycleItem

从回收站中恢复已删除的KubeConfig

cs:RestoreMultiKubeConfigRecycleItems

从回收站中批量恢复已删除的KubeConfig

cs:DeleteKubeConfigRecycleItem

从回收站中永久删除KubeConfig

cs:DescribeKubernetesVersionMetadata

查询Kubernetes版本的详细信息

cs:DescribePolicies

查询策略列表

cs:DescribePolicyDetails

查询指定策略的详细信息

cs:DescribeUserInstances

获取添加已有节点时所需的节点列表

cs:DescribeUserPermission

查询RAM用户或角色的权限

cs:UpdateUserPermissions

更新指定RAM用户或角色的RBAC权限

cs:CleanUserPermissions

清除某个用户的证书以及相关RBAC权限

cs:QueryAlertContact

查询告警联系人

cs:AddOrUpdateAlertContact

更新告警联系人

cs:DeleteAlertContact

删除告警联系人

cs:QueryAlertContactGroup

查询告警联系人分组

cs:AddOrUpdateAlertContactGroup

更新告警联系人分组

cs:DeleteAlertContactGroup

删除告警联系人分组

cs:DescribeUserQuota

查询配额信息

cs:ListOperationPlans

查询自动运维任务执行计划列表

cs:CancelOperationPlan

取消自动运维任务执行计划

cs:DescribeTasks

查询任务列表

关于容器服务 Kubernetes 版更详细的RAM授权信息,请参见授权信息

自定义权限策略示例

重要

获得账号级别权限的RAM用户或RAM角色,能够操作整个账号范围内的相关资源。请务必确认所授予的权限是否符合预期,遵从最小授权原则谨慎分配权限。

对于不支持资源组的资源类型,授予资源组范围的权限将无效,您需要创建自定义权限策略,授权时资源范围选择账号级别

image

以下为您提供两个自定义权限策略示例,您可以根据实际需要调整策略内容。

  • 允许不支持资源组级别授权的只读操作

    Action中列举不支持资源组级别授权的所有只读操作。

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "cs:DescribeAddon",
            "cs:DescribeAddons",
            "cs:DescribeEvents",
            "cs:DescribeEventsForRegion",
            "cs:DescribeKubeConfigManagementTaskList",
            "cs:DescribeKubernetesVersionMetadata",
            "cs:DescribePatternTypes",
            "cs:DescribePolicies",
            "cs:DescribePolicyDetails",
            "cs:DescribeTaskInfo",
            "cs:DescribeTemplateAttribute",
            "cs:DescribeTemplates",
            "cs:DescribeUserInstances",
            "cs:DescribeUserPermission",
            "cs:ListAddons",
            "cs:ListHaveKubeconfigDeletedAccounts",
            "cs:ListKubeConfigRecycle",
            "cs:ListOperationPlans",
            "cs:ListUserKubeConfigStates",
            "cs:QueryAlertContact",
            "cs:QueryAlertContactGroup",
            "cs:CheckServiceRole",
            "cs:DescribeTasks",
            "cs:DescribeUserQuota",
            "cs:ListOperationPlans",
            "cs:CheckUserClustersActivity"
          ],
          "Resource": "*"
        }
      ]
    }
  • 允许不支持资源组级别授权的全部操作

    Action中列举不支持资源组级别授权的全部操作。

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "cs:AddOrUpdateAlertContact",
            "cs:AddOrUpdateAlertContactGroup",
            "cs:CancelOperationPlan",
            "cs:CancelTask",
            "cs:CheckServiceRole",
            "cs:CheckUserClustersActivity",
            "cs:CleanUserPermissions",
            "cs:CreateKubernetesTrigger",
            "cs:CreateSessionMessage",
            "cs:CreateTemplate",
            "cs:DeleteAlertContact",
            "cs:DeleteAlertContactGroup",
            "cs:DeleteKubeConfigRecycleItem",
            "cs:DeleteTemplate",
            "cs:DeleteTriggerHook",
            "cs:DescribeAddon",
            "cs:DescribeAddons",
            "cs:DescribeEvents",
            "cs:DescribeEventsForRegion",
            "cs:DescribeKubeConfigManagementTaskList",
            "cs:DescribeKubernetesVersionMetadata",
            "cs:DescribePatternTypes",
            "cs:DescribePolicies",
            "cs:DescribePolicyDetails",
            "cs:DescribeTaskInfo",
            "cs:DescribeTemplateAttribute",
            "cs:DescribeTemplates",
            "cs:DescribeUserInstances",
            "cs:DescribeUserPermission",
            "cs:ListAddons",
            "cs:ListHaveKubeconfigDeletedAccounts",
            "cs:ListKubeConfigRecycle",
            "cs:ListOperationPlans",
            "cs:ListUserKubeConfigStates",
            "cs:OpenAckService",
            "cs:DescribeTasks",
            "cs:PauseTask",
            "cs:QueryAlertContact",
            "cs:QueryAlertContactGroup",
            "cs:RestoreKubeConfigRecycleItem",
            "cs:RestoreMultiKubeConfigRecycleItems",
            "cs:ResumeTask",
            "cs:UpdateMessageFeedback",
            "cs:DescribeUserQuota",
            "cs:ListOperationPlans",
            "cs:CancelOperationPlan",
            "cs:UpdateTemplate",
            "cs:UpdateUserPermissions"
          ],
          "Resource": "*"
        }
      ]
    }