consul之:ACL配置使用
consul自带ACL控制功能,看了很多遍官方文档,没有配置步骤https://www.consul.io/docs/internals/acl.html 主要对各种配置参数解释,没有明确的步骤,当时唯一疑惑的是怎样生成ACL规则。看了很多相关的blog都是相似的内容,都是基础的安装测试而已,没有提到具体配置ACL,估计更多的只是实验尝试而已,没有涉及ACL配置使用。后来有辛搜到了一片文章才恍然大悟,明白ACL配置是怎么回事了,http://qiita.com/yunano/items/931448a590c7f346ed01。我之后是这样配置的:
1、对数据中心的每个server,添加acl_config.json配置:
{ "acl_datacenter" : "datacenter-tag" , "acl_master_token" : "xxxxxxxxxx9cda01" , "acl_default_policy" : "deny" } |
这3个参数每个server模式的node都必须有。相关参数解释官方文档都有,https://www.consul.io/docs/agent/options.html
acl_default_policy默认值值是allow,即能够执行任何操作,这里需要关闭。
acl_master_token需要在每个server上配置,有management级别的权限,相当于一个种子token。
acl_datacenter区域的标识。
2、通过API接口 /v1/acl/create 创建一个management用户用于管理token的权限分配,这里生成这个management级别的token需要之前配置文件里面的种子token。
curl -H "X-Consul-Token: secret" -X PUT -d '{"Name": "datacenter-tag", "Type": "management"}' http: //127 .0.0.1:8500 /v1/acl/create ?token=xxxxxxxxxx9cda01 { "ID" : "xxxxxxxxxxx-xxxx-xxxx-xxxxxxxxxxx" } |
3、可以将这个management权限的token配置在ui节目管理的节点上,便于管理ACL、k/v、service等(但是我没有这么干,不然这个node的权限太大,不便于控制)。
{ "acl_datacenter" : "datacenter-tag" , "acl_master_token" : "xxxxxxxxxxx9cda01" , "acl_token" : "b9exxxxx-xxxx-xxxx-xxx-xxxxxxxxxx291ba" , "acl_default_policy" : "deny" } |
现在就可以通过ui界面管理token的权限分配了(制订ACL规则)。
4、合理分配token的权限(制定ACL规则),官方文档有一例分配说明:
# Default all keys to read-only key "" { policy = "read" } key "foo/" { policy = "write" } key "foo/private/" { # Deny access to the dir "foo/private" policy = "deny" } # Default all services to allow registration. Also permits all # services to be discovered. service "" { policy = "write" } # Deny registration access to services prefixed "secure-". # Discovery of the service is still allowed in read mode. service "secure-" { policy = "read" } # Allow firing any user event by default. event "" { policy = "write" } # Deny firing events prefixed with "destroy-". event "destroy-" { policy = "deny" } # Default prepared queries to read-only. query "" { policy = "read" } # Read-only mode for the encryption keyring by default (list only) keyring = "read" |
API注册ACL规则用JSION数据格式:
{ "key" : { "" : { "policy" : "read" }, "foo/" : { "policy" : "write" }, "foo/private" : { "policy" : "deny" } }, "service" : { "" : { "policy" : "write" }, "secure-" : { "policy" : "read" } }, "event" : { "" : { "policy" : "write" }, "destroy-" : { "policy" : "deny" } }, "query" : { "" : { "policy" : "read" } }, "keyring" : "read" } |
创建好ACL后,将生成的acl_token xxxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx 配置到每个agent,除了那个ui的server节点,当然这个节点也可以配置这个token,只是权限没有那么大了,管理不是很便捷。
client节点的acl_config.json配置:
{ "acl_datacenter" : "datacenter-tag" , "acl_token" : "xxxxxx-4bf0-xxxx-2079-xxxxxxxxx" } |
server节点的acl_config.json配置(UI的server节点除外):
{ "acl_datacenter" : "datacenter-tag" , "acl_master_token" : "xxxxxxxxxxxxxxxxx" , "acl_token" : "xxxxxxx-xxxx-xxxx-2079-xxxxxxxxxx" , "acl_default_policy" : "deny" } |
测试ACL是否生效:
[root@xx-xx-xxxx ~] # curl -X PUT -d 'test' http://127.0.0.1:8500/v1/kv/web/key1 rpc error: Permission denied [root@xx-xx-xxxx ~] # [root@xx-xx-xxxx ~] # curl -X PUT -d 'test' http://127.0.0.1:8500/v1/kv/foo/key1 true |
虽然分享了知识但也得为安全考虑,文章中所有敏感信息均已处理,比如token都是未知或无效的等。
consul之:ACL配置使用的更多相关文章
- consul集群搭建以及ACL配置
由于时间匆忙,要是有什么地方没有写对的,请大佬指正,谢谢.文章有点水,大佬勿喷这篇博客不回去深度的讲解consul中的一些知识,主要分享的我在使用的时候的一些操作和遇见的问题以及解决办法.当然有些东西 ...
- Centos Consul集群及Acl配置
一,准备工作 准备四台centos服务器,三台用于consul server 高可用集群,一台用于consul client作服务注册及健康检查.架构如下图所示 二,在四台服务器上安装consul 1 ...
- 运维小姐姐说这篇Consul集群和ACL配置超给力(保姆级)
前言 上一篇简单介绍了Consul,并使用开发模式(dev)进行流程演示,但在实际开发中需要考虑Consul的高可用和操作安全性,所以接着来聊聊集群和ACL的相关配置,涉及到的命令会在环境搭建过程中详 ...
- Consul作为SpringCloud配置中心
一.背景介绍 在分布式系统中动态配置中,可以避免重复重启服务,动态更改服务参数等.一句话非常重要. 另外一篇文章也是这样说的,哈哈. Consul 作为Spring 推荐的分布式调度系统其也具备配置中 ...
- linux下通过acl配置灵活目录文件权限(可用于ftp,web服务器的用户权限控制)
linux下通过acl配置灵活目录文件权限(可用于ftp,web服务器的用户权限控制) 发表于2012//07由feng linux 本身的ugo rwx的权限,对于精确的权限控制很是力不从心的,ac ...
- 由于 web 服务器上此资源的访问控制列表(acl)配置或加密设置,您无权查看此目录或页面。
场景:IIS中遇到无法预览的有关问题(HTTP 异常 401.3 - Unauthorized 由于 Web 服务器上此资源的访问控制列表(ACL)配置或加密设置 IIS中遇到无法预览的问题(HTTP ...
- 基本的访问控制列表ACL配置
摘要: 访问控制列表ACL (Access Control L ist)是由permit或 deny语句组成的一系列有顺序的规则集合,这些规则根据数据包的源地址.目的地址.源端口.目的端口等信息 来 ...
- consul ACL 配置范例
service "dashboard" { policy = "write" } service "dashboard-sidecar-proxy&q ...
- 分布式架构学习-Consul集群配置
简介 之前公司用的是Consul进行服务发现以及服务管理,自己一直以来只是用一下,但是没有具体的深入,觉得学习不可以这样,所以稍微研究了一下. 网上有很多关于Consul的介绍和对比,我这里也不献丑了 ...
随机推荐
- C++学习(二十九)(C语言部分)之 顺序表
一.数据结构组织 存放数据的方式 精心选择的数据结构可以提升效率 数据结构 1.逻辑结构 一对多关系 父与子 一对一关系 排队中 多对多关系 两地的路线 2.存储结构 数据存放的位置关系 顺序存储数据 ...
- 《DSP using MATLAB》Problem 5.19
代码: function [X1k, X2k] = real2dft(x1, x2, N) %% --------------------------------------------------- ...
- 《DSP using MATLAB》Problem 5.4
代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% Output In ...
- Map 按Key排序 和 按Value排序
https://www.cnblogs.com/binz/p/6671917.html 一.根据value排序 通用方法 public class MapUtil { public static &l ...
- web网页【2】
前端代码: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.as ...
- LeetCode - Most Frequent Subtree Sum
Given the root of a tree, you are asked to find the most frequent subtree sum. The subtree sum of a ...
- JS中map和foreach的区别以及some和every的用法
一.原生JS forEach()和map()遍历 共同点: 1.都是循环遍历数组中的每一项. 2.forEach() 和 map() 里面每一次执行匿名函数都支持3个参数:数组中的当前项item,当前 ...
- shell基础入门(一)
//获取输入内容 #!/bin/bash echo "What is your name?" read PERSON read -p "who are you name: ...
- MySQL--数据库连接异常问题汇总
======================================================== Name or service not known 错误消息: [Warning] I ...
- C# to IL 3 Selection and Repetition(选择和重复)
In IL, a label is a name followed by the colon sign i.e ":". It gives us the ability to ju ...