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