设为首页 收藏本站
查看: 1675|回复: 0

[经验分享] saltstack 自动认证

[复制链接]

尚未签到

发表于 2018-8-1 08:17:43 | 显示全部楼层 |阅读模式
  原文连接:http://pengyao.org/salt-autosign-01.html
Salt之AutoSign那点事
  Salt基于安全考虑, Minion在连接Master时, 需要在Master端先接受Minion的Pub Key, 之后Minion才能解密Master发过来的指令.
  如果Minion数目较少, 可以直接使用salt-key来管理Minion的keys. 如果规模较大, 维护Key将变得麻烦起来. 为此Salt提供了如下几种AutoSign的方案:
open_mode
  默认值: False
  使用方法: Master配置文件中增加 open_mode: True, 并重启Master以使配置生效
  推荐指数: -1
  说明: 该选项开启后, Master将关闭Auth功能, 并告诉master接受所有认证. 生产环境中强烈不推荐使用该选项
auth_accept
  默认值: False
  使用方法: Master配置文件中增加 auth_accept: True, 并重启Master以使配置生效
  推荐指数: 0
  该选项开启后, Master将自动接受所有minion发过来的Pub Key. 生产环境中不推荐使用该选项
autosign_file
  默认值: 无
  使用方法: Master配置文件中增加 autosign_file: /etc/salt/autosign.conf, 并重启Master以使配置生效. 之后编辑autosign_file, 增加autosign minion_id匹配规则(无需重启Master)
  推荐指数: 5
  该选项开启后, master接收到minion的Pub Key后, 会逐行读取autosign_file(所以更新autosign_file无需重启Master), 一旦匹配, 直接Accept. minion_id匹配规则支持字符完全匹配, Glob匹配, 正则匹配.
  如想匹配minion-01.example.com, 则如下条目均可匹配:
minion-01.example.com     # 字符完全匹配minion-*.example.com      # Glob匹配minion-\d+\.example\.com  # 正则匹配autosign_time
  默认值: 120 (单位: 分)
  使用方法: 该选项只是指定下autosign_dir目录下minion_id文件有效期为多长时间, 可以根据实际情况调整该参数. 想进行autosign时, 只需要在autosign_dir目录(默认: /etc/salt/pki/master/minions_autosign/)下创建需要自动Accept的minion_id文件即可. 在文件创建后的autosign_time时间内, minion进行auth时会直接Accept并自动删除本文件. 文件超过有效期, 将自动删除本文件.
  推荐指数: 8
  相对于autosign_file参数, 该方法支持有效期功能, 劣势是只支持字符完全匹配.
Reactor
  适用等级: 高
  推荐指数: 10
  Salt底层构建了Event BUS, 操作均会产生Event, 如Auth相关, 就会产生tag为salt/auth的event. 所以可以基于Reactor构建一个autosign方案, 灵活性要强与Salt内置的autosign方案.
  直接上Demo:
  /srv/reactor/autosign.sls
#!py  
import logging
  

  
log = logging.getLogger(__name__)
  

  
def check_autosign(minion_id):
  
    if minion_id.endswith('example.com'):
  
        return True
  
    return Falsedef run():
  
    '''    Autosign demo by reactor    '''
  
    minion_id = data['id']
  
    if data.get('act') == 'pend' and check_autosign(minion_id):
  
        log.info('I will accept {0} key by reactor'.format(minion_id))
  
        return {
  
            'minion_add': {
  
                'wheel.key.accept': [{
  
                    'match': minion_id}]
  
            }
  
        }
  
    return {}
  Minion在启动连接Master时, 会将自己的Pub Key发送给Master, Master未Accept时, 会产生一条playload中actpend的event. 可以自定义check_autosign函数, 进行判断该minion是否需要autosign, 如果需要, 则借助wheel的key模块进行自动Accept该minion public key.
  /etc/salt/master.d/reactor.conf
reactor:  
  - 'salt/auth':
  
    - /srv/reactor/autosign.sls
  发现tag为salt/auth的event, 则触发/srv/reactor/autosign.sls的执行, 从而实现AutoSign功能

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-544452-1-1.html 上篇帖子: saltstack管理六之数据同步方式和常用命令 下篇帖子: SaltStack源码分析之test模块
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表