consul的ACL配置

[1] consul的查询

下载后,启动 consul agent -dev

查询服务:

DNS方式:dig @127.0.0.1 -p 8600 web.service.consul SRV

Http方式:curl http://localhost:8500/v1/catalog/service/consul

dig @127.0.0.1 -p 8600 consul-conf-client.service.consul SRV

; <<>> DiG 9.9.7-P3 <<>> @127.0.0.1 -p 8600 consul-conf-client.service.consul SRV
; (1 server found)

-----

curl http://localhost:8500/v1/catalog/service/consul
[
    {
        "ID": "bff31206-a6f5-9027-faac-b6ad65b92d5d",
        "Node": "sunkaixiangdeMacBook-Pro.local",
        "Address": "127.0.0.1",
        "Datacenter": "dc1",
        "ServiceID": "consul",
        "ServiceName": "consul",
    }
]
查询节点

dig @127.0.0.1 -p 8600 sunkaixiangdeMacBook-Pro.local.node.consul

; <<>> DiG 9.9.7-P3 <<>> @127.0.0.1 -p 8600 sunkaixiangdeMacBook-Pro.local.node.consul
; (1 server found)
curl 127.0.0.1:8500/v1/catalog/nodes
查询kv值
curl http://localhost:8500/v1/kv/test

consul ACL配置使用

启动server
./consul agent -server -bootstrap-expect=1 -data-dir=/home/sunkx/22/consul-data -node=agent-one -bind=192.168.1.101 -config-dir=/home/sunkx/22/consul-config -client 0.0.0.0 -ui
启动slave
consul agent -advertise 192.168.1.100 -data-dir=Users/sunkaixiang/pro/consul-templet/consul-data -config-dir=/Users/sunkaixiang/pro/consul-templet/consul-config  -node=agent-two -bind=192.168.1.100 -join 192.168.1.101
查看成员
./consul members
Node       Address             Status  Type    Build  Protocol  DC   Segment
agent-one  192.168.1.101:8301  alive   server  1.0.2  2         dc1  <all>
agent-two  192.168.1.100:8301  alive   client  1.0.2  2         dc1  <default>
Http api使用
consul http api可用于操作nodes, services, checks, configuration等等的CRUD( create, read, update and delete)。
查看成员:
$ curl  http://192.168.1.101:8500/v1/agent/members
[{"Name":"agent-one","Addr":"192.168.1.101","Port":8301,..},
{"Name":"agent-two","Addr":"192.168.1.100","Port":8301,..}..]
配置acl
1.server服务器
config-dir目录下新建文件acl.json

{
	"datacenter": "datacenter-tag",
	"acl_datacenter": "datacenter-tag",
	"acl_master_token": "16c5413b-276c-45ab-9b0e-9664126f1161",
	"acl_default_policy": "deny",
	"server": true,
	"log_level": "DEBUG",
	"bootstrap_expect": 1,
        "client_addr": "0.0.0.0"
}
这里的 acl_master_token可以由  uuidgen | awk '{print tolower ( $0 ) }' 生成。
启动server ,在acl里面把  16c5413b-276c-45ab-9b0e-9664126f1161   填写到token里,然后关闭。就可看到node,services相关的信息。
consul的ACL规则用法 - 第1张  | linux工匠|关注运维自动化|Python开发|linux高可用集群|数据库维护|性能提优|系统架构

2.新建client-token

consul的ACL规则用法 - 第2张  | linux工匠|关注运维自动化|Python开发|linux高可用集群|数据库维护|性能提优|系统架构


create一个ACL,命名为client,rules里面写规则,规则其实比较简单,规则对象有:agent、event、key、keyring、node、operator、query、service、session。规则权限有:read、write、deny。
我这就只添加了一个名称,其他为空。
consul的ACL规则用法 - 第3张  | linux工匠|关注运维自动化|Python开发|linux高可用集群|数据库维护|性能提优|系统架构
将右上角生成的token拷贝出来,在client机器192.168.1.100上的consul-dir目录中的acl.json中写上:
{
  "datacenter": "datacenter-tag",
  "acl_datacenter": "datacenter-tag",
  "acl_token": "2e7c81a9-2150-91ca-824a-998cbc8eb03c",
  "server":false,
   "log_level": "DEBUG",
   "client_addr": "0.0.0.0"
}
注意两边的datacenter和acl_datacenter保持一致。
然后启动client:
consul agent -advertise 192.168.1.100  -data-dir=/Users/sunkaixiang/pro/consul-templet/consul-data -config-dir=/Users/sunkaixiang/pro/consul-templet/consul-config -node=agent-two -bind=192.168.1.100 -join 192.168.1.101 -rejoin -node-id=$(uuidgen | awk '{print tolower($0)}') 
此时:

静默启动:
nohup consul agent -advertise 192.168.1.100 -data-dir=/Users/sunkaixiang/pro/consul-templet/consul-data -config-dir=/Users/sunkaixiang/pro/consul-templet/consul-config -node=agent-two -bind=192.168.1.100 -join 192.168.1.101 -rejoin -node-id=$(uuidgen | awk '{print tolower($0)}') &

查看成员:

./consul members -token=16c5413b-276c-45ab-9b0e-9664126f1161
Node       Address             Status  Type    Build  Protocol  DC              Segment
agent-one  192.168.1.101:8301  alive   server  1.0.2  2         datacenter-tag  <all>
agent-two  10.211.55.5:8301    failed  client  1.0.2  2         datacenter-tag  <default>
要加上token
此时再用程序去连接consul会报错:

OperationException(statusCode=403, statusMessage='Forbidden', statusContent='Permission denied')

如何配置?

@Value("${consul.token:${CONSUL_TOKEN:${spring.cloud.consul.token:${SPRING_CLOUD_CONSUL_TOKEN:}}}}")
    private String aclToken;


https://www.consul.io/docs/guides/acl.html

http://www.jishux.com/plus/view-692181-1.html

http://blog.csdn.net/u010046908/article/details/61916389

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ACL(Access Control List)即访问控制列表,是Consul中用来控制访问权限的一种机制。在Consul中,为了保证数据的安全性,需要对访问Consul的用户进行认证和授权。配置ACL可以建立一些规则来限制用户的访问权限,保护数据的安全性。 要配置ACL,首先需要在Consul配置文件中开启ACL功能,例如: ``` { "acl_datacenter": "dc1", "acl_default_policy": "deny", "acl_down_policy": "extend-cache", "acl_master_token": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "acl_token": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" } ``` 其中,“acl_datacenter”表示ACL的数据中心,“acl_default_policy”表示默认的授权策略,“acl_down_policy”表示如果无法和 agent 连接时应该使用的授权策略,“acl_master_token”表示管理 token,“acl_token”表示客户端 token。 然后,需要创建一个管理员token,用于管理ACL,例如: ``` consul acl bootstrap ``` 最后,可以在Consul中创建、修改、删除ACL规则,例如: ``` consul acl policy create -name "web-service" -description "Grant permissions required by the web service" -rules @web-service-policy.hcl consul acl token create -description "Token for accessing the web service" -policy-name "web-service" consul acl token update -id <ACCESSOR_ID> -description "Token for accessing the web service" -policy-name "web-service" ``` 以上是关于Consul如何配置ACL的简单介绍,如有疑问,请您进一步了解。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值