當(dāng)您需要設(shè)置集群、索引、字段或其他操作的訪問權(quán)限時(shí),可以通過Elasticsearch X-Pack的RBAC(Role-based Access Control)機(jī)制,為自定義角色分配權(quán)限,并將角色分配給用戶,實(shí)現(xiàn)權(quán)限管控。Elasticsearch提供了多種內(nèi)置角色,您可以在內(nèi)置角色的基礎(chǔ)上擴(kuò)展自定義角色,以滿足特定需求。本文介紹幾種常見的角色配置,以及如何通過角色配置實(shí)現(xiàn)權(quán)限管控。

背景信息

操作步驟

說明 本文僅提供6.7版本和7.x版本的操作步驟,其他版本操作可能略有不同,具體以實(shí)際界面為準(zhǔn)。
  1. 創(chuàng)建角色。
    1. 登錄Kibana控制臺(tái),根據(jù)提示進(jìn)入Kibana主頁。
      具體步驟,請(qǐng)參見登錄Kibana控制臺(tái)
    2. 進(jìn)入配置管理頁面。
      • 6.7版本:在左側(cè)導(dǎo)航欄,單擊Management
      • 7.x版本:在頁面左上角,單擊展開圖標(biāo)圖標(biāo),然后選擇Management > Stack Management
    3. Security區(qū)域,單擊Roles
    4. 單擊Create role,然后輸入相關(guān)參數(shù)配置。
      填寫角色信息
      參數(shù)說明
      Role name角色名稱。
      Cluster privileges定義集群的操作權(quán)限,例如查看集群健康度和Settings、創(chuàng)建快照等。詳細(xì)信息,請(qǐng)參見Cluster privileges
      Run As privileges扮演該角色的用戶,可選。如果此處未選擇,可在創(chuàng)建用戶時(shí),為該用戶指定對(duì)應(yīng)角色。具體操作,請(qǐng)參見創(chuàng)建用戶
      Index privileges定義索引的操作權(quán)限,例如只讀查看所有索引的所有字段(索引名設(shè)置為*后,授予read索引),索引名支持通配符(*)及正則表達(dá)式。詳細(xì)信息,請(qǐng)參見Indices privileges。配置時(shí),需要填寫以下參數(shù):
      • Indices:選擇對(duì)應(yīng)的索引模式。例如heartbeat-*。
        說明 如果沒有索引模式,請(qǐng)先在Management頁面,單擊Kibana中的Index Pattern,按照頁面提示創(chuàng)建一個(gè)索引模式。
      • Privileges:為角色分配的權(quán)限。
      • Granted fields (optional):授權(quán)的字段,可選。
      Kibana privileges定義Kibana操作權(quán)限。
      重要 Kibana 7.0以下版本僅支持Base privileges,默認(rèn)為所有空間授權(quán);7.0及以上版本在Base privileges的基礎(chǔ)上,還支持Feature privileges,即對(duì)Kibana特定功能授權(quán),需要指定Kibana空間。
      創(chuàng)建角色時(shí),需要為該角色分配對(duì)應(yīng)權(quán)限。本文的角色權(quán)限配置示例如下:
    5. 單擊Create role
  2. 創(chuàng)建用戶,并為該用戶分配對(duì)應(yīng)角色,為其授予該角色擁有的權(quán)限。
    1. 進(jìn)入配置管理頁面。
      • 6.7版本:在左側(cè)導(dǎo)航欄,單擊Management
      • 7.x版本:在頁面左上角,單擊展開圖標(biāo)圖標(biāo),然后選擇Management > Stack Management
    2. Security區(qū)域,單擊Users
    3. 單擊Create new user,然后輸入相關(guān)參數(shù)配置。
      Create new user
      參數(shù)說明
      Username用戶名稱,用來登錄Kibana控制臺(tái)。自定義輸入。
      Password該用戶的密碼,用來登錄Kibana控制臺(tái)。自定義輸入。
      Confirm password確認(rèn)密碼,與Password保持一致。
      Full name用戶全名,自定義輸入。
      Email address用戶的Email地址。
      Roles為用戶分配角色。選擇已創(chuàng)建的角色,或系統(tǒng)預(yù)置的角色,可選擇多個(gè)。
      重要創(chuàng)建角色時(shí),如果您已選擇了對(duì)應(yīng)用戶,此處依然需要選擇角色,否則登錄時(shí)會(huì)報(bào)錯(cuò)。
    4. 單擊Create user
  3. 通過自定義用戶登錄Kibana控制臺(tái),執(zhí)行相關(guān)操作驗(yàn)證權(quán)限是否生效。

