Consul 0.8 ACL迁移 - 如何迁移

时间:2017-01-31 21:44:28

标签: acl consul

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”

执行此操作后,我的节点无法再对主节点进行身份验证(如果验证完全是问题)。

我在启用八卦的情况下运行了consul-network,我已经配置了一个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
}

会发生什么 当我启动时,根本无法使用我的令牌看到我的节点/服务,节点/代理都无法在主服务器上注册,

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

  • 所有代理都可以查看所有节点和所有服务以及所有KV
  • 匿名者看不到任何东西,而不是KV,服务或节点(这就是0.8的可能性)

我看了https://www.consul.io/docs/internals/acl.html“来自领事馆0.8的ACL更改”,但我无法绕过它。我现在应该使用https://www.consul.io/docs/agent/options.html#acl_agent_master_token而不是acl_token吗?

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

1 个答案:

答案 0 :(得分:3)

新的node策略似乎阻止节点正确注册。这应该解决问题:

  1. 在您的Consul服务器上配置acl_agent_token,其中包含可写入任何节点的策略,如下所示:node "" { policy = "write" }

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

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

    对于&#34;所有代理都可以看到所有节点和所有服务以及所有KV&#34;您可以通过acl_token将节点读取权限添加到您向代理商提供的任何令牌中,这样您就可以添加以下政策:

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

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