• Saltack 针对用户进行权限控制


    一、 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
  • 相关阅读:
    sql server 中将由逗号“,”分割的一个字符串,转换为一个表,并应用于 in 条件,方法和调用
    JavaScript Invalid Date Verify
    Jquery总结
    java中的异常和处理
    联系 管理 Hibernate4+Spring JPA+SpringMVC+Volecity搭建web应用(三)
    Hibernate4+Spring JPA+SpringMVC+Volecity搭建web应用(二)
    Hibernate4+Spring JPA+SpringMVC+Volecity搭建web应用(一)
    Spring 框架整理
    java 三大框架 介绍
    struts2 拦截器的注册在strut.xml中
  • 原文地址:https://www.cnblogs.com/shawhe/p/11008781.html
Copyright © 2020-2023  润新知