如果阿里云Elasticsearch的系统策略无法满足您的需求,可以通过创建自定义策略实现精细化权限管理。本文介绍如何创建自定义权限策略,并提供实例和标签权限策略配置示例供您参考。

背景信息

阿里云Elasticsearch支持以下系统策略:
系统策略名称 说明
AliyunElasticsearchReadOnlyAccess 只读访问阿里云Elasticsearch或Logstash的权限,用于只读用户。
AliyunElasticsearchFullAccess 管理阿里云Elasticsearch、Logstash或Beats的权限,用于管理员。
说明 以上权限仅为RAM用户授予阿里云Elasticsearch、Logstash、Beats或Serverless的权限,不包括云监控和Tags权限,使用时需自定义对应权限。您也可以参见权限策略示例配置。

前提条件

了解权限策略语言的基本结构和语法。详细信息,请参见权限策略语法和结构

注意事项

自定义策略仅在账号级别生效,不会在资源组级别生效。如果您想对特定RAM用户仅显示控制台的特定资源,那么可以采用通过资源组授权特定实例的方式实现。

操作步骤

  1. 使用阿里云账号登录RAM控制台
  2. 在左侧导航栏,选择权限管理 > 权限策略
  3. 权限策略页面,单击创建权限策略
  4. 创建权限策略页面,单击脚本编辑页签。
  5. 输入权限策略内容,然后单击继续编辑基本信息
    您也可以单击右侧的导入系统策略,根据页面提示导入已存在的系统权限策略,并在此基础上修改为自定义的权限策略。策略内容区域
    根据需求输入具体的权限脚本,例如:
    • 访问阿里云账号的专有网络VPC(Virtual Private Cloud)权限。
      "elasticsearch:DescribeVpcs","elasticsearch:DescribeVSwitches"
      说明 策略内容请参见系统模板AliyunVPCReadOnlyAccess
    • RAM用户订单权限。
      ["bss:PayOrder"] 
      说明 策略内容请参见系统模板AliyunBSSOrderAccess
    • API对应权限。
      Method URI Resource Action
      GET /instances instances/* ListInstance
      POST /instances instances/* CreateInstance
      GET /instances/instanceId instances/instanceId DescribeInstance
      DELETE /instances/instanceId instances/instanceId DeleteInstance
      POST /instances/instanceId/actions/restart instances/instanceId RestartInstance
      PUT /instances/instanceId instances/instanceId UpdateInstance
    • Elasticsearch Serverless相关权限
      • AliyunElasticsearchServerlessReadOnlyAccess(只读访问阿里云Elasticsearch Serverless服务的权限,用于只读用户)的授权策略内容:
        {
          "Version": "1",
          "Statement": [
            {
              "Action": [
                "es-serverless:List*",
                "es-serverless:Describe*",
                "es-serverless:Get*"
              ],
              "Resource": "*",
              "Effect": "Allow"
            },
            {
              "Action": "es-serverless:ListAccessTokens",
              "Resource": "*",
              "Effect": "Deny"
            }
          ]
        }
      • AliyunElasticsearchServerlessFullAccess(管理阿里云Elasticsearch Serverless服务的权限,用于管理员)的授权策略内容:
        {
          "Version": "1",
          "Statement": [
            {
              "Effect": "Allow",
              "Action": "es-serverless:*",
              "Resource": "*"
            }
          ]
        }

    具体示例请参见权限策略示例

  6. 输入权限策略名称备注
  7. 检查并优化权限策略内容。
    • 基础权限策略优化

      系统会对您添加的权限策略语句自动进行基础优化。基础权限策略优化会完成以下任务:

      • 删除不必要的条件。
      • 删除不必要的数组。
    • 可选:高级权限策略优化

      您可以将鼠标悬浮在可选:高级策略优化上,单击执行,对权限策略内容进行高级优化。高级权限策略优化功能会完成以下任务:

      • 拆分不兼容操作的资源或条件。
      • 收缩资源到更小范围。
      • 去重或合并语句。
  8. 单击确定

权限策略示例

重要
在使用以下代码示例前,请将代码中的以下信息替换成您自己对应的信息:
  • <yourAccountId>:需要替换为您自己的阿里云账号ID,不支持通配符*。阿里云账号ID的获取方法:鼠标移至控制台右上角的用户头像上,即可查看到账号ID
  • <yourInstanceId>:需要替换为待授权的目标实例ID,不支持通配符*。获取方式,请参见查看实例的基本信息
  • 管理员权限策略
    以下示例用于为账号ID为<yourAccountId>的阿里云账号下的某个RAM用户授权,使该用户拥有所有Elasticsearch实例的所有操作权限。
    {
        "Statement": [
            {
                "Action": [
                    "elasticsearch:*"
                ],
                "Effect": "Allow",
                "Resource": "*"
            },
            {
                "Action": [
                    "cms:*"
                ],
                "Effect": "Allow",
                "Resource": "*"
            },
            {
                "Action": "bss:PayOrder",
                "Effect": "Allow",
                "Resource": "*"
            },
           {
              "Action": "ims:*",
              "Effect": "Allow",
              "Resource": "acs:ims::<yourAccountId>:application/*"
            },
            {
                "Action": "ram:CreateServiceLinkedRole",
                "Resource": "*",
                "Effect": "Allow",
                "Condition": {
                    "StringEquals": {
                        "ram:ServiceName": [
                            "collector.elasticsearch.aliyuncs.com",
                            "ops.elasticsearch.aliyuncs.com"
                        ]
                    }
                }
            }
        ],
        "Version": "1"
    }
  • 操作特定实例权限策略
    以下示例用于为账号ID为<yourAccountId>的阿里云账号下的某个RAM用户授权,使该用户拥有以下权限:
    • 底层云监控权限
    • 给指定实例授予所有Elasticsearch相关操作的权限。
    • 查看实例列表的权限。
    • 查看所有实例标签的权限。
    • 查看采集器列表的权限。
    说明 因为阿里云Elasticsearch控制台的实例管理页面,集成调用了Beats采集器、阿里云高级监控和标签Tags等外部依赖接口,所以在对特定实例授权时,需要参见以下配置示例,授予依赖权限。
    {
        "Statement": [
            {
                "Action": [
                    "elasticsearch:*"
                ],
                "Effect": "Allow",
                "Resource": "acs:elasticsearch:*:<yourAccountId>:instances/<yourInstanceId>"
            },
            {
                "Action": [
                    "cms:DescribeActiveMetricRuleList",
                    "cms:ListAlarm",
                    "cms:QueryMetricList"
                ],
                "Effect": "Allow",
                "Resource": "*"
            },
            {
                "Action": [
                    "elasticsearch:ListTags"
                ],
                "Effect": "Allow",
                "Resource": "acs:elasticsearch:*:<yourAccountId>:tags/*"
            },
            {
                "Action": [
                    "elasticsearch:ListInstance",
                    "elasticsearch:ListSnapshotReposByInstanceId"
                ],
                "Effect": "Allow",
                "Resource": "acs:elasticsearch:*:<yourAccountId>:instances/*"
            },
            {
                "Action": [
                    "elasticsearch:ListLogstash"
                ],
                "Effect": "Allow",
                "Resource": "acs:elasticsearch:*:<yourAccountId>:logstashes/*"
            }, 
            {
                "Action": [
                    "elasticsearch:ListCollectors"
                ],
                "Effect": "Allow",
                "Resource": "acs:elasticsearch:*:<yourAccountId>:collectors/*"
            },
            {
                "Action": [
                    "elasticsearch:GetEmonProjectList"
                ],
                "Effect": "Allow",
                "Resource": "acs:elasticsearch:*:*:emonProjects/*"
            },
            {
                "Action": [
                    "elasticsearch:getEmonUserConfig"
                ],
                "Effect": "Allow",
                "Resource": "acs:elasticsearch:*:*:emonUserConfig/*"
            }
        ],
        "Version": "1"
    }
表 1. Action说明
Action 说明
[
  "cms:DescribeActiveMetricRuleList",
  "cms:ListAlarm",
  "cms:QueryMetricList"
]
云监控权限,具体说明如下:
  • cms:DescribeActiveMetricRuleList:获取阿里云账号已开通云监控服务的产品。
  • cms:ListAlarm:查询指定或全部报警规则设置。
  • cms:QueryMetricList:查询一段时间内指定产品实例的监控数据。
"bss:PayOrder"
支付订单的权限。授权后,RAM用户可在购买实例时,支付订单。
"ims:*"
RAM用户使用高级监控报警时,需要授予ims权限。您也可以通过阿里云账号登录高级监控报警控制台,手动对RAM用户授权,具体操作请参见步骤一:查看和配置可视化监控
说明 IMS(Identity Management Service)为身份管理服务。主要管理的对象为阿里云RAM用户相关的身份Meta及认证相关的配置。同时,IMS提供了标准协议,能够应用于外部IDP控制台认证打通和用户数据同步的场景。
[
  "elasticsearch:DescribeVpcs",
  "elasticsearch:DescribeVSwitches"
]
访问阿里云账号的专有网络和虚拟交换机列表权限。授权后,在购买实例时,RAM用户可选择阿里云账号创建的专有网络和虚拟交换机。
重要 设置RAM用户购买实例的权限时,需要同时配置["bss:PayOrder"] Action,否则购买时,会出现无权限的报错。
[
  "elasticsearch:*"
]
操作Elasticsearch实例的所有权限。授权后,RAM用户可对所有或指定实例执行任意操作。
重要 elasticsearch:*不包括高级监控告警、云监控和Tags权限,这些权限需要单独设置。如果没有设置,进入包含这些功能的页面后,会出现无权限的错误。但确认后,可以在该页面中使用其他已授权的功能。
[
  "elasticsearch:ListTags"
]
查看Elasticsearch实例标签的权限。授权后,RAM用户可查看Elasticsearch实例的标签。
[
  "elasticsearch:ListInstance",
  "elasticsearch:ListSnapshotReposByInstanceId" 
]
  • elasticsearch:ListInstance:查看Elasticsearch实例列表的权限。
  • elasticsearch:ListSnapshotReposByInstanceId:查看跨集群OSS仓库设置列表权限。
[
  "elasticsearch:ListCollectors"
]
查看Beats采集器列表的权限。授权后,RAM用户可查看控制台中Beats采集器列表。
[
  "elasticsearch:ListLogstash"
]
查看Logstash实例列表的权限。授权后,RAM用户可在实例列表页面中,查看对应地域下包含的所有Logstash实例。
[
  "elasticsearch:GetEmonProjectList"
]
获取集群监控项目列表的权限。
重要 此Action需要与["elasticsearch:getEmonUserConfig"] Action一起使用,否则在进入集群监控页面时,会提示无权限。
[
  "elasticsearch:getEmonUserConfig"
]
获取集群监控用户配置的权限。
表 2. Effect说明
Effect 说明
Allow 允许RAM用户执行Action中设置的操作。
Deny 拒绝RAM用户执行Action中设置的操作。
表 3. Resource说明

Resource的详细说明请参见授权资源

参数 说明
* 所有实例资源。
<yourInstanceId> 指定的实例资源,需要替换为待授权的目标实例ID。获取方式,请参见查看实例的基本信息

后续步骤

自定义策略创建完成后,使用阿里云账号在RAM控制台中或通过RAM SDK对RAM用户授权。具体操作,请参见为RAM用户授权