使用全局黑名单的 Consul ACL 仍然使用匿名令牌列出 services/nodes

Consul ACLs using a global blacklist still lists services/nodes with anonymous token

像这样配置 consul-server 时:

{
  "acl_datacenter": "stable",
  "acl_default_policy": "deny",
  "acl_down_policy": "deny"
  "datacenter": "stable",
  "data_dir": "/consul/data",
  "ui": true,
  "log_level": "INFO",
  "node_name": "consul",
  "client_addr" : "0.0.0.0",
  "server": true,
  "bootstrap": true,
  "encrypt":"GdKfGQLlnziTxh/Vt4DW4A==
  "acl_master_token:"474238df-2199-4e67-a1e6-638bdb8f6740"
}

所以对所有内容都使用黑名单,我仍然可以列出所有服务

curl http://consul:8500/v1/catalog/services
{"consul":[]}%

不提供令牌 - 所以使用匿名令牌。即使我添加了一个明确的规则(不需要)

service "" {
   policy="deny"
}

还是一样的结果。列出节点和其他任何东西也是如此。我无法列出任何 KV - 所以这是安全的(或添加任何带有匿名令牌的 ACL)。

问题

元信息

consul --version
Consul v0.6.4
Consul Protocol: 3 (Understands back to: 1)

答案分为 2 个分支

服务

Listing服务被ACL拒绝,consul服务异常。所以其他所有服务都不会出现

来源https://twitter.com/slackpad/status/750322795704352768

节点

ACL还没有应用到节点上,因此你暂时不能使用ACL保护节点上的窥探。参见

来源https://twitter.com/slackpad/status/750323727330533376