Saltack 針對用戶進行權限控制

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. 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
相關文章
相關標籤/搜索