Consul ACL访问权限控制
提前准备版本:V1.6.2下载:https://www.consul.io/downloads.html配置文件:config-acl.json{"datacenter":"tencent-datacenter","data_dir":"/usr/local/consul-1.6.2/data","log_file":"/usr/local/consul-1....
提前准备
环境:Linux系统
版本:V1.6.2
下载:https://www.consul.io/downloads.html
配置文件:config-acl.json
{
"datacenter":"tencent-datacenter",
"data_dir":"/usr/local/consul-1.6.2/data",
"log_file":"/usr/local/consul-1.6.2/log/",
"log_level":"INFO",
"bind_addr":"0.0.0.0",
"client_addr":"0.0.0.0",
"node_name":"tencent-node",
"ui":true,
"bootstrap_expect":1,
"server":true,
"acl":{
"enabled":true,
"default_policy":"deny",
"enable_token_persistence":true,
"enable_key_list_policy":true
}
}
- acl.enabled:开启acl
- acl.default_policy:策略,deny - 默认是拒绝;allow - 默认是允许的
- acl.enable_token_persistence:允许持久化token
- acl. enable_key_list_policy:允许KV的递归操作
启动Consul:./consul agent -config-file=config-acl.json
ACL使用场景
- Agent的访问控制
- Service服务注册/发现访问控制
- KV访问控制
ACL使用步骤
一、初始化Consul ACL
bash: consul acl bootstrap
生成信息如下(保存这些信息):
AccessorID: xxxx-xxxx-xxxx-xxxx-xxxx
SecretID: xxxx-xxxx-xxxx-xxxx-xxxx
Description: Bootstrap Token (Global Management)
Local: false
Create Time: 2019-12-23 12:06:53.799083966 +0800 CST
Policies:
00000000-0000-0000-0000-000000000001 - global-management
执行该命令生成的AccessorID和SecretID是拥有最高权限的。
二、配置规则
浏览器访问:localhost:8500
,ACL选项卡中输入上面的SecretID,然后会看到以下页面。
默认Policy:global-management,这个是拥有最高权限的SecretID,等于超级管理员。
AccessorID:访问ID。唯一对应有一个token,点击记录进去即可看到
Scope:作用范围
Roles & Policies:拥有权限或者策略,AccessorID通过关联不同角色和策略来控制访问权限
以下列举几个策略Policy的案例:
1)服务策略
service_prefix "" {
policy = "write"
}
以上策略表示所有服务可写
具体策略参考:service-rules
2)KV策略
key_prefix "" {
policy = "list"
}
key_prefix "" {
policy = "write"
}
key_prefix "config/" {
policy = "read"
}
第一个:表示所有KV可执行递归的 list 操作,该选项前提必须配置文件指定了"enable_key_list_policy":true
后方可生效。
第二个:所有KV可执行写操作。
第三个:以config/开头的key可执行读操作。
具体策略参考:key-value-rules
开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!
更多推荐
所有评论(0)