SearchGuard權(quán)限配置

主要配置文件

searchguard 主要有5個(gè)配置文件,在plugins/search-guard-2/sgconfig 下:
1、sg_config.yml:主配置文件不需要做改動。
2、sg_internal_users.yml:本地用戶文件,定義用戶密碼以及對應(yīng)的權(quán)限。
3、sg_roles.yml:權(quán)限配置文件
4、sg_roles_mapping.yml:定義用戶的映射關(guān)系
5、sg_action_groups.yml:定義權(quán)限

使用sgadmin配置SearchGuard

Searchguard配置(包括用戶、權(quán)限與角色)是存儲在Elasticsearch集群的索引中的。這允許配置熱加載,更新配置后不需要重啟Elasticsearch節(jié)點(diǎn),并且不需要在每個(gè)節(jié)點(diǎn)上放置配置文件。
使用sgadmin工具將配置文件中的配置信息加載到searchguard配置索引中。sgadmin需要通過管理員證書來執(zhí)行命令。管理員證書授予對集群的完全訪問權(quán)限,包括更改Search Guard配置索引。
需要在elasticsearch.yml中配置管理員證書DN,如:

searchguard.authcz.admin_dn:
  - CN=kirk,OU=client,O=client,L=test, C=DE
  - CN=spock,OU=client,O=client,L=test, C=DE

注意:不要使用節(jié)點(diǎn)證書作為管理員證書,不然可能導(dǎo)致意外的結(jié)果。
使用命令如下:

./sgadmin.sh -ts <path/to/truststore> -tspass <truststore password>  \
  -ks <path/to/keystore> -kspass <keystore password>  \
  -cd ../sgconfig -icl -nhnv

這樣將sgconfig目錄中的所有配置信息推送到集群。由于生成密鑰庫和信任庫具有默認(rèn)密碼changeit,所以我們可以省略-kspass并-tspass。
讓配置立即生效
searchguard默認(rèn)將通過身份認(rèn)證的用戶、角色及權(quán)限緩存一個(gè)小時(shí),若更新配置后想立即生效,可使用如下命令:

./sgadmin.sh -rl -ts ... -tspass ... -ks ... -kspass ...

命令行詳細(xì)參數(shù)請參考:http://floragunncom.github.io/search-guard-docs/sgadmin.html

配置認(rèn)證和授權(quán)

searchguard配有可插拔的認(rèn)證和授權(quán)模塊。根據(jù)用例和基礎(chǔ)架構(gòu),您可以使用一個(gè)或多個(gè)身份驗(yàn)證和授權(quán)模塊,如:
Search Guard內(nèi)部用戶數(shù)據(jù)庫
LDAP和Active Directory
Kerberos
JSON Web令牌
代理驗(yàn)證
認(rèn)證和授權(quán)模塊的主要配置文件是sg_config.yml。詳細(xì)配置請參考:http://floragunncom.github.io/search-guard-docs/configuration_auth.html

配置內(nèi)部用戶與角色

searchguard配置有內(nèi)部用戶數(shù)據(jù)庫。如果我們沒有任何外部認(rèn)證系統(tǒng)(如LDAP或Active Directory),則可以使用此用戶數(shù)據(jù)庫。用戶、密碼hash和角色等存儲在集群內(nèi)部searchguard配置索引中。內(nèi)部用戶配置文件為:sg_internal_users.yml
語法如下:

<username>:
  hash: <hashed password>
  roles:
    - <rolename>
    - <rolename>

如:

admin:
  hash: $2a$12$xZOcnwYPYQ3zIadnlQIJ0eNhX1ngwMkTN.oMwkKxoGvDVPn4/6XtO
  roles:
    - readall
    - writeall

analyst:
  hash: $2a$12$ae4ycwzwvLtZxwZ82RmiEunBbIPiAmGZduBAjKN0TXdwQFtCwARz2
  roles:
    - readall

請注意,用戶名不能包含“.”,如果需要帶“.”的用戶名,請使用如下username屬性:

<username>:
  username: username.with.dots
  hash: ...

使用plugins/search-guard-5/tools/hash.sh生成密碼hash值,格式如下:

./hash.sh -p passwd

實(shí)例:

[root@localhost tools]$ ./hash.sh -p 123456
$2a$12$BUflGkOD5bpHePu1uTTTh.wXYJ8fLRku05zFqDHdglNgqekNWITK2

詳細(xì)參考:http://floragunncom.github.io/search-guard-docs/configuration_internalusers.html

將用戶、后端角色與主機(jī)映射到searchguard角色

根據(jù)配置,可以使用以下數(shù)據(jù)將請求分配給一個(gè)或多個(gè)searchguard角色:
username
已驗(yàn)證用戶的名稱
backend roles
由授權(quán)后端(如LDAP,JWT或內(nèi)部用戶數(shù)據(jù)庫)獲取的角色
hostname / IP
請求源自的主機(jī)名或IP
Common name
發(fā)送的客戶端證書DN
配置文件為sg_roles_mapping.yml,配置格式如下:

<Search Guard role name>:
  users:
    - <username>
    - ...
  backendroles:
    - <rolename>
    - ...
  hosts:
    - <hostname>
    - ...

實(shí)例:

sg_read_write:
  users:
    - janedoe
    - johndoe
  backendroles:
    - management
    - operations
    - 'cn=ldaprole,ou=groups,dc=example,dc=com'
  hosts:
    - "*.devops.company.com"

