简介
Consul有多个组件,但是整体上,consul通常作为服务发现工具来使用。
Consul主要由以下特点:
- 服务发现
- 健康检查
- KV存储
- 多数据中心
Consul一般与zookeeper
,serf
,eureka
等软件做对比,具体差异可以参考文档
这里我主要记录下Consul ACL的配置与使用。ACL是Consul用来控制访问API与data的。
配置 Linux 的访问控制列表(ACL)
使用拥有权限控制的Liunx,工作是一件轻松的任务。它可以定义任何user,group和other的权限。无论是在桌面电脑或者不会有很多用户的虚拟Linux实例,或者当用户不愿意分享他们之间的文件时,这样的工作是很棒的。然而,如果你是在一个大型组织,你运行了NFS或者Samba服务给不同的用户,然后你将会需要灵活的挑选并设置很多复杂的配置和权限去满足你的组织不同的需求。
Linux(和其他Unix等POSIX兼容的操作系统)有一种被称为访问控制列表(ACL)的权限控制方法,它是一种权限分配之外的普遍范式。例如,默认情况下你需要确认3个权限组:owner、group和other。而使用ACL,你可以增加权限给其他用户或组别,而不单只是简单的"other"或者是拥有者不存在的组别。可以允许指定的用户A、B、C拥有写权限而不再是让他们整个组拥有写权限。
Linux系统对访问控制(ACL)权限的实现
HDFS的ACL测试
Squid服务的ACL访问控制
Haproxy ACL规则导致故障一例
ACL支持多种Linux文件系统,包括ext2, ext3, ext4, XFS, Btfrs, 等。如果你不确定你的文件系统是否支持ACL,请参考文档。
过程
- 编辑consul server配置文件,保存为
acl.json
.
注意:consul配置文件一般为json格式,不要保存为conf后缀。
{
"acl_datacenter": "dc1",
"acl_master_token": "p2BE1AtpwPbrxZdC6k+eXA==",
"acl_default_policy": "deny",
"acl_down_policy": "extend-cache"
}
- 启动server端
consul agent -config-dir=/home/data/consul -server -data-dir=/home/data/consul/ -bind=192.168.8.250 -client=0.0.0.0 -dev
这个时候加入server的代理如果没有配置ack,则会看到下面的sync失败信息
......
2018/01/10 11:27:46 [ERR] consul: "Catalog.Register" RPC failed to server 192.168.8.250:8300: rpc error making call: Permission denied
2018/01/10 11:27:46 [WARN] agent: Node info update blocked by ACLs
2018/01/10 11:27:49 [ERR] consul: "Catalog.Register" RPC failed to server 192.168.8.250:8300: rpc error making call: Permission denied
2018/01/10 11:27:49 [WARN] agent: Node info update blocked by ACLs
- 创建代理的Token。
请求头部设置
创建代理Token
3.1 直接使用Curl也可以
curl
--request PUT
--header "X-Consul-Token: p2BE1AtpwPbrxZdC6k+eXA=="
--data
'{
"Name": "Agent Token",
"Type": "client",
"Rules": "node "" { policy = "write" } service "" { policy = "read" }"
}' http://127.0.0.1:8500/v1/acl/create
- 在consult server主机上配置第三步获取的agent token。
首先在server端更新agent-token。
在consul 0.9版本以后,不用在配置文件操作,直接通过API进行设置
头部与上面一样
设置acl-agent-token
- 代理端配置启用acl
{
"acl_datacenter": "dc1",
"acl_down_policy": "extend-cache",
"acl_agent_token": "6cbfdcff-d3e7-4109-9fa8-ba185e8f7b48"
}
- 启动agent
consul agent -join=192.168.8.250 -ui -bind=192.168.8.141 -config-dir=/Users/aihe/Desktop/Songshu/conf/consul/consul-client -data-dir=/Users/aihe/Desktop/Songshu/conf/consul/
设置界面token
Consul UI界面
可以在界面进行一些操作。
7。 额外的一些访问控制可参考官方文档
在文件系统使ACL生效
首先,我们需要安装工具来管理ACL。
Ubuntu/Debian 中:
- $ sudo apt-get install acl
CentOS/Fedora/RHEL 中:
- # yum -y install acl
Archlinux 中:
- # pacman -S acl
出于演示目的,我将使用ubuntu server版本,其他版本类似。
安装ACL完成后,需要激活我们磁盘分区的ACL功能,这样我们才能使用它。
首先,我们检查ACL功能是否已经开启。
- $ mount
你可以注意到,我的root分区中ACL属性已经开启。万一你没有开启,你需要编辑/etc/fstab文件,在你需要开启ACL的分区的选项前增加acl标记。
现在我们需要重新挂载分区(我喜欢完全重启,因为我不想丢失数据),如果你对其它分区开启ACL,你必须也重新挂载它。
- $ sudo mount /-o remount
干的不错!现在我们已经在我们的系统中开启ACL,让我们开始和它一起工作。
更多详情见请继续阅读下一页的精彩内容:
|
Linux 的访问控制列表(ACL) 使用拥有权限控制的Liunx,工作是一件轻松的任务。它可以定义任何user,group和other的权限。无论是在桌面电脑...
总结
介绍了Consul ACL的基本使用方式。
参考
- Consul ACL
本文由亚洲必赢官方登录发布于故事寓言,转载请注明出处:布局 Linux 的访谈调控列表(ACL)
关键词: