使用资源组进行精细化资源控制

更新时间:
复制为 MD 格式

当您使用资源组对资源进行分组管理时,可以结合访问控制(RAM),在单个阿里云账号内实现资源的隔离和精细化权限管理。本文总结了阿里云Elasticsearch对资源组的支持情况,以及资源组级别的授权操作步骤。

说明
  • 只有支持资源组的资源类型和支持资源组级别授权的操作,资源组级别授权才能生效。

  • 对于不支持资源组的资源类型,授予资源组范围的权限将无效。在选择资源范围时,请选择账号级别,进行账号级别授权。具体操作,请参见不支持资源组级别授权的操作

资源组授权的工作原理

您可以使用资源组(Resource Group)对阿里云账号内的资源进行分组管理。例如,为不同的项目创建对应的资源组,并将资源转移到对应的组中,以便集中管理各项目的资源。更多信息,请参见什么是资源组

在完成资源分组后,您可以为不同的RAM授权主体(RAM用户、RAM用户组或RAM角色)授予指定资源组范围的权限,从而限定这个授权主体只能管理该资源组内的资源。更多信息,请参见资源分组和授权

这种授权方式的优点有:

  • 权限精细化:确保每个身份能获得最准确的资源访问权限,避免账号下的多个项目的资源混合管理。

  • 良好的扩展性:后续新增资源时,只需将其加入该资源组,RAM身份便会自动获得新资源的相应权限,无需再次授权。

RAM用户授予资源组级别的权限

下面以RAM用户为例,介绍授予指定资源组内阿里云Elasticsearch资源权限的操作步骤。

1. 前置步骤

  1. 创建待使用的RAM用户,可参考:创建RAM用户

  2. 创建资源组并将已有资源划分到目标资源组,可参考:创建资源组资源自动转组资源手动转组

2. 进行资源组级别授权

您可以通过以下任一方式进行资源组级别授权。

方式一:在资源管理控制台中授权

通过资源组的权限管理功能为指定 RAM 用户授权。详情操作可参见RAM身份授予资源组范围的权限

  • 登录资源组控制台

  • 在资源组页面,单击目标资源组操作列的权限管理

  • 权限管理页签,单击新增授权

  • 新增授权面板,设置授权主体和权限策略。

    • 授权主体:选择已有RAM用户。

    • 权限策略:选择系统策略或已创建的自定义策略,参考创建自定义权限策略

  • 单击确认新增授权

方式二:在 RAM 控制台中授权

通过RAM控制台为指定 RAM 用户进行资源组级别授权。详细操作可参见RAM用户授权

  • 使用阿里云账号(主账号)或RAM管理员登录RAM控制台

  • 在左侧导航栏,选择身份管理 > 用户用户页面,单击目标RAM用户操作列的添加权限

  • 新增授权面板,为RAM用户添加权限。

    • 资源范围:选择资源组级别

    • 授权主体:选择已有 RAM 用户或前面步骤创建的 RAM 用户。

    • 权限策略:选择系统策略或已创建的自定义策略,参考创建自定义权限策略

  • 单击确认新增授权

支持资源组的资源类型

阿里云Elasticsearch支持资源组的资源类型如下表所示:

云服务

云服务代码

资源类型

阿里云Elasticsearch

elasticsearch

apm : 应用性能监控

阿里云Elasticsearch

elasticsearch

instance : 实例

阿里云Elasticsearch

elasticsearch

logstash : Logstash

说明

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

image

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

阿里云Elasticsearch中不支持资源组级别授权的操作(Action)如下:

操作(Action)

操作描述

elasticsearch:ActivePhone

-

elasticsearch:AddWhiteListTemplate

-

elasticsearch:AttachMigrationJob

-

elasticsearch:CreateCollector

创建采集器,采集指定服务上的数据。

elasticsearch:CreateComponentIndex

创建Elasticsearch组合模板。

