Consul 0.8 ACL迁移——如何迁移

Consul 0.8 ACL migration - how to migrate

TLTR 如何将0.8之前的ACL权限迁移到0.7.3?

当前设置 我目前正在 运行 启用 ACL 的 Consul 0.7.3 堆栈。

有了 Consul 0.8,ACL 最终也将包含服务和节点,这样节点/服务 (Consul) 就不再向匿名用户显示。这正是我所需要的。今天我尝试使用 https://www.consul.io/docs/agent/options.html#acl_enforce_version_8

启用新的 ACL "pre 0.8"

这样做之后,我的节点将无法再针对主节点进行身份验证(如果身份验证是问题的话)。

我运行启用了八卦的领事网络,我配置了一个acl_master_token:

"{acl_master_token":"<token>}"

以及代理商的代币:

"{acl_token":"<token>}"

所有代理使用/配置的。

我有这些 ACL 默认值:

{
 "acl_datacenter": "stable",
 "acl_default_policy": "deny",
 "acl_down_policy": "deny"
}

我的 Consul 配置如下所示:

{
  "datacenter": "stable",
  "data_dir": "/consul/data",
  "ui": true,
  "dns_config": {
    "allow_stale": false
  },
  "log_level": "INFO",
  "node_name": "dwconsul",
  "client_addr" : "0.0.0.0",
  "server": true,
  "bootstrap": true,
  "acl_enforce_version_8": true
}

会发生什么 当我启动时,我根本看不到我的 nodes/services 使用我的令牌,nodes/agents 也不能在主机上注册,

问题 获得以下内容究竟需要什么:

我看了 https://www.consul.io/docs/internals/acl.html "ACL Changes Coming in Consul 0.8" but I could not wrap my head around it. Should I now use https://www.consul.io/docs/agent/options.html#acl_agent_master_token 而不是 acl_token?

感谢您的帮助。我想我不会是这条迁移道路上唯一一个有这种特殊兴趣的人,很多人对此感兴趣。你帮助了他们所有人:)

看起来新的 node 策略正在阻止节点正确注册。这应该可以解决问题:

  1. 在您的 Consul 服务器上为它们配置 acl_agent_token,该策略具有可以写入任何节点的策略,如下所示:node "" { policy = "write" }.

  2. 在您的 Consul 代理上,将它们配置为与服务器类似的代理以保持打开状态,或者您可以为它们提供一个令牌,该令牌具有更具体的策略,只允许它们写入某些允许的前缀.

注意这被设置为用于内部注册操作的 acl_agent_token。如果 Consul 服务器出现问题,acl_agent_master_token 用作使用 /v1/agent API 的一种紧急令牌,但它仅适用于 /v1/agent API。

对于 "all agents can see all nodes and all services and all KVs",您可以将节点读取权限添加到您通过 acl_token 提供给代理的任何令牌中,因此您可以添加如下策略:

node "" { policy = "read" }
service "" { policy = "read" }
key "" { policy = "read" }

请注意,这允许任何有权访问代理客户端界面的人阅读所有这些内容,因此您要小心绑定到的内容(通常只有环回)。或者根本不设置 acl_token 并让调用者在每个请求中传递一个令牌。