文档

创建自定义权限策略

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

背景信息

阿里云Elasticsearch支持以下系统策略:

系统策略名称

说明

AliyunElasticsearchReadOnlyAccess

只读访问阿里云Elasticsearch或Logstash的权限,用于只读用户。

AliyunElasticsearchFullAccess

管理阿里云Elasticsearch、Logstash或Beats的权限,用于管理员。

说明

以上权限不包括Serverless、云监控和Tags权限,使用时需自定义对应权限,具体配置请参见特定实例的权限策略Elasticsearch Serverless的权限策略

前提条件

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

注意事项

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

操作步骤

创建自定义权限策略,请参见通过脚本编辑模式创建自定义权限策略。根据业务需求输入具体的权限脚本,您也可以根据页面提示导入已存在的系统权限策略,并在此基础上修改为自定义的权限策略。

权限脚本示例:

  • 访问阿里云账号的专有网络VPC(Virtual Private Cloud)权限。

    "elasticsearch:DescribeVpcs","elasticsearch:DescribeVSwitches"
    {
      "Version": "1",
      "Statement": [
        {
          "Action": [
            "elasticsearch:DescribeVpcs",
            "elasticsearch:DescribeVSwitches"
          ],
          "Resource": "*",
          "Effect": "Allow"
        }
      ]
    }
  • RAM用户订单权限。

    {
      "Version": "1",
      "Statement": [
        {
          "Action": [
            "bss:PayOrder"
          ],
          "Resource": "*",
          "Effect": "Allow"
        }
      ]
    }

更多权限策略示例,请参见权限策略示例

权限策略示例

重要

在使用以下代码示例前,请将代码中的以下信息替换成您自己对应的信息:

  • <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的详细说明请参见Elasticsearch授权资源

参数

说明

*

所有实例资源。

<yourInstanceId>

指定的实例资源,需要替换为待授权的目标实例ID。获取方式,请参见查看实例的基本信息

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": "*"
        }
      ]
    }

API的权限

Elasticsearch API权限的Resource和Action如下表所示。

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

后续步骤

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

  • 本页导读 (1)