elasticsearch:CreateEmonAlarmGroup

-

elasticsearch:CreateEmonAlarmRule

-

elasticsearch:CreateEmonContact

-

elasticsearch:CreateEmonContactGroup

-

elasticsearch:CreateEmonContactGroupContact

-

elasticsearch:CreateEmonProject

-

elasticsearch:CreateMigrationJob

-

elasticsearch:DeleteCollector

删除指定的采集器。

elasticsearch:DeleteEmonAlarmGroup

-

elasticsearch:DeleteEmonAlarmRule

-

elasticsearch:DeleteEmonProject

-

elasticsearch:DeleteMigrationJobResource

-

elasticsearch:DeleteWhiteListTemplate

-

elasticsearch:DescribeAckOperator

调用DescribeAckOperator,查看指定容器服务KubernetesACK(Container Service for Kubernetes)集群上安装的Elasticsearch Operator信息。

elasticsearch:DescribeCollector

获取采集器实例的详细信息。

elasticsearch:DescribeMigrationMergeConfig

-

elasticsearch:DescribeVpcs

-

elasticsearch:DescribeVswitches

-

elasticsearch:DisableEmonAlarmRule

-

elasticsearch:DisableEmonContact

-

elasticsearch:DisableEmonContactGroup

-

elasticsearch:EnableEmonAlarmRule

-

elasticsearch:EnableEmonContact

-

elasticsearch:EnbaleEmonContactGroup

-

elasticsearch:FeedbackReport

-

elasticsearch:GetClusterDataInformation

获取索引迁移数据信息。

elasticsearch:GetEmonAlarmEventList

-

elasticsearch:GetEmonAlarmEventStatistics

-

elasticsearch:GetEmonAlarmGroup

-

elasticsearch:GetEmonAlarmGroupList

-

elasticsearch:GetEmonAlarmRecordList

-

elasticsearch:GetEmonAlarmRecordStatistics

-

elasticsearch:GetEmonAlarmRecordStatisticsDistribute

-

elasticsearch:GetEmonAlarmRule

-

elasticsearch:GetEmonAlarmRuleList

-

elasticsearch:GetEmonConsoleConfig

-

elasticsearch:GetEmonContact

-

elasticsearch:GetEmonContactGroup

-

elasticsearch:GetEmonContactGroupList

-

elasticsearch:GetEmonContactList

-

elasticsearch:GetEmonGrafanaAlerts

调用GetEmonGrafanaAlerts,获取Grafana报警列表。

elasticsearch:GetEmonGrafanaDashboards

调用GetEmonGrafanaDashboards,获取Grafana大盘列表。

elasticsearch:GetEmonProject

-

elasticsearch:GetEmonProjectList

-

elasticsearch:GetEmonUserConfig

-

elasticsearch:GetMigrationJob

-

elasticsearch:GetRegionConfiguration

-

elasticsearch:GetSinleEmonUserConfig

-

elasticsearch:GetWhiteListTemplates

-

elasticsearch:InitCustomModel

-

elasticsearch:InitializeOperationRole

调用InitializeOperationRole,创建服务关联角色。

elasticsearch:InstallAckOperator

在指定容器服务集群上安装 Ack Operator。

elasticsearch:ListAckClusters

获取容器服务KubernetesACK(Container Service for Kubernetes)集群列表。

elasticsearch:ListAckNamespaces

查看指定容器服务KubernetesACK(Container Service for Kubernetes)集群的所有命名空间。

elasticsearch:ListApm

-

elasticsearch:ListCollectors

获取当前用户vpcvswitch下的ECS 实例列表。

elasticsearch:ListDefaultCollectorConfigurations

调用ListDefaultCollectorConfigurations,获取采集器的默认配置文件。

elasticsearch:ListDistinctEventInstanceIds

-

elasticsearch:ListEcsInstances

-

elasticsearch:ListEventRecords

-

