1、 client_acl 配置使用php
1.1 client_acl概述html
開啓對系統上非root的系統用戶在master上執行特殊的模塊,這些模塊名可使用正則表達式進行表示,不能指定對那些minion執行命令。執行命令只須要切換到具體的用戶便可,不須要認證。python
1.2開啓配置nginx
建立test用戶並設置密碼,此處的test用戶爲Linux系統用戶。web
開啓方式:vim /etc/salt/master正則表達式
client_acl:
test: - test.ping - cmd.*
以上配置解釋:shell
test用戶只能執行test.ping和cmd模塊的命令。vim
重啓salt-master服務:service salt-master restartruby
1.3驗證配置結果bash
進入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. 認證用戶不容許使用root
2. 能夠限制認證用戶可以使用的功能模塊
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