玩转consul(4)-ACL机制要点
版权声明 本站原创文章 由 萌叔 发表
转载请注明 萌叔 | https://vearne.cc
1. 前言
本文基于Consul v1.6.2
这篇文章并不是consul ACL的完全配置手册,感兴趣的读者请阅读参考资料1
2. Token存在的意义
Token其实用于权限控制中,表征使用者的身份
Consul的ACL中重要的3个实体
Token最终与一组Policy关联, 可以理解为RBAC(基于角色的访问控制)中的权限。
3. 能够细粒度控制的权限有哪些?
4. 如何使用Token
详见参考资料2
curl \
--header "X-Consul-Token: <consul token>" \
http://127.0.0.1:8500/v1/agent/members
其实也可以附加在Query中,但官方不推荐
5. 配置文件示例
5.1 server模式
{
"acl": {
"enabled": true,
"default_policy": "deny",
"enable_token_persistence": true
},
"datacenter": "dc1",
"data_dir": "/data/consul",
"disable_update_check": true,
"server": true,
"ui": true,
"bind_addr": "192.168.100.3",
"client_addr": "0.0.0.0",
"node_name": "s1",
"bootstrap_expect": 2,
"retry_join": ["192.168.100.3", "192.168.100.4", "192.168.100.5"]
}
5.2 client 模式
client上设置default token
之后, 在client使用CLI或者执行API请求,都可以自动附加token
{
"acl": {
"enabled": true,
"default_policy": "deny",
"down_policy": "extend-cache",
"tokens": {
"default": "3b392aa4-c073-11cd-404b-792590b7feab"
}
},
"data_dir": "/data/consul",
"enable_debug": false,
"primary_datacenter": "dc1",
"datacenter": "dc1",
"disable_update_check": true,
"server": false,
"client_addr": "0.0.0.0",
"bind_addr": "192.168.100.210",
"node_name": "client210",
"retry_join": ["192.168.100.3", "192.168.100.4", "192.168.100.5"]
}
6. bootstrap
使用
consul acl bootstrap
会立刻为集群创建一个具有global-management
策略的Token,以便于后续的权限配置工作。开启enable_token_persistence
, 即使所有server重启,该token仍然有效。