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

前提条件

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

注意事项

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

操作步骤

  1. 使用阿里云账号登录RAM控制台
  2. 在左侧导航栏,选择权限管理 > 权限策略
  3. 权限策略页面,单击创建权限策略
  4. 创建权限策略页面,单击脚本编辑页签。
  5. 输入权限策略内容,然后单击继续编辑基本信息
    您也可以单击右侧的导入系统策略,根据页面提示导入已存在的系统权限策略,并在此基础上修改为自定义的权限策略。ES Serverless自定义权限策略
    根据需求输入具体的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"
          }
        ]
      }
      重要 需要排除获取安全Tokens接口权限(等效于集群读写权限)。
    • AliyunElasticsearchServerlessFullAccess(管理阿里云Elasticsearch Serverless服务的权限,用于管理员)的授权策略内容:
      {
        "Version": "1",
        "Statement": [
          {
            "Effect": "Allow",
            "Action": "es-serverless:*",
            "Resource": "*"
          }
        ]
      }

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

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

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

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

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

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

权限策略示例

完整控制台功能管理员权限策略

使RAM用户拥有所有Elasticsearch Serverless服务的所有操作权限,包括了Elasticsearch Serverless服务使用的Elasticsearch高级监控权限,是完整控制台功能管理员权限。
{
  "Version": "1",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": "es-serverless:*",
      "Resource": "*"
    },
    {
      "Effect": "Allow",
      "Action": [
        "elasticsearch:GetEmonProjectList",
        "elasticsearch:CreateEmonProject",
        "elasticsearch:QueryEmonMetrics"
      ],
      "Resource": "emonProjects/*"
    }
  ]
}

管控特定应用权限策略

{
  "Statement": [
    {
      "Action": [
        "es-serverless:*"
      ],
      "Effect": "Allow",
      "Resource": "acs:es-serverless:*:<yourAccountId>:apps/<appName>"
    },
    {
      "Effect": "Allow",
      "Action": "elasticsearch:QueryEmonMetrics",
      "Resource": "emonProjects/<projectId>"
    },
    {
      "Effect": "Allow",
      "Action": [
        "elasticsearch:GetEmonProjectList",
        "elasticsearch:CreateEmonProject"
      ],
      "Resource": "emonProjects/*"
    }
  ],
  "Version": "1"
}
以下参数需要替换为您自己的信息:
参数 说明
<yourAccountId> 需要替换为您自己的阿里云账号ID,不支持通配符*。阿里云账号ID的获取方法:鼠标移至控制台右上角的用户头像上,即可查看到账号ID
<appName> 需要替换为待授权的目标应用名称,不支持通配符*。获取方式,请参见查看应用详情
<projectId> GetEmonProjectList返回的与指定的应用关联的高级监控Project的ID。在指标监控的Grafana页面,CreateEmonProject接口用于为新用户创建一个Emon高级监控Project。

Action说明

Action 说明
[
  "es-serverless:*"
]
Elasticsearch Serverless的所有管控API权限。
重要 es-serverless:*不包括控制台外部依赖的权限,这些权限需要单独设置。如果没有设置,进入包含这些功能的页面后,会出现无权限的错误。
[
  "elasticsearch:GetEmonProjectList"
]
获取Elasticsearch Serverless应用控制台依赖的Emon高级监控项目列表的权限。
[
  "elasticsearch:CreateEmonProject"
]
在指标监控的Grafana页面,CreateEmonProject接口用于为新用户创建一个Emon高级监控Project。

Effect说明

Effect 说明
Allow 允许RAM用户执行Action中设置的操作。
Deny 拒绝RAM用户执行Action中设置的操作。

后续步骤

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