为 Nomad 客户端启用 ACL 的目的

Posted

技术标签:

【中文标题】为 Nomad 客户端启用 ACL 的目的【英文标题】:Purpose of enabling ACL for Nomad clients 【发布时间】:2021-06-23 14:54:36 【问题描述】:

通过为集群上的所有 Nomad 服务器设置acl.enabled = true,我们已经成功地在我们的 Nomad 集群上启用了 ACL 子系统。看起来 ACL 按预期工作,无需为集群上的 Nomad 客户端设置 acl.enabled = true

Nomad ACL docs 确实提到在 Nomad 客户端上启用 ACL:

要强制执行客户端端点,您还需要在客户端上启用 ACL。通过将 acl 节的启用值设置为 true 来执行此操作。完成后,重新启动客户端以读取新配置。

但是,我们看到的是,从客户端运行的 Nomad CLI 命令(没有acl.enabled = true)仍然如预期的那样被 403(权限被拒绝)门控。

由于我们的集群有很多客户端,如果我们不必为每个客户端显式启用 ACL,将会节省我们的时间。

总而言之 - 我们想知道是否绝对需要更新 Nomad 客户端的配置以启用 ACL,即使 ACL 子系统似乎已经通过在 Nomad 服务器上启用 ACL 来工作。

【问题讨论】:

【参考方案1】:

如果您所有的 nomad 系统都在 100% 受信任的系统上,并且网络上的任何人都可以提交作业等,那么您就不需要 ACL。

如果您对此不满意,无论出于何种原因,您都必须通过 ACL 歌舞并使其正常工作。如果你也使用 Vault,可以将两者整合,让你的生活更轻松,见:https://www.vaultproject.io/docs/secrets/nomad

也必须在客户端上启用 ACL,“要强制执行客户端端点,您还需要在客户端上启用 ACL。” - https://learn.hashicorp.com/tutorials/nomad/access-control-bootstrap?in=nomad/access-control#enable-acls-on-nomad-clients

【讨论】:

正如原帖中提到的,Nomad 客户端似乎已经受到 ACL 管理,只需在 Nomad 服务器上启用 ACL。例如,在 Nomad 客户端(没有acl.enabled = true)上执行的 Nomad CLI 命令已经被 403(权限被拒绝)门控。为 Nomad 客户端设置 acl.enabled = true 会带来哪些额外的安全性? 啊,对不起,是的,您当然也应该在客户端上启用 acl.enabled = true。原因是,客户端有自己的 API 端点,它们也需要受到保护。每个文档:“要强制执行客户端端点,您还需要在客户端上启用 ACL。” - learn.hashicorp.com/tutorials/nomad/…

以上是关于为 Nomad 客户端启用 ACL 的目的的主要内容,如果未能解决你的问题,请参考以下文章

如何在启用 tls 的情况下连接到 nomad/consul UI?

RocketMQ ACL使用指南

基于DNS视图技术实现CDN分网调度

nomad安装

如何部分启用/禁用远程推送通知客户端?

什么是ACL,它的五要素是?