saltstack的权限管理

lue 发布于 2014/12/15 17:27
阅读 3K+
收藏 1

@行者深蓝 你好,想跟你请教个问题:

之前曾看过你的关于saltstack权限管理的文章,有些问题想问一下

看到在你文章中,可以使用普通用户 在salt上面执行命令,但我测试时,使用普通用户执行时,就提示master的log日志权限问题,即使改了log的权限,在普通用户执行时就卡住,没有任何信息输出。

这种情况只能使用sudo去执行,但普通用户使用sudo执行后,本来想通过pam去控制权限这块,但普通用户在通过sudo,其实普通用户可以不需要带 -a pam 参数 就可以直接执行,并不会报错。

当前情况想控制权限这块就比较麻烦的。不知道你之前是否遇过类似的问题。

当前salt是以root运行,rpm包安装的,系统为rhel6.5

[root@salt ~]# rpm -qa|grep salt
salt-2014.7.0-3.el6.noarch
salt-master-2014.7.0-3.el6.noarch


加载中
1
lue
lue

问题已解决

管理方式:使用普通用户分发控制,其中通过pam模块的用户来限制权限范围。

     之前曾新建了一个salt普通用户,根据官网指引,确认了相关目录为755的权限后,

chmod 755 /var/cache/salt /var/cache/salt/master /var/cache/salt/master/jobs /var/run/salt /var/run/salt/master
     以及对salt普通用户开放了/var/log/salt目录和 /var/log/salt/master 日志文件的可写权限,
[root@salt ~]# ll -d /var/log/salt/
drwxrwxr-x 2 root root 4096 Dec 15 06:35 /var/log/salt/
[root@salt ~]# ll -d /var/log/salt/master 
-rw-rw-r-- 1 root root 86700 Dec 16 02:40 /var/log/salt/master
    同时需要在master配置文件/etc/salt/master ,定义:

client_acl:
  salt:
    - test.ping

  配置client_acl的意义,在于指定了使用哪个非root的普通用户可以执行的权限范围。即如上,允许salt用户,可以使用 test.ping 

     但在salt执行命令后,始终卡住无任何回应。考虑还是权限问题,因为通过sudo是正常的。后面将salt用户放到root组里面,

# usermod -G root salt
    并且同时保留root组对salt日志目录与文件的可写权限。这样调整后,普通用户就可以正常执行salt命令了。

[salt@salt ~]$ salt 'zk1' test.ping
zk1: True

   执行未指定的模块是不允许的 

[salt@salt ~]$ salt 'zk1' cmd.run 'date' 
Failed to authenticate!  This is most likely because this user is not permitted to execute commands, but there is a small possibility that a disk error occurred (check disk/inode usage).
为了管理权限划分,则通过pam来实现区分不同用户的权限范围。

在/etc/salt/master配置文件中添加pam用户及权限信息

external_auth:
  pam:
    liuyi:
      - cmd.*
   通过external_auth参数指定了使用pam模块,该系统已在系统级别加入了OpenLDAP, liuyi为Openldap中的账户,当然这里也可以使用系统本地用户,同时也指定了仅允许使用cmd模块。

[salt@salt ~]$ salt -a pam 'zk1' cmd.run 'date'
username: liuyi
password: 
zk1:
    Tue Dec 16 02:39:53 CST 2014
  通过salt命令执行时,指定 -a pam 参数来认证授权账户,将会提示输入用户名与密码。验证后,cmd模块即可执行。

[salt@salt ~]$ salt -a pam 'zk1' test.ping
username: liuyi
password: 
Failed to authenticate!  This is most likely because this user is not permitted to execute commands, but there is a small possibility that a disk error occurred (check disk/inode usage).
    若通过 -a pam 参数,想执行test.ping的指令,是不允许的。因为在配置文件中,授权给liuyi账户的权限只有cmd模块。

     系统管理员可以登录到统一的salt普通账户下,在执行分发操作时,验证的是属于系统管理员自己的LDAP账户与密码,并且在salt上也将系统管理员的LDAP的账户与权限范围做设置,这样就可以实现用户的权限管理。







0
行者深蓝
行者深蓝
他们的权限管理确实存在很多问题,后来我们也放弃使用他们的权限管理机制了!
lue
lue
我们这边想着日后部署维护管理上 简洁些,才想着去使用salt的,那你们后来使用什么方式来管理权限这块?
0
行者深蓝
行者深蓝
现在我们管理的方式是,服务端不放开权限,只开放仓库编辑权限,客戶端同步配置
lue
lue
问题已解决,谢谢~
返回顶部
顶部