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 也不能在主机上注册,
问题
获得以下内容究竟需要什么:
- 所有代理都可以看到所有节点和所有服务以及所有 KV
- Anonymous 看不到任何东西,看不到 KV、服务或节点(这就是 0.8 的可能)
我看了 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
策略正在阻止节点正确注册。这应该可以解决问题:
在您的 Consul 服务器上为它们配置 acl_agent_token
,该策略具有可以写入任何节点的策略,如下所示:node "" { policy = "write" }
.
在您的 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
并让调用者在每个请求中传递一个令牌。
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 也不能在主机上注册,
问题 获得以下内容究竟需要什么:
- 所有代理都可以看到所有节点和所有服务以及所有 KV
- Anonymous 看不到任何东西,看不到 KV、服务或节点(这就是 0.8 的可能)
我看了 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
策略正在阻止节点正确注册。这应该可以解决问题:
在您的 Consul 服务器上为它们配置
acl_agent_token
,该策略具有可以写入任何节点的策略,如下所示:node "" { policy = "write" }
.在您的 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
并让调用者在每个请求中传递一个令牌。