SaltStack - 访问控制系统

访问控制系统为用户或组提供选项,以执行具有权限的任务。Salt 访问控制系统用于配置对非管理控制接口的访问。您可以将此过程应用于所有系统。此控制可帮助非管理用户执行 Salt 命令。

Salt 接口有以下三种类型 −

  • 发布者 ACL 系统
  • 外部身份验证系统
  • 对等系统

让我们详细了解每个接口。

发布者 ACL 系统

发布者 ACL 系统允许除 root 之外的用户从主节点对 minions 执行 Salt 命令。发布者 ACL 系统在主​​配置文件中通过 publisher_acl 配置选项进行配置。其定义如下 −

publisher_acl:
   user1:
      - .*

   user2:
      - web*:
         - test.*
         - pkg.*

此处,

  • user1 可以执行任何操作。

  • user2 可以使用 testpkg,但只能在"web*"minions 上使用。

外部身份验证系统

外部身份验证系统 用于通过外部授权系统(如 PAM、LDAP 等)提供对特定 minions 执行 salt 命令的访问权限。此配置文件在主文件中定义,如下所述。

external_auth:
   pam:
      user1:
         - 'web*':
            - test.*
            - network.*
      user2:
         - .*

此处,

  • user1 被允许在与 web* 目标匹配的 minions 上执行 testnetwork 模块 中的函数。

  • user2 被允许执行所有函数。

在命令中启用外部身份验证系统

Salt 服务器提供了一个选项'-a'来启用外部身份验证。

salt -a pam web\* test.ping

此处,-a pam 选项用于启用 PAM 外部身份验证。每当我们执行命令时,Salt Server 都会询问身份验证详细信息。为了限制 Salt Server 仅在第一次询问身份验证详细信息,我们可以使用 T 选项。此 -T 选项 会缓存接下来 12 小时的身份验证详细信息(默认设置),并使用它来对用户进行身份验证。

salt -T -a pam web\* test.ping

对等系统

Salt minions 可以使用对等接口传递命令。对等接口通过主配置文件进行配置,以允许 minions 使用 peer 配置部分从主服务器发送命令,或允许 minions 使用 peer_run 配置从主服务器执行运行器。

让我们详细了解这两种配置。

对等配置

主文件中要定义的简单配置如下 −

peer:
   .*:
      - .*

此处,它启用了所有 minions 的通信,但仅建议在非常安全的环境中使用。

要将 minions 分配给特定 ID,需要定义配置,如下所示:peer −

.*domain.com:
    - test.*

peer_run 配置

此配置允许 minions 使用主文件上的 peer_run 选项从主服务器执行运行器。以下示例允许访问所有 minions 和所有运行器。

peer_run:
    .*:
    - .*

要将 minions 分配给特定 ID,需要定义配置,如下所示−

peer_run:
   .*domain.com:
      - test.*

如何执行命令

要在所有 minions 上执行 test.ping,请使用 salt-call 命令以及 publish.publish 模块。

salt-call publish.publish \* test.ping

要执行 runner,请使用 salt-call 命令以及 publish.runner 模块。

salt-call publish.runner manage.up