配置索引只讀權(quán)限

場(chǎng)景描述

為普通用戶授予指定索引的只讀權(quán)限。該用戶可通過Kibana查詢索引數(shù)據(jù),但無權(quán)訪問集群。

角色配置

索引只讀權(quán)限
表 1. 權(quán)限說明
權(quán)限類型權(quán)限Key權(quán)限Value描述
Index privilegesindiceskibana_sample_data_logs指定索引名稱,支持索引全名、別名、通配符及正則表達(dá)式。詳細(xì)信息,請(qǐng)參見Indices Privileges
privilegesread設(shè)置索引只讀權(quán)限。只讀權(quán)限包括count、explain、get、mget、scripts、search、scroll等操作權(quán)限。詳細(xì)信息,請(qǐng)參見privileges-list-indices
Granted fields (optional)*索引字段。*表示索引的所有字段。
Kibana privilegesprivilegesread為所有空間授予Kibana只讀權(quán)限。默認(rèn)為none,表示所有空間無權(quán)限訪問Kibana。
重要 Kibana 7.0以下版本僅支持Base privileges,默認(rèn)為所有空間授權(quán);7.0及以上版本在Base privileges的基礎(chǔ)上,還支持Feature privileges,即對(duì)Kibana特定功能授權(quán),需要指定Kibana空間。

驗(yàn)證

  • 通過普通用戶登錄Kibana控制臺(tái),執(zhí)行讀索引命令,返回結(jié)果正常。
    GET /kibana_sample_data_logs/_search
  • 執(zhí)行寫索引命令,返回未授權(quán)的錯(cuò)誤信息。
    POST /kibana_sample_data_logs/_doc/1
    {
        "productName": "testpro",
        "annual_rate": "3.22%",
        "describe": "testpro"
    }
    驗(yàn)證只讀權(quán)限

配置Dashboard操作權(quán)限

場(chǎng)景描述

授予普通用戶指定索引的只讀權(quán)限,且可查看該索引對(duì)應(yīng)的Dashboard數(shù)據(jù)。

角色配置

創(chuàng)建用戶時(shí),為該用戶分配角色:read-indexkibana_dashboard_only_userDashboard角色配置
  • read-index:自定義角色示例,需要您自行創(chuàng)建。該角色擁有指定索引的只讀權(quán)限。
  • kibana_dashboard_only_user:Kibana內(nèi)置角色,該角色擁有查看指定索引Dashboard數(shù)據(jù)的權(quán)限。
    說明
    • 在Kibana 7.0及以上版本中,kibana_dashboard_only_user角色已經(jīng)被廢棄。如果要查看指定索引的Dashboard,只需要為該索引配置讀權(quán)限,詳細(xì)信息,請(qǐng)參見配置索引只讀權(quán)限
    • kibana_dashboard_only_user角色與自定義角色配合使用可應(yīng)用于很多場(chǎng)景。如果您僅需為自定義角色設(shè)定Dashboards only roles功能,可在Management頁面的Kibana區(qū)域,單擊Advanced Settings,找到Dashboard部分,綁定自定義角色(默認(rèn)是kibana_dashboard_only_user角色)。

驗(yàn)證

