全部產品
Search
文件中心

Elasticsearch:通過Elasticsearch X-Pack角色管理實現使用者權限管控

更新時間:Jun 30, 2024

當您需要設定叢集、索引、欄位或其他動作的存取權限時,可以通過Elasticsearch X-Pack的RBAC(Role-based Access Control)機制,為自訂角色指派許可權,並將角色指派給使用者,實現許可權管控。Elasticsearch提供了多種內建角色,您可以在內建角色的基礎上擴充自訂角色,以滿足特定需求。本文介紹幾種常見的角色配置,以及如何通過角色配置實現許可權管控。

背景資訊

操作步驟

說明 本文僅提供6.7版本和7.x版本的操作步驟,其他版本操作可能略有不同,具體以實際介面為準。
  1. 建立角色。
    1. 登入Kibana控制台,根據提示進入Kibana首頁。
      具體步驟,請參見登入Kibana控制台
    2. 進入組態管理頁面。
      • 6.7版本:在左側導覽列,單擊Management
      • 7.x版本:在頁面左上方,單擊展開表徵圖表徵圖,然後選擇Management > Stack Management
    3. Security地區,單擊Roles
    4. 單擊Create role,然後輸入相關參數配置。
      填寫角色資訊
      參數說明
      Role name角色名稱。
      Cluster privileges定義叢集的操作許可權,例如查看叢集健康度和Settings、建立快照等。詳細資料,請參見Cluster privileges
      Run As privileges扮演該角色的使用者,可選。如果此處未選擇,可在建立使用者時,為該使用者指定對應角色。具體操作,請參見建立使用者
      Index privileges定義索引的操作許可權,例如唯讀查看所有索引的所有欄位(索引名設定為*後,授予read索引),索引名支援萬用字元(*)及Regex。詳細資料,請參見Indices privileges。配置時,需要填寫以下參數:
      • Indices:選擇對應的索引模式。例如heartbeat-*。
        說明 如果沒有索引模式,請先在Management頁面,單擊Kibana中的Index Pattern,按照頁面提示建立一個索引模式。
      • Privileges:為角色指派的許可權。
      • Granted fields (optional):授權的欄位,可選。
      Kibana privileges定義Kibana操作許可權。
      重要 Kibana 7.0以下版本僅支援Base privileges,預設為所有空間授權;7.0及以上版本在Base privileges的基礎上,還支援Feature privileges,即對Kibana特定功能授權,需要指定Kibana空間。
      建立角色時,需要為該角色指派對應許可權。本文的角色許可權配置樣本如下:
    5. 單擊Create role
  2. 建立使用者,並為該使用者指派對應角色,為其授予該角色擁有的許可權。
    1. 進入組態管理頁面。
      • 6.7版本:在左側導覽列,單擊Management
      • 7.x版本:在頁面左上方,單擊展開表徵圖表徵圖,然後選擇Management > Stack Management
    2. Security地區,單擊Users
    3. 單擊Create new user,然後輸入相關參數配置。
      Create new user
      參數說明
      Username使用者名稱稱,用來登入Kibana控制台。自訂輸入。
      Password該使用者的密碼,用來登入Kibana控制台。自訂輸入。
      Confirm password確認密碼,與Password保持一致。
      Full name使用者全名,自訂輸入。
      Email address使用者的Email地址。
      Roles為使用者指派角色。選擇已建立的角色,或系統預置的角色,可選擇多個。
      重要 建立角色時,如果您已選擇了對應使用者,此處依然需要選擇角色,否則登入時會報錯。
    4. 單擊Create user
  3. 通過自訂使用者登入Kibana控制台,執行相關操作驗證許可權是否生效。

配置索引唯讀許可權

情境描述

為普通使用者授予指定索引的唯讀許可權。該使用者可通過Kibana查詢索引資料,但無權訪問叢集。

角色配置

