Salt 權限控制


1、 client_acl 配置使用html

1.1 client_acl概述python

開啓對系統上非root的系統用戶在master上執行特殊的模塊,這些模塊名能夠使用正則表達式進行表示,不能指定對那些minion執行命令。執行命令只須要切換到具體的用戶便可,不須要認證。web

1.2開啓配置正則表達式

建立test用戶並設置密碼,此處的test用戶爲Linux系統用戶。shell

開啓方式:vim /etc/salt/mastervim

client_acl:
  test:
    - test.ping
    - cmd.*


以上配置解釋:app

test用戶只能執行test.ping和cmd模塊的命令。this

重啓salt-master服務:service salt-master restartspa

1.3驗證配置結果rest

進入test帳戶:

su test

執行命令查看結果:

[test@deletedevweb01 root]$ salt \* test.ping 
[WARNING ] Failed to open log file, do you have permission to write
 to /var/log/salt/master?


以上錯誤,代表test用戶沒有寫log權限,解決方式:把test用戶加到root用戶組,並對root用戶組賦予/var/log/salt/master 文件的寫權限

usermod -a -G root test
chmod g+w /var/log/salt/master


配置完成再執行命令

[test@deletedevweb01 salt]$ salt \* test.ping
deletesitweb01:
    True
deletedevweb03:
    True
[test@deletedevweb01 salt]$ salt \* cmd.run "echo test"
deletedevweb02:
    test
deletesitweb01:
    test


執行沒有被賦予權限的模塊命令

[test@deletedevweb01 salt]$ salt \* state.sls test
Failed to authenticate, is this user permitted to execute commands?


2、 client_acl_blacklist 配置使用

2.1 client_acl_blacklist概述

用戶或模塊黑名單,限制用戶執行salt命令的權限。不能對root用戶限制全部模塊的命令。

2.2開啓配置

建立dytest用戶並設置密碼,此處的dytest用戶爲Linux系統用戶。把dytest用戶加到root用戶組,並對root用戶組賦予/var/log/salt/master 文件的寫權限

開啓方式:vim /etc/salt/master

client_acl_blacklist:
  users:
    - dytest
  modules:
    - cmd


重啓salt-master服務:

service salt-master restart


以上配置解釋:對於dytest用戶不能執行cmd模塊的全部命令。

2.3驗證配置結果

進入dytest用戶:

su dytest


執行命令查看結果:

[dytest@deletedevweb01 salt]$ salt \* cmd.run 「echo hello」
Failed to authenticate, is this user permitted to execute commands?


執行限制外的模塊命令

[dytest@deletedevweb01 salt]$ salt \deletedevapp01 test.ping 
 deletedevapp01:
     True


3、 external_auth 權限配置使用

3.1 external_auth概述

salt 擴展認證 PAM,能夠利用PAM 認證機制對系統帳戶作出功能操做上的限制

  1. 1.   認證用戶不容許使用root

  2. 2.   能夠限制認證用戶可以使用的功能模塊

  3. 3.   能夠限定認證用戶可管理的主機

官方文檔:http://docs.saltstack.com/topics/eauth/index.html

 

3.2配置

建立 salt 用戶並設置密碼,此處的salt用戶爲Linux系統用戶。

vim /etc/salt/master
external_auth:
  pam:
    salt:
      - '*'


 

此處使用PAM認證方式認證。PAM的英文全稱是Pluggable Authentication Module系統,即此程序是有關執行用戶鑑別和賬號維護的服務。鑑別部分一般經過一(合法性)質詢-迴應的交互來完成的。使用PAM,管理員能夠經過不重編輯鑑定程序來定製一些使用方法。

PAM有四部分組成,第一部分是libpam,是實現PAM API的庫,第二部分是PAM配置文件,/etc/pam.conf,第三部分有一套動態可裝載兩進位對象組成,經常用來調用一些處理實際鑑別(authentication)工做的服務模塊。最後模塊是使用PAM API的系統命令組成,如login,us,ftp,telnet,etc...

 

3.3驗證配置結果

salt PAM 認證用戶 只能經過 「 -a pam 」 參數才能使用

會提示登錄用戶,輸入密碼,若是正確返回結果,說明pam認證已經生效

實例 :

vim /etc/salt/master
external_auth:
   pam:
     salt:
       - '*'                       #全部模塊
     dytest:
       - pillar.*                  #pillar模塊
       - cmd.run                   # cum.run 模塊
     test:
       - '*dev*':                  # 主機配置規則
 
         - test.ping               # Salt 模塊


以上配置的解釋:

·         salt 用戶可管理全部主機,使用全部salt功能模塊

·         dytest 用戶只能管理部分主機,僅能使用test.ping模塊

·         test 用戶只能管理部分主機,僅能使用test.ping模塊

 

執行查看結果:

[salt@deletedevweb01 root]$ salt \* test.ping -a pam
username: salt 
password: 
[WARNING ] Failed to open log file, do you have permission to write 
to /var/log/salt/master?


以上錯誤,代表test用戶沒有寫log權限,解決方式,把test用戶加到root用戶組,並對root用戶組賦予/var/log/salt/master 文件的寫權限

 

[salt@deletedevapp01 salt]$ salt \* test.ping -a pam
 username: salt
 password: 
 deletedevapp01:
     True
 deletepredb01:
     True


實例1: 以salt用戶爲例,認證用戶必須打開PAM 參數才能操做

失敗操做:

[salt@deletedevapp01 salt]$ salt \* test.ping -a pam
 username: dytest
 password: 
 Failed to authenticate, is this user permitted to execute commands?


成功操做:

[salt@deletedevapp01 salt]$ salt \* cmd.run "echo hello" -a pam
 username: dytest
 password: 
 deletedevapp01:
     hello
 deletepredb01:
     hello


實例2:以salt用戶爲例,執行未受權模塊被拒絕

[salt@deletedevapp01 salt]$ salt -a pam '*' state.highstate
username: dytest
password:
Failed to authenticate, is this user permitted to execute commands?


實例3: 以test用戶爲例,操做未受權主機被拒絕 
失敗操做

[salt@deletedevapp01 salt]$ salt \* test.ping -a pam
 username: test
 password: 
 Failed to authenticate, is this user permitted to execute commands?


成功操做

[salt@deletedevapp01 salt]$ salt \deletedevapp01 test.ping -a pam
 username: test
 password:   
 fun: test.ping
 deletedevapp01:
     True
相關文章
相關標籤/搜索