通過普通用戶登錄Kibana控制臺(tái),可查看對(duì)應(yīng)索引的Dashboard大盤。查看Dashboard大盤

配置索引讀寫和集群只讀權(quán)限

場(chǎng)景描述

為普通用戶授予指定索引的讀、寫和刪除權(quán)限,以及集群和Kibana的只讀權(quán)限。

角色配置

索引讀寫和集群只讀權(quán)限
表 2. 權(quán)限說明
權(quán)限類型權(quán)限Key權(quán)限Value描述
Cluster privilegescluster monitor集群只讀權(quán)限。例如查看集群的健康度、狀態(tài)、熱線程、節(jié)點(diǎn)信息、阻塞的任務(wù)等。
Index privilegesindicesheartbeat-*,library*指定索引名稱,支持索引全名、別名、通配符及正則表達(dá)式。詳細(xì)信息,請(qǐng)參見roles-indices-priv
privilegesread設(shè)置索引只讀權(quán)限。只讀權(quán)限包括count、explain、get、mget、scripts、search、scroll等操作權(quán)限。詳細(xì)信息,請(qǐng)參見privileges-list-indices
create_index創(chuàng)建索引權(quán)限。如果在創(chuàng)建索引時(shí),定義了索引別名,還需要授予索引manage權(quán)限。
重要 索引別名需要同時(shí)滿足indices下定義的匹配規(guī)則。
view_index_metadata索引元數(shù)據(jù)的只讀權(quán)限,包括aliases、aliases exists、get index、exists、field mappings、mappings、search shards、type exists、validate、warmers、settings和ilm。
write對(duì)文檔執(zhí)行所有寫操作的權(quán)限,包括index、update、delete、bulk和更新mapping操作。與create和index權(quán)限相比,該權(quán)限的覆蓋面更大。
monitor監(jiān)控所有操作的權(quán)限,包括index recovery、segments info、index stats和status。
delete刪除索引文檔權(quán)限。
delete_index刪除索引權(quán)限。
granted fields*待授權(quán)的索引字段,*表示索引的所有字段。
Kibana privilegesprivilegesread為所有空間授予Kibana只讀權(quán)限。默認(rèn)為none,表示所有空間無權(quán)限訪問Kibana。
重要 Kibana 7.0以下版本僅支持Base privileges,默認(rèn)為所有空間授權(quán);7.0及以上版本在Base privileges的基礎(chǔ)上,還支持Feature privileges,即對(duì)Kibana特定功能授權(quán),需要指定Kibana空間。

驗(yàn)證

通過普通用戶登錄Kibana控制臺(tái),執(zhí)行如下命令均正常。驗(yàn)證
  • 查看集群中所包含索引的詳細(xì)信息
    GET /_cat/indices?v
  • 查看集群狀態(tài)
    GET /_cluster/stats
  • 查詢product_info索引中的數(shù)據(jù)
    GET /product_info/_search
  • 查詢product_info1索引中的數(shù)據(jù)
    GET /product_info1/_search
  • 通過POST方式,向kibana_sample_data_logs索引中寫入數(shù)據(jù)
    POST /kibana_sample_data_logs/_doc/2
    {
        "productName": "testpro",
        "annual_rate": "3.22%",
        "describe": "testpro"
    }
  • 通過PUT方式,向product_info2索引中寫入數(shù)據(jù)
    PUT /product_info2/_doc/1
    {
        "productName": "testpro",
        "annual_rate": "3.22%",
        "describe": "testpro"
    }
  • 刪除product_info索引
    DELETE product_info

配置Discover Read索引數(shù)據(jù)權(quán)限

場(chǎng)景描述

為普通用戶授予Kibana Discover的只讀和索引只讀權(quán)限,該用戶可以進(jìn)入Kibana的Discover頁面查看該索引的數(shù)據(jù)。

角色配置

