如果Elasticsearch的系統策略無法滿足您的需求,可以通過建立自訂策略實現精微調權限管理。本文介紹如何建立自訂權限原則,並提供執行個體和標籤權限原則配置樣本供您參考。
背景資訊
Elasticsearch支援以下系統策略:
系統策略名稱稱 | 說明 |
AliyunElasticsearchReadOnlyAccess | 唯讀訪問Elasticsearch或Logstash的許可權,用於唯讀使用者。 |
AliyunElasticsearchFullAccess | 管理Elasticsearch、Logstash或Beats的許可權,用於管理員。 |
以上許可權不包括CloudMonitor和Tags許可權,使用時需自訂對應許可權,具體配置請參見特定執行個體的權限原則。
前提條件
瞭解權限原則語言的基本結構和文法。詳細資料,請參見權限原則文法和結構。
注意事項
自訂策略僅在帳號層級生效,不會在資源群組層級生效。如果您想對特定RAM使用者僅顯示控制台的特定資源,可以採用通過資源群組授權特定執行個體的方式實現。
操作步驟
建立自訂權限原則,請參見通過指令碼編輯模式建立自訂權限原則。根據業務需求輸入具體的許可權指令碼,您也可以根據頁面提示匯入已存在的系統權限原則,並在此基礎上修改為自訂的權限原則。
許可權指令碼樣本:
訪問阿里雲帳號的Virtual Private Cloud(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": "ram:CreateServiceLinkedRole",
"Resource": "*",
"Effect": "Allow",
"Condition": {
"StringEquals": {
"ram:ServiceName": [
"collector.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/*"
}
],
"Version": "1"
}
Action | 說明 |
| CloudMonitor許可權,具體說明如下:
|
| 支付訂單的許可權。授權後,RAM使用者可在購買執行個體時,支付訂單。 |
| 訪問阿里雲帳號的專用網路和虛擬交換器列表許可權。授權後,在購買執行個體時,RAM使用者可選擇阿里雲帳號建立的專用網路和虛擬交換器。 重要 設定RAM使用者購買執行個體的許可權時,需要同時配置 |
| 操作Elasticsearch執行個體的所有許可權。授權後,RAM使用者可對所有或指定執行個體執行任意操作。 重要
|
| 查看Elasticsearch執行個體標籤的許可權。授權後,RAM使用者可查看Elasticsearch執行個體的標籤。 |
|
|
| 查看Beats採集器列表的許可權。授權後,RAM使用者可查看控制台中Beats採集器列表。 |
| 查看Logstash執行個體列表的許可權。授權後,RAM使用者可在執行個體列表頁面中,查看對應地區下包含的所有Logstash執行個體。 |
Effect | 說明 |
Allow | 允許RAM使用者執行Action中設定的操作。 |
Deny | 拒絕RAM使用者執行Action中設定的操作。 |
參數 | 說明 |
* | 所有執行個體資源。 |
<yourInstanceId> | 指定的執行個體資源,需要替換為待授權的目標執行個體ID。擷取方式,請參見查看執行個體的基本資料。 |
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使用者授權。