使用全局黑名单的Consul ACL仍列出具有匿名令牌的服务/节点

时间:2016-07-05 13:01:48

标签: acl consul

像这样配置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)

1 个答案:

答案 0 :(得分:0)

答案分为2个分支

服务

ACL拒绝列出服务,但是对consul服务例外。所以其他所有服务都不会出现

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

节点

ACL尚未应用于节点,因此您现在无法使用ACL保护节点上的间谍眼睛。参见

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