索引唯讀許可權
表 1. 許可權說明
權限類別型許可權Key許可權Value描述
Index privilegesindiceskibana_sample_data_logs指定索引名稱,支援索引全名、別名、萬用字元及Regex。詳細資料,請參見Indices Privileges
privilegesread設定索引唯讀許可權。唯讀許可權包括count、explain、get、mget、scripts、search、scroll等操作許可權。詳細資料,請參見privileges-list-indices
Granted fields (optional)*索引欄位。*表示索引的所有欄位。
Kibana privilegesprivilegesread為所有空間授予Kibana唯讀許可權。預設為none,表示所有空間無許可權訪問Kibana。
重要 Kibana 7.0以下版本僅支援Base privileges,預設為所有空間授權;7.0及以上版本在Base privileges的基礎上,還支援Feature privileges,即對Kibana特定功能授權,需要指定Kibana空間。

驗證

  • 通過普通使用者登入Kibana控制台,執行讀索引命令,返回結果正常。
    GET /kibana_sample_data_logs/_search
  • 執行寫索引命令,返回未授權的錯誤資訊。
    POST /kibana_sample_data_logs/_doc/1
    {
        "productName": "testpro",
        "annual_rate": "3.22%",
        "describe": "testpro"
    }
    驗證唯讀許可權

配置Dashboard操作許可權

情境描述

授予普通使用者指定索引的唯讀許可權,且可查看該索引對應的Dashboard資料。

角色配置

建立使用者時,為該使用者指派角色:read-indexkibana_dashboard_only_userDashboard角色配置
  • read-index:自訂角色樣本,需要您自行建立。該角色擁有指定索引的唯讀許可權。
  • kibana_dashboard_only_user:Kibana內建角色,該角色擁有查看指定索引Dashboard資料的許可權。
    說明
    • 在Kibana 7.0及以上版本中,kibana_dashboard_only_user角色已經被廢棄。如果要查看指定索引的Dashboard,只需要為該索引配置讀許可權,詳細資料,請參見配置索引唯讀許可權
    • kibana_dashboard_only_user角色與自訂角色配合使用可應用於很多情境。如果您僅需為自訂角色設定Dashboards only roles功能,可在Management頁面的Kibana地區,單擊Advanced Settings,找到Dashboard部分,綁定自訂角色(預設是kibana_dashboard_only_user角色)。

驗證

通過普通使用者登入Kibana控制台,可查看對應索引的Dashboard大盤。查看Dashboard大盤

配置索引讀寫和叢集唯讀許可權

情境描述

為普通使用者授予指定索引的讀、寫和刪除許可權,以及叢集和Kibana的唯讀許可權。

角色配置

索引讀寫和叢集唯讀許可權
表 2. 許可權說明
權限類別型許可權Key許可權Value描述
Cluster privilegescluster monitor叢集唯讀許可權。例如查看叢集的健康度、狀態、熱線程、節點資訊、阻塞的任務等。
Index privilegesindicesheartbeat-*,library*指定索引名稱,支援索引全名、別名、萬用字元及Regex。詳細資料,請參見roles-indices-priv
privilegesread設定索引唯讀許可權。唯讀許可權包括count、explain、get、mget、scripts、search、scroll等操作許可權。詳細資料,請參見privileges-list-indices
create_index建立索引許可權。如果在建立索引時,定義了索引別名,還需要授予索引manage許可權。
重要 索引別名需要同時滿足indices下定義的匹配規則。
view_index_metadata索引中繼資料的唯讀許可權,包括aliases、aliases exists、get index、exists、field mappings、mappings、search shards、type exists、validate、warmers、settings和ilm。
write對文檔執行所有寫操作的許可權,包括index、update、delete、bulk和更新mapping操作。與create和index許可權相比,該許可權的覆蓋面更大。
monitor監控所有操作的許可權,包括index recovery、segments info、index stats和status。
delete刪除索引文檔許可權。
delete_index刪除索引許可權。
granted fields*待授權的索引欄位,*表示索引的所有欄位。
Kibana privilegesprivilegesread為所有空間授予Kibana唯讀許可權。預設為none,表示所有空間無許可權訪問Kibana。
重要 Kibana 7.0以下版本僅支援Base privileges,預設為所有空間授權;7.0及以上版本在Base privileges的基礎上,還支援Feature privileges,即對Kibana特定功能授權,需要指定Kibana空間。

驗證