elasticsearch:ListInstanceHistoryEvents

调用ListInstanceHistoryEvents,查看Elasticsearch集群触发的硬件运维事件列表。

elasticsearch:ListMigrationJobs

-

elasticsearch:ListNodes

智能运维的历史报告列表。

elasticsearch:ListStatsEventRecords

-

elasticsearch:ListTags

用户在当前区域创建的所有标签。

elasticsearch:ModifyDeployMachine

更新一个collector安装的esc机器。

elasticsearch:PostEmonAck

-

elasticsearch:PostEmonCheckin

-

elasticsearch:PostEmonTryAlarmRule

调用PostEmonTryAlarmRule,发送测试的报警消息。

elasticsearch:QueryEmonMetrics

查询Elasticsearch实例的Grafana指标监控数据。

elasticsearch:ReinstallCollector

重试安装在创建时没有安装成功的采集器。

elasticsearch:RestartCollector

重启采集器,进行数据采集工作。

elasticsearch:StartCollector

启动采集器,进行数据采集。

elasticsearch:StopCollector

调用StopCollector,停止运行中的采集器。

elasticsearch:SuggestEmonMetric

-

elasticsearch:SuggestEmonMetricTagKey

-

elasticsearch:SuggestEmonMetricTagValue

-

elasticsearch:TagResources

-

elasticsearch:UntagResources

-

elasticsearch:UpdateCollector

修改采集器配置。

elasticsearch:UpdateCollectorName

调用UpdateCollectorName,修改采集器名称。

elasticsearch:UpdateComponentIndex

更新Elasticsearch的组合模板。

elasticsearch:UpdateEmonAlarmGroup

-

elasticsearch:UpdateEmonAlarmRule

-

elasticsearch:UpdateEmonContact

-

elasticsearch:UpdateEmonContactGroup

-

elasticsearch:UpdateEmonProject

-

elasticsearch:UpdateMigrationJob

-

elasticsearch:UpdateWhiteListTemplate

-

elasticsearch:ValidateSlrPermission

验证当前账户SLR权限。

elasticsearch:createInstance

-

对于不支持资源组授权的操作,授权时资源范围选择资源组级别将无效。如果仍需要RAM用户有上述操作权限,您需要创建自定义权限策略,授权时资源范围选择账号级别

