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 并启用了 gossip,我配置了 acl_master_token:
"{acl_master_token":"<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
}
发生了什么 当我启动时,我根本看不到使用我的 token 的节点/服务,节点/代理都无法在主服务器上注册,
问题 获得以下内容究竟需要什么:
- 所有代理都可以看到所有节点、所有服务和所有 KV
- Anonymous 什么也看不到,看不到 KV、服务或节点(这就是 0.8 可能实现的功能)
我查看了https://www.consul.io/docs/internals/acl.html “ACL Changes Coming in Consul 0.8”但我无法理解它。我现在应该使用 https://www.consul.io/docs/agent/options.html#acl_agent_master_token而不是 acl_token?
感谢您的帮助。我想我不会是唯一一个对这条移民道路和这种特殊兴趣感兴趣的人,很多人对此感兴趣。你帮助了所有人:)
最佳答案
看起来新的节点
策略正在阻止节点正确注册。这应该可以解决问题:
在 Consul 服务器上使用
acl_agent_token
配置它们,该 token 具有可以写入任何节点的策略,如下所示:node ""{policy = "write"}
.在您的 Consul 代理上,为它们配置与服务器类似的配置以保持开放,或者您可以为它们提供一个具有更具体策略的 token ,仅允许它们写入某些允许的前缀。
请注意,这被设置为用于内部注册操作的acl_agent_token
。 acl_agent_master_token
用作紧急 token ,以便在 Consul 服务器出现问题时使用/v1/agent API,但它仅适用于/v1/agent API。
对于“所有代理都可以看到所有节点、所有服务和所有 KV”,您可以向通过 acl_token
向代理提供的任何 token 添加节点读取权限,因此您可以添加像这样的政策:
node "" { policy = "read" }
service "" { policy = "read" }
key "" { policy = "read" }
请注意,这允许任何有权访问代理客户端界面的人读取所有这些内容,因此您需要小心绑定(bind)的内容(通常仅环回)。或者根本不设置 acl_token
并让调用者在每个请求中传递一个 token 。
关于acl - Consul 0.8 ACL 迁移 - 如何迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41968048/