一個(gè)請求可以分配給一個(gè)或多個(gè)Search Guard角色。如果一個(gè)請求被映射到多個(gè)角色,這些角色的權(quán)限被組合。

角色與權(quán)限

searchguard角色與權(quán)限在sg_roles.xml文件中定義。我們可以根據(jù)需要定義角色,并將權(quán)限與其關(guān)聯(lián),格式如下:

<sg_role_name>:
  cluster:
    - '<action group or single permission>'
    - ...
  indices:
    '<indexname or alias>':
      '<document type>':  
        - '<action group or single permission>'
        - ...
      '<document type>':  
        - '<action group or single permission>'
        - ...
      _dls_: '<Document level security query>'
      _fls_:
        - '<field level security fiels>'
        - ...
    tenants:
      <tenantname>: <RW|RO>
      <tenantname>: <RW|RO>   

dlsfls用于配置文檔和字段級別權(quán)限,詳情參考:http://floragunncom.github.io/search-guard-docs/dlsfls.html
tenants用于配置Kibana多租戶模式,詳情參考:http://floragunncom.github.io/search-guard-docs/multitenancy.html
集群級權(quán)限
cluster用于定義集群級權(quán)限。集群級權(quán)限用于允許/不允許影響整個(gè)集群的操作,例如查詢集群運(yùn)行狀況或節(jié)點(diǎn)統(tǒng)計(jì)信息。它也可以用來允許/禁用影響多個(gè)索引的操作,如mget、msearch、bulk請求。
實(shí)例:

sg_finance:
  cluster:
    - CLUSTER_COMPOSITE_OPS_RO
  indices:
    ...

索引級權(quán)限
indices項(xiàng)用于設(shè)置允許/不允許單個(gè)索引的操作。也可以分別為索引中的每個(gè)文檔類型定義權(quán)限。
配置索引名稱與文檔類型名稱時(shí)都支持通配符的形式:

  1. 星號(*)將匹配任意字符序列,包括空序列,如:logstash-*將匹配logstash-20170822、logstash-等
  2. 問號(?)將匹配任何單個(gè)字符(但不是空字符),如:?kibana將匹配.kibana
  3. 正則表達(dá)式,格式'/<java regex>/',如:'/ \ S * /'將匹配任何非空格字符
    注意:索引名稱不能包含點(diǎn)。而是使用?通配符,如同?kibana。
    實(shí)例:
sg_kibana:
  cluster:
    - CLUSTER_COMPOSITE_OPS_RO    
  indices:
    '?kibana':
      '*':
        - INDICES_ALL

用戶名替換
對于索引名及別名<indexname or alias>允許引用用戶名${user_name},用戶名為已認(rèn)證用戶用戶名。實(shí)例:

sg_own_index:
  cluster:
    - CLUSTER_COMPOSITE_OPS
  indices:
    '${user_name}':
      '*':
        - INDICES_ALL

使用權(quán)限組分配權(quán)限
searchguard具有權(quán)限組的功能,且為給角色分配權(quán)限的首選方式。searchguard預(yù)定義了一批權(quán)限組,覆蓋了絕大部分用例。實(shí)例:

myrole:
  cluster:
    - CLUSTER_COMPOSITE_OPS_RO    
  indices:
    'index1':
      '*':
        - SEARCH
    'index2':
      '*':
        - CRUD

使用單一權(quán)限
如果您需要應(yīng)用更細(xì)粒度的權(quán)限模式,searchguard還支持為角色分配單個(gè)權(quán)限。
單一權(quán)限以cluster:或indices:開始,后跟REST風(fēng)格的路徑,進(jìn)一步定義權(quán)限授權(quán)訪問的確切操作。
例如,此權(quán)限將授予在索引上執(zhí)行搜索的權(quán)限:

indices:data/read/search

如下限授予寫入索引的權(quán)限:

indices:data/write/index

如下在集群上授予顯示集群運(yùn)行狀況的權(quán)限:

cluster:monitor/health

單一權(quán)限也支持通配符,如下授予索引上所有管理操作權(quán)限:

indices:admin/*

Elasticsearch詳細(xì)權(quán)限定義請參考:https://www.elastic.co/guide/en/shield/2.1/reference.html#ref-actions-list
預(yù)定義角色請參考:http://floragunncom.github.io/search-guard-docs/configuration_roles_permissions.html

使用與定義權(quán)限組

一個(gè)權(quán)限組是一個(gè)具有明確命名的權(quán)限集合,在文件sg_action_group.xml中定義。權(quán)限組可以嵌套定義。格式如下:

<action group name>:
    - '<permission or action groups>'
    - '<permission or action group>'
    - ...

預(yù)定義權(quán)限組請參考:http://floragunncom.github.io/search-guard-docs/configuration_action_groups.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 227,428評論 6 531
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 98,024評論 3 413
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 175,285評論 0 373
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 62,548評論 1 307
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 71,328評論 6 404
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 54,878評論 1 321
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 42,971評論 3 439
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 42,098評論 0 286
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 48,616評論 1 331
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 40,554評論 3 354
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 42,725評論 1 369
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,243評論 5 355
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 43,971評論 3 345
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,361評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,613評論 1 280
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 51,339評論 3 390
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 47,695評論 2 370

推薦閱讀更多精彩內(nèi)容