一、 client_acl 配置使用

1.1 client_acl概述

开启对系统上非root的系统用户在master上执行特殊的模块,这些模块名可以使用正则表达式进行表示,不能指定对那些minion执行命令。执行命令只需要切换到具体的用户即可,不需要认证。

1.2开启配置

创建test用户并设置密码,此处的test用户为Linux系统用户。

开启方式:vim /etc/salt/master

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

以上配置解释:

test用户只能执行test.ping和cmd模块的命令。

重启salt-master服务:service salt-master restart

1.3验证配置结果

进入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?

二、 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

三、 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

Saltack 针对用户进行权限控制的更多相关文章

  1. Kafka SASL/SCRAM+ACL实现动态创建用户及权限控制

    kafka系列文章 第一章 linux单机安装kafka 第二章 kafka--集群安裝部署(自带zookeeper) 第三章 Kafka SASL/SCRAM+ACL实现动态创建用户及权限控制 Ka ...

  2. 使用JavaEE的ServerAuthModule模块和web.xml进行相应配置,实现对用户的权限控制

    ServerAuthModule这里不细说,可以自行百度. 重点在注释: <!-- 声明用于安全约束的角色 --> <security-role> <role-name& ...

  3. MongoDB3.x中添加用户和权限控制

    现在需要创建一个帐号,该账号需要有grant权限,即:账号管理的授权权限.注意一点,帐号是跟着库走的,所以在指定库里授权,必须也在指定库里验证(auth) ? 1 2 3 4 5 6 7 8 9 10 ...

  4. 简单的RBAC用户角色权限控制

    Java web项目中,无论项目是大是小,或多或少都会涉及到用户访问权限的控制,权限管理总体的设计思路就是,不该看的不看,不该做的不做!据我目前的了解,我所知道的几种实现访问权限控制的方式有: JQu ...

  5. kubernetes dashboard访问用户添加权限控制

    前面我们在kubernetes dashboard 升级之路一文中成功的将Dashboard升级到最新版本了,增加了身份认证功能,之前为了方便增加了一个admin用户,然后授予了cluster-adm ...

  6. springboot-29-security(二)用户角色权限控制

    本博客基于上一个http://www.cnblogs.com/wenbronk/p/7379865.html 增加了角色的权限表, 可以进行权限校验 一, 数据准备 1, 数据表建立 /* Navic ...

  7. Jenkins系列之-—04 配置用户和权限控制

    一.安装插件 插件名称:Role-based Authorization Strategy Role Strategy Plugin插件可以对构建的项目进行授权管理,让不同的用户管理不同的项目. 二. ...

  8. MySQL 初学笔记 ① -- MySQL用户登录权限控制

    1. MySQL 登录 MySQL -u username -p 2. MySQL 创建用户 use mysql //进入mysql 表 INSERT INTO user (Host,User,Pas ...

  9. mysql 用户管理 权限控制

    添加用户 insert into mysql.user(Host,User,Password) values("%","shenen",password(&qu ...

随机推荐

  1. 笨办法学Python

    打印:%r%r 与 %s 的区别就好比 repr() 函数处理对象与 str() 函数处理对象的差别.%s => str(),比较智能%r => repr(),处理较为简单和直接 from ...

  2. 001_keil仿真

    (一)参考文献:STM32F4 MDK5软件仿真 error : no 'read' permission  (二)转载: 问题描述 CPU:STM32F407MDK5软件模拟提示没有读写权限,只能一 ...

  3. Mysql注入绕过安全狗

    转载请加原文链接:https://www.cnblogs.com/Yang34/p/12055052.html 微信公众号:信Yang安全.同步更新,欢迎关注.文末有二维码. 正好最近在搞注入,昨天现 ...

  4. 3-STM32物联网开发WIFI(ESP8266)+GPRS(Air202)系统方案升级篇(HTTP介绍,TCP实现HTTP下载文件)

    https://www.cnblogs.com/yangfengwu/p/10357564.html 看了好多文章.....唉,还是自己亲自动手用网络监控软件测试吧 先看这个节安装WEB服务器.... ...

  5. 洛谷 P1351 联合权值 题解

    P1351 联合权值 题目描述 无向连通图 \(G\) 有 \(n\) 个点,\(n-1\) 条边.点从 \(1\) 到 \(n\) 依次编号,编号为 \(i\) 的点的权值为 \(W_i\)​,每条 ...

  6. CSS3之碰撞反弹动画无限运动

    示例代码如下: <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...

  7. c++ 题解

    43题 #include <random> #include <iostream> int main() { ][] = { {,,,}, {,,,}, {,,,}}; ; n ...

  8. USACO 2009 Feb 股票市场 Stock Market

    USACO 2009 Feb 股票市场 Stock Market Description 尽管奶牛们天生谨慎,她们仍然在住房抵押信贷市场中大受打击,现在她们准备在股市 上碰碰运气.贝西开挂了,她知道S ...

  9. 鱼塘钓鱼(fishing)(信息学奥赛一本通 1373)

    [问题描述] 有N个鱼塘排成一排(N<100),每个鱼塘中有一定数量的鱼,例如:N=5时,如下表: 即:在第1个鱼塘中钓鱼第1分钟内可钓到10条鱼,第2分钟内只能钓到8条鱼,……,第5分钟以后再 ...

  10. 龙贝格积分(c++)

    用龙贝格算法计算积分 #include <iostream> #include<cmath> #include <iomanip> using namespace  ...