通過普通使用者登入Kibana控制台,執行如下命令均正常。驗證
  • 查看叢集中所包含索引的詳細資料
    GET /_cat/indices?v
  • 查看叢集狀態
    GET /_cluster/stats
  • 查詢product_info索引中的資料
    GET /product_info/_search
  • 查詢product_info1索引中的資料
    GET /product_info1/_search
  • 通過POST方式,向kibana_sample_data_logs索引中寫入資料
    POST /kibana_sample_data_logs/_doc/2
    {
        "productName": "testpro",
        "annual_rate": "3.22%",
        "describe": "testpro"
    }
  • 通過PUT方式,向product_info2索引中寫入資料
    PUT /product_info2/_doc/1
    {
        "productName": "testpro",
        "annual_rate": "3.22%",
        "describe": "testpro"
    }
  • 刪除product_info索引
    DELETE product_info

配置Discover Read索引資料許可權

情境描述

為普通使用者授予Kibana Discover的唯讀和索引唯讀許可權,該使用者可以進入Kibana的Discover頁面查看該索引的資料。

角色配置

Discover Read許可權配置
表 3. 許可權說明
權限類別型許可權Key許可權Value描述
Cluster privilegesPrivilegesmonitor授予所有叢集的唯讀操作許可權,例如叢集健康和狀態、熱線程、節點資訊、節點和叢集統計資訊以及待處理的叢集任務。
Index privilegesIndiceskibana_sample_data_ecommerce指定索引名稱,支援索引全名、別名、萬用字元及Regex。詳細資料,請參見Indices Privileges
Privilegesread設定索引唯讀許可權。唯讀許可權包括count、explain、get、mget、scripts、search、scroll等操作許可權。詳細資料,請參見privileges-list-indices
Granted fields (optional)*索引欄位。*表示索引的所有欄位。
Kibana privilegesPrivilegesread為所有空間授予Kibana唯讀許可權。預設為none,表示所有空間無許可權訪問Kibana。
重要 Kibana 7.0以下版本僅支援Base privileges,預設為所有空間授權;7.0及以上版本在Base privileges的基礎上,還支援Feature privileges,即對Kibana特定功能授權,需要指定Kibana空間,例如授予Discover頁面的唯讀許可權。

驗證

通過普通使用者登入Kibana控制台,可通過Discover頁面查看指定索引的資料。查看Discover頁面

配置建立刪除索引、增刪改查文檔以及修改索引配置的許可權

情境描述

為普通使用者授予建立刪除索引的許可權、增刪改查文檔的許可權以及修改索引配置的許可權,同時禁止使用者登入Kibana控制台。

角色配置

角色配置
表 4. 許可權說明
權限類別型許可權Key許可權Value描述
Index privilegesIndicestest*指定索引名稱,支援索引全名、別名、萬用字元及Regex。詳細資料,請參見Indices Privileges
Privilegescreate_index建立索引的許可權。如果建立索引請求中包含添加到索引的別名,則需要同時授予manage許可權。
delete_index刪除索引的許可權。
index索引和更新文檔的許可權,以及更新索引mappings的許可權。
delete刪除文檔的許可權。
read索引唯讀許可權。唯讀許可權包括count、explain、get、mget、scripts、search、scroll等操作許可權。詳細資料,請參見privileges-list-indices
manage索引系統管理權限。系統管理權限包括aliases、analyze、cache clear、close、delete,、exists、flush、mapping、open、force merge、refresh、settings、search shards、templates、validate等操作許可權。
Granted fields (optional)*索引欄位。*表示索引的所有欄位。
Kibana privilegesPrivilegesnone設定為none(預設),表示所有空間無許可權訪問Kibana。
重要 Kibana 7.0以下版本僅支援Base privileges,預設為所有空間授權;7.0及以上版本在Base privileges的基礎上,還支援Feature privileges,即對Kibana特定功能授權,需要指定Kibana空間。

驗證

  • 通過curl命令訪問執行個體,建立索引然後刪除。建立與刪除索引
  • 修改索引配置,本樣本將索引資料設定為冷資料。修改索引配置
  • 對文檔進行增刪改查。文檔增刪改查
  • 使用者登入Kibana控制台。
    提示使用者無許可權。登入Kibana控制台