Discover Read權(quán)限配置
表 3. 權(quán)限說明
權(quán)限類型權(quán)限Key權(quán)限Value描述
Cluster privilegesPrivilegesmonitor授予所有集群的只讀操作權(quán)限,例如集群健康和狀態(tài)、熱線程、節(jié)點(diǎn)信息、節(jié)點(diǎn)和集群統(tǒng)計(jì)信息以及待處理的集群任務(wù)。
Index privilegesIndiceskibana_sample_data_ecommerce指定索引名稱,支持索引全名、別名、通配符及正則表達(dá)式。詳細(xì)信息,請(qǐng)參見Indices Privileges
Privilegesread設(shè)置索引只讀權(quán)限。只讀權(quán)限包括count、explain、get、mget、scripts、search、scroll等操作權(quán)限。詳細(xì)信息,請(qǐng)參見privileges-list-indices
Granted fields (optional)*索引字段。*表示索引的所有字段。
Kibana privilegesPrivilegesread為所有空間授予Kibana只讀權(quán)限。默認(rèn)為none,表示所有空間無權(quán)限訪問Kibana。
重要 Kibana 7.0以下版本僅支持Base privileges,默認(rèn)為所有空間授權(quán);7.0及以上版本在Base privileges的基礎(chǔ)上,還支持Feature privileges,即對(duì)Kibana特定功能授權(quán),需要指定Kibana空間,例如授予Discover頁面的只讀權(quán)限。

驗(yàn)證

通過普通用戶登錄Kibana控制臺(tái),可通過Discover頁面查看指定索引的數(shù)據(jù)。查看Discover頁面

配置創(chuàng)建刪除索引、增刪改查文檔以及修改索引配置的權(quán)限

場(chǎng)景描述

為普通用戶授予創(chuàng)建刪除索引的權(quán)限、增刪改查文檔的權(quán)限以及修改索引配置的權(quán)限,同時(shí)禁止用戶登錄Kibana控制臺(tái)。

角色配置

角色配置
表 4. 權(quán)限說明
權(quán)限類型權(quán)限Key權(quán)限Value描述
Index privilegesIndicestest*指定索引名稱,支持索引全名、別名、通配符及正則表達(dá)式。詳細(xì)信息,請(qǐng)參見Indices Privileges
Privilegescreate_index創(chuàng)建索引的權(quán)限。如果創(chuàng)建索引請(qǐng)求中包含添加到索引的別名,則需要同時(shí)授予manage權(quán)限。
delete_index刪除索引的權(quán)限。
index索引和更新文檔的權(quán)限,以及更新索引mappings的權(quán)限。
delete刪除文檔的權(quán)限。
read索引只讀權(quán)限。只讀權(quán)限包括count、explain、get、mget、scripts、search、scroll等操作權(quán)限。詳細(xì)信息,請(qǐng)參見privileges-list-indices
manage索引管理權(quán)限。管理權(quán)限包括aliases、analyze、cache clear、close、delete,、exists、flush、mapping、open、force merge、refresh、settings、search shards、templates、validate等操作權(quán)限。
Granted fields (optional)*索引字段。*表示索引的所有字段。
Kibana privilegesPrivilegesnone設(shè)置為none(默認(rèn)),表示所有空間無權(quán)限訪問Kibana。
重要 Kibana 7.0以下版本僅支持Base privileges,默認(rèn)為所有空間授權(quán);7.0及以上版本在Base privileges的基礎(chǔ)上,還支持Feature privileges,即對(duì)Kibana特定功能授權(quán),需要指定Kibana空間。

驗(yàn)證

  • 通過curl命令訪問實(shí)例,創(chuàng)建索引然后刪除。創(chuàng)建與刪除索引
  • 修改索引配置,本示例將索引數(shù)據(jù)設(shè)置為冷數(shù)據(jù)。修改索引配置
  • 對(duì)文檔進(jìn)行增刪改查。文檔增刪改查
  • 用戶登錄Kibana控制臺(tái)。
    提示用戶無權(quán)限。登錄Kibana控制臺(tái)