image.png以下是两个自定义权限策略示例,您可以根据实际需要调整策略内容。

  • 允许不支持资源组级别授权的全部只读操作:Action中列举不支持资源组级别授权的所有只读操作。

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "elasticsearch:DescribeAckOperator",
            "elasticsearch:DescribeCollector",
            "elasticsearch:DescribeMigrationMergeConfig",
            "elasticsearch:DescribeVpcs",
            "elasticsearch:DescribeVswitches",
            "elasticsearch:GetClusterDataInformation",
            "elasticsearch:GetEmonAlarmEventList",
            "elasticsearch:GetEmonAlarmEventStatistics",
            "elasticsearch:GetEmonAlarmGroup",
            "elasticsearch:GetEmonAlarmGroupList",
            "elasticsearch:GetEmonAlarmRecordList",
            "elasticsearch:GetEmonAlarmRecordStatistics",
            "elasticsearch:GetEmonAlarmRecordStatisticsDistribute",
            "elasticsearch:GetEmonAlarmRule",
            "elasticsearch:GetEmonAlarmRuleList",
            "elasticsearch:GetEmonConsoleConfig",
            "elasticsearch:GetEmonContact",
            "elasticsearch:GetEmonContactGroup",
            "elasticsearch:GetEmonContactGroupList",
            "elasticsearch:GetEmonContactList",
            "elasticsearch:GetEmonGrafanaAlerts",
            "elasticsearch:GetEmonGrafanaDashboards",
            "elasticsearch:GetEmonProject",
            "elasticsearch:GetEmonProjectList",
            "elasticsearch:GetEmonUserConfig",
            "elasticsearch:GetMigrationJob",
            "elasticsearch:GetRegionConfiguration",
            "elasticsearch:GetSinleEmonUserConfig",
            "elasticsearch:GetWhiteListTemplates",
            "elasticsearch:ListAckClusters",
            "elasticsearch:ListAckNamespaces",
            "elasticsearch:ListApm",
            "elasticsearch:ListCollectors",
            "elasticsearch:ListDefaultCollectorConfigurations",
            "elasticsearch:ListDistinctEventInstanceIds",
            "elasticsearch:ListEcsInstances",
            "elasticsearch:ListEventRecords",
            "elasticsearch:ListInstanceHistoryEvents",
            "elasticsearch:ListMigrationJobs",
            "elasticsearch:ListNodes",
            "elasticsearch:ListStatsEventRecords",
            "elasticsearch:ListTags",
            "elasticsearch:QueryEmonMetrics",
            "elasticsearch:SuggestEmonMetric",
            "elasticsearch:SuggestEmonMetricTagKey",
            "elasticsearch:SuggestEmonMetricTagValue"
          ],
          "Resource": "*"
        }
      ]
    }
    
  • 允许不支持资源组级别授权的全部操作:Action中列举不支持资源组级别授权的全部操作。

    {
      "Version": "1",
      "Statement": [
        {
          "Effect": "Allow",
          "Action": [
            "elasticsearch:ActivePhone",
            "elasticsearch:AddWhiteListTemplate",
            "elasticsearch:AttachMigrationJob",
            "elasticsearch:CreateCollector",
            "elasticsearch:CreateComponentIndex",
            "elasticsearch:CreateEmonAlarmGroup",
            "elasticsearch:CreateEmonAlarmRule",
            "elasticsearch:CreateEmonContact",
            "elasticsearch:CreateEmonContactGroup",
            "elasticsearch:CreateEmonContactGroupContact",
            "elasticsearch:CreateEmonProject",
            "elasticsearch:CreateMigrationJob",
            "elasticsearch:DeleteCollector",
            "elasticsearch:DeleteEmonAlarmGroup",
            "elasticsearch:DeleteEmonAlarmRule",
            "elasticsearch:DeleteEmonProject",
            "elasticsearch:DeleteMigrationJobResource",
            "elasticsearch:DeleteWhiteListTemplate",
            "elasticsearch:DescribeAckOperator",
            "elasticsearch:DescribeCollector",
            "elasticsearch:DescribeMigrationMergeConfig",
            "elasticsearch:DescribeVpcs",
            "elasticsearch:DescribeVswitches",
            "elasticsearch:DisableEmonAlarmRule",
            "elasticsearch:DisableEmonContact",
            "elasticsearch:DisableEmonContactGroup",
            "elasticsearch:EnableEmonAlarmRule",
            "elasticsearch:EnableEmonContact",
            "elasticsearch:EnbaleEmonContactGroup",
            "elasticsearch:FeedbackReport",
            "elasticsearch:GetClusterDataInformation",
            "elasticsearch:GetEmonAlarmEventList",
            "elasticsearch:GetEmonAlarmEventStatistics",
            "elasticsearch:GetEmonAlarmGroup",
            "elasticsearch:GetEmonAlarmGroupList",
            "elasticsearch:GetEmonAlarmRecordList",
            "elasticsearch:GetEmonAlarmRecordStatistics",
            "elasticsearch:GetEmonAlarmRecordStatisticsDistribute",
            "elasticsearch:GetEmonAlarmRule",
            "elasticsearch:GetEmonAlarmRuleList",
            "elasticsearch:GetEmonConsoleConfig",
            "elasticsearch:GetEmonContact",
            "elasticsearch:GetEmonContactGroup",
            "elasticsearch:GetEmonContactGroupList",
            "elasticsearch:GetEmonContactList",
            "elasticsearch:GetEmonGrafanaAlerts",
            "elasticsearch:GetEmonGrafanaDashboards",
            "elasticsearch:GetEmonProject",
            "elasticsearch:GetEmonProjectList",
            "elasticsearch:GetEmonUserConfig",
            "elasticsearch:GetMigrationJob",
            "elasticsearch:GetRegionConfiguration",
            "elasticsearch:GetSinleEmonUserConfig",
            "elasticsearch:GetWhiteListTemplates",
            "elasticsearch:InitCustomModel",
            "elasticsearch:InitializeOperationRole",
            "elasticsearch:InstallAckOperator",
            "elasticsearch:ListAckClusters",
            "elasticsearch:ListAckNamespaces",
            "elasticsearch:ListApm",
            "elasticsearch:ListCollectors",
            "elasticsearch:ListDefaultCollectorConfigurations",
            "elasticsearch:ListDistinctEventInstanceIds",
            "elasticsearch:ListEcsInstances",
            "elasticsearch:ListEventRecords",
            "elasticsearch:ListInstanceHistoryEvents",
            "elasticsearch:ListMigrationJobs",
            "elasticsearch:ListNodes",
            "elasticsearch:ListStatsEventRecords",
            "elasticsearch:ListTags",
            "elasticsearch:ModifyDeployMachine",
            "elasticsearch:PostEmonAck",
            "elasticsearch:PostEmonCheckin",
            "elasticsearch:PostEmonTryAlarmRule",
            "elasticsearch:QueryEmonMetrics",
            "elasticsearch:ReinstallCollector",
            "elasticsearch:RestartCollector",
            "elasticsearch:StartCollector",
            "elasticsearch:StopCollector",
            "elasticsearch:SuggestEmonMetric",
            "elasticsearch:SuggestEmonMetricTagKey",
            "elasticsearch:SuggestEmonMetricTagValue",
            "elasticsearch:TagResources",
            "elasticsearch:UntagResources",
            "elasticsearch:UpdateCollector",
            "elasticsearch:UpdateCollectorName",
            "elasticsearch:UpdateComponentIndex",
            "elasticsearch:UpdateEmonAlarmGroup",
            "elasticsearch:UpdateEmonAlarmRule",
            "elasticsearch:UpdateEmonContact",
            "elasticsearch:UpdateEmonContactGroup",
            "elasticsearch:UpdateEmonProject",
            "elasticsearch:UpdateMigrationJob",
            "elasticsearch:UpdateWhiteListTemplate",
            "elasticsearch:ValidateSlrPermission",
            "elasticsearch:createInstance"
          ],
          "Resource": "*"
        }
      ]
    }
    
重要

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

常见问题

如何查看当前资源属于哪个资源组?

  • 方式一:单击资源名称,进入资源的详情页面,即可查看到当前资源的资源组。

  • 方式二:登录资源管理控制台,单击资源中心 > 资源搜索,在左侧选择目标资源所属账号(默认为当前账号),通过筛选条件定位目标资源,即可查看其所属资源组。

如何查看当前产品在某个资源组下的所有资源?

  • 方式一:登录资源管理控制台,单击资源中心 > 资源搜索,然后在左侧的资源所属账号(默认为当前账号)下选择单击目标资源组名称,最后在右侧的选择资源类型中选择当前产品,即可查看当前产品在某个资源组下的所有资源。

  • 方式二:登录资源管理控制台,单击资源组 > 资源组,然后找到目标资源组,单击其所在行的操作列下的资源管理,最后在资源管理页面上方的产品下拉框中选择当前产品,即可查看当前产品在某个资源组下的所有资源。

如何批量修改多个资源的资源组?

登录资源管理控制台,单击资源组 > 资源组,在目标资源组所在行的操作列下,单击资源管理以进入资源管理页面。通过筛选条件定位多个目标资源,批量勾选第一列的复选框后单击下方转移资源组,并按页面提示完成资源组修改。