博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Salt 权限控制
阅读量:5958 次
发布时间:2019-06-19

本文共 3978 字,大约阅读时间需要 13 分钟。

hot3.png

一、 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 testchmod g+w /var/log/salt/master

配置完成再执行命令

[test@deletedevweb01 salt]$ salt \* test.pingdeletesitweb01:    Truedeletedevweb03:    True[test@deletedevweb01 salt]$ salt \* cmd.run "echo test"deletedevweb02:    testdeletesitweb01:    test

执行没有被赋予权限的模块命令

[test@deletedevweb01 salt]$ salt \* state.sls testFailed 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/masterexternal_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/masterexternal_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 pamusername: 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.highstateusername: dytestpassword: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

转载于:https://my.oschina.net/u/2006667/blog/424997

你可能感兴趣的文章
C# 将MSMQ消息转换成Json格式 【优化】
查看>>
传纸条(一)(双线程dp)
查看>>
bootstrap精简教程
查看>>
【转】c++继承:公有、私有、保护
查看>>
实现经常使用的配置文件/初始化文件读取的一个C程序
查看>>
Intellij idea断点 Debugger slow: Method breakpoints my dramatically slow down debugging
查看>>
第一个JSP程序
查看>>
ubuntu16.4中开启vncserver进行远程桌面
查看>>
shell-IF判断
查看>>
【转】Maven实战(九)---模块聚合和继承
查看>>
CloudSim介绍和使用
查看>>
VC++ 获取当前模块的路径(dll/exe)
查看>>
Shell命令_Cron使用
查看>>
POJ2425 A Chess Game[博弈论 SG函数]
查看>>
深入Spring:自定义注解加载和使用
查看>>
计划的定义与要素
查看>>
LR报错Error -27780: [GENERAL_MSG_CAT_SSL_ERROR]connect to host "XXX.XXX.com" failed解决方法
查看>>
mysql 索引B-Tree类型对索引使用的生效和失效情况详解
查看>>
获取表信息(MSSQL)
查看>>
css3 transform 旋转div
查看>>