如果阿里云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用戶授權。