如果阿里云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"
}
Action | 说明 |
| 云监控权限,具体说明如下:
|
| 支付订单的权限。授权后,RAM用户可在购买实例时,支付订单。 |
| RAM用户使用高级监控报警时,需要授予ims权限。您也可以通过阿里云账号登录高级监控报警控制台,手动对RAM用户授权,具体操作请参见步骤一:查看和配置可视化监控。 说明 IMS(Identity Management Service)为身份管理服务。主要管理的对象为阿里云RAM用户相关的身份Meta及认证相关的配置。同时,IMS提供了标准协议,能够应用于外部IDP控制台认证打通和用户数据同步的场景。 |
| 访问阿里云账号的专有网络和虚拟交换机列表权限。授权后,在购买实例时,RAM用户可选择阿里云账号创建的专有网络和虚拟交换机。 重要 设置RAM用户购买实例的权限时,需要同时配置 |
| 操作Elasticsearch实例的所有权限。授权后,RAM用户可对所有或指定实例执行任意操作。 重要
|
| 查看Elasticsearch实例标签的权限。授权后,RAM用户可查看Elasticsearch实例的标签。 |
|
|
| 查看Beats采集器列表的权限。授权后,RAM用户可查看控制台中Beats采集器列表。 |
| 查看Logstash实例列表的权限。授权后,RAM用户可在实例列表页面中,查看对应地域下包含的所有Logstash实例。 |
| 获取集群监控项目列表的权限。 重要 此Action需要与 |
| 获取集群监控用户配置的权限。 |
Effect | 说明 |
Allow | 允许RAM用户执行Action中设置的操作。 |
Deny | 拒绝RAM用户执行Action中设置的操作。 |
参数 | 说明 |
* | 所有实例资源。 |
<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用户授权。