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配置使用的更多相关文章

  1. consul集群搭建以及ACL配置

    由于时间匆忙,要是有什么地方没有写对的,请大佬指正,谢谢.文章有点水,大佬勿喷这篇博客不回去深度的讲解consul中的一些知识,主要分享的我在使用的时候的一些操作和遇见的问题以及解决办法.当然有些东西 ...

  2. Centos Consul集群及Acl配置

    一,准备工作 准备四台centos服务器,三台用于consul server 高可用集群,一台用于consul client作服务注册及健康检查.架构如下图所示 二,在四台服务器上安装consul 1 ...

  3. 运维小姐姐说这篇Consul集群和ACL配置超给力(保姆级)

    前言 上一篇简单介绍了Consul,并使用开发模式(dev)进行流程演示,但在实际开发中需要考虑Consul的高可用和操作安全性,所以接着来聊聊集群和ACL的相关配置,涉及到的命令会在环境搭建过程中详 ...

  4. Consul作为SpringCloud配置中心

    一.背景介绍 在分布式系统中动态配置中,可以避免重复重启服务,动态更改服务参数等.一句话非常重要. 另外一篇文章也是这样说的,哈哈. Consul 作为Spring 推荐的分布式调度系统其也具备配置中 ...

  5. linux下通过acl配置灵活目录文件权限(可用于ftp,web服务器的用户权限控制)

    linux下通过acl配置灵活目录文件权限(可用于ftp,web服务器的用户权限控制) 发表于2012//07由feng linux 本身的ugo rwx的权限,对于精确的权限控制很是力不从心的,ac ...

  6. 由于 web 服务器上此资源的访问控制列表(acl)配置或加密设置,您无权查看此目录或页面。

    场景:IIS中遇到无法预览的有关问题(HTTP 异常 401.3 - Unauthorized 由于 Web 服务器上此资源的访问控制列表(ACL)配置或加密设置 IIS中遇到无法预览的问题(HTTP ...

  7. 基本的访问控制列表ACL配置

    摘要: 访问控制列表ACL (Access Control L ist)是由permit或 deny语句组成的一系列有顺序的规则集合,这些规则根据数据包的源地址.目的地址.源端口.目的端口等信息  来 ...

  8. consul ACL 配置范例

    service "dashboard" { policy = "write" } service "dashboard-sidecar-proxy&q ...

  9. 分布式架构学习-Consul集群配置

    简介 之前公司用的是Consul进行服务发现以及服务管理,自己一直以来只是用一下,但是没有具体的深入,觉得学习不可以这样,所以稍微研究了一下. 网上有很多关于Consul的介绍和对比,我这里也不献丑了 ...

随机推荐

  1. PTA——龟兔赛跑

    PTA 7-39 龟兔赛跑 #include <stdio.h> int main () { ,turtle=,minute,rest=-,run=; //rest为0或负时,兔子休息,r ...

  2. C++学习(二十七)(C语言部分)之 预处理命令

    结构体 联合 枚举 联合 只能保存最后赋值的结果枚举 所有可能值列出来 预处理命令是在编译前期的阶段 代码-(编译)-->可执行文件(exe)预编译 编译前对代码处理 *1.插入头文件的内容 # ...

  3. hibernate--DetachedCriteria(离线条件查询)

    一.叙述 离线条件查询的好处,可以在非dao层封装查询参数,封装完成后,将对象传递到dao层,关联到session后,再去查询数据,这样做dao层可以极大的简化代码.下面通过一个小案例,一起来感受一下 ...

  4. VM安装系统时提示硬件不支持(unsupported hardware detected)

    修改一下虚拟机配置,把CD/DVD中使用的autoinst.iso替换成需要安装的系统镜像文件 然而,后面发现还是会报这个错,不过,却可以正常安装下去.但是如果不修改这里的话,安装系统时会出错

  5. firefox一搜索就提示是否进入***网站和取消占地方的标题栏

    来看一下这个蛋疼的提示 每次都要手动关闭.后来在网上看到一个解决方法 解决方法: 地址栏输入about:config回车进入设置, 去掉警告那个勾 点击确定,进入配置页 搜索 取消最上面方人的fire ...

  6. plsql快速入门

    汉化plsql方法: 本来想直接使用英文版的,但是太多专业名词看不懂,只好先汉化熟悉一下先. 安装好plsq后,百度下载plsql汉化包 执行汉化包里面的安装程序,安装目标路径选择plsql的安装路径 ...

  7. 数学 它的内容,方法和意义 第三卷 (A. D. 亚历山大洛夫 著)

    第十五章 实变数函数论 1. 绪论 2. 集合论 3. 实数 4. 点集 5. 集合的测度 6. 勒贝格积分 第十六章 线性代数 1. 线性代数的对象和它的工具 2. 线性空间 3. 线性方程组 4. ...

  8. 嵌入式LINUX设置时间

    date -s "2018-12-15 08:55:00" 安装NTP从网络获取时间 基于Linux的嵌入式开发,需要用到本地的时间,但是网上找了很多修改时间的命令,但大多是Lin ...

  9. AD10 没有原理图是否可以修改 PCB

    AD10 没有原理图是否可以修改 PCB 有朋友问 AD 是否可以在没有原理的情况下修改 PCB 呢? 答案是肯定的,可以. 比如增加元件和网络,可以先增加元件封装,再打开网络管理给焊盘加上网络. 相 ...

  10. Spring5 新特性

    Spring Framework 5.0是在Spring Framework 4.0之后将近四年内一次重大的升级. 最大特点之一是响应式编程(Reactive Programming). 响应式编程核 ...