• saltstack 模型与认证通信原理


    1、模型

      Salt使用服务器代理通信模型,服务器组件称为 Salt Master, 代理称为 Salt Minion。

    Salt Master负责向Salt Minion发送命令,然后聚合并显示这些命令的结果。单个Salt Master可以管理数千个系统。

      saltstack组件如下:

        salt master: 中央管理系统,用于将命令和配置发送到在受管系统上运行的Salt minion

        salt minion: 管理系统,该系统运行Salt minion,从Salt master接收命令和配置。

        执行模块   : 从命令行对一个或多个受管系统执行的命令,用途如下1.实时监控,状态和详细信息。2.一次性命令和脚本。3.部署、critical、更新。

        state.sls : 系统配置的声明性或命令式表达。

        Grains   : 系统变量,Grains是有关地产受管系统的静态信息,包括操作系统,内存和许多其他系统属性。你还可以为任何系统定义自定义grains。

        pillars  : 用户定义的变量。这些安全变量被定义并存储在Salt Master中,然后使用Master 分配给一个或多个Minions,pillars存储的数据例如端口、文件路径、配置参数和密码之类的指。

        top file  : 将Master state.sls 和 Salt Pillar数据发送给Salt minion。

        Runners  : 在Salt master 上执行的模块,用于执行支持任务。Salt Runners 报告作业状态,连接状态,从外部api读取数据,查询连接的Salt minions等。

        Returners : 将Salt minions 返回的数据发送到另一个系统,例如数据库。Salt returners can run on the Salt minion or on the Salt master.

        Reactor  : 在 SaltStack环境中发生事件时出发反应。

        Salt Cloud/Salt Virt :  在云或虚拟机管理程序上提供系统,并立即对其进行管理。

        Salt SSH  : 在没有Salt minion的系统上通过ssh运行Salt 命令。    

    2.、沟通模式

      Salt 使用服务器代理通信模型。(还提供通过ssh运行无代理的能力。)

      Salt Master负责向Salt minions 发送命令,然后聚合并显示这些命令的结果。

      Salt使用发布-订阅模式与受管系统进行通信。连接由Salt Minion发起,这意味着受控端不需要监听端口(从而减少攻击)。Salt Master使用的端口为4505 和4506,必须打开它们才能接受传入连接。

      4505:所有Salt Minion建立与发布者端口的持久连接,并监听消息。命令通过此端口异步发送到所有连接,这使命令可以同时在大量系统上执行。

      4506:Salt Minion根据需要,连接到服务器,将结果发送到Salt Master,并安全地请求文件和minion 特定的数据值(salt pillar)。Salt Minion 和Salt Master之间的连接时非异步的。

    3、Salt Minion 认证

      当minion 第一次启动时,它会在网络中搜索一个名为salt的服务器(该配置在/etc/salt/minion可以配置为ip或其他主机名)找到后,minion启动握手,然后将其公钥发送给Salt master。

      在初始连接之后,Salt minion的公钥存储在服务器上,并且必须使用salt-key命令(或通过修改配置文件进行自动认证)在Salt master上接受它。这可能是新用户混淆的根源,因为在接受Salt minion的公钥之前,Salt 不会提供解码消息所需的安全密钥(意味着Salt minion在接受认证之前不会运行任何命令)。

      接受minion 密钥后Salt master将返回其公钥以及用于加密和解密Salt master发送的消息的旋转AES密钥。返回的AES密钥使用最初由Salt minion发送的公钥加密,因此只能由Salt minion解密。

    4、安全通信

      Salt master和Salt minion之前的所有进一步通信都使用AES密钥加密。AES加密密钥根据最新接受的TLS版本使用显示初始化向量和CBC块连接算法

    5、旋转安全密钥

      旋转AES密钥用于加密由Salt主服务器发送到Salt minion的作业,并加密与Salt主文件服务器的连接。每次Salt 主服务器重新启动时以及每次使用salt-key命令删除Salt minion密钥时,都会生成并使用新密钥。

      旋转密钥后,所有的salt minions 必须重新进行身份验证才能接收更新的密钥。这使AES key 可以在不中断minion连接的情况下旋转。

    6、加密信息渠道

      Salt master 和 Salt minion之间的发布通信使用旋转AES密钥进行加密。Salt master和Salt minion之间的直接通信使用每个会话的唯一AES密钥进行加密。

      For example, published jobs are encrypted using the rotating AES key, while secure, minion-specific data sent using Salt pillar is encrypted with a unique AES key for each Salt minion and session.

    7、用户访问控制

      在向minions发送命令之前,Salt会对发布者ACL执行一些内部检查,以确保执行该命令的用户具有正确的权限。如果用户被授权对指定目标进行指定命令,这发送该命令。如果不是,则返回错误。Salt还返回预期相应命令行界面的minions列表,因此他知道等待返回的时间。

  • 相关阅读:
    WCF简介-01
    专访Bruce Douglass,谈嵌入式经验
    svn查看工程版本库的url地址
    Hello Kiki (中国剩余定理模版)
    中国剩余定理 (CRT)
    Prime Cuts(POJ-1595)
    素数区间筛法
    出现或者反转后出现在每个字符串中的最长子串
    每个字符串至少出现两次且不重复的最长子串
    不小于k个字符串的最长子串
  • 原文地址:https://www.cnblogs.com/40kuai/p/9301434.html
Copyright © 2020-2023  润新知