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. php 函数集锦

    1.array_intersect_assoc()用于比较两个(或更多个)数组的键名和键值,并返回交集. <?php $a1=array("a"=>"red& ...

  2. python django day 5 database 1

    from django.db import models class Blog(models.Model): name = models.CharField(max_length=) tagline ...

  3. C# NPOI使用

    HSSFWorkbook workbook = new HSSFWorkbook(); HSSFSheet sheet = workbook.CreateSheet( "Sheet1&quo ...

  4. webapi core2.1 IdentityServer4.EntityFramework Core进行配置和操作数据

    https://identityserver4.readthedocs.io/en/release/quickstarts/8_entity_framework.html 此连接的实践 vscode ...

  5. json(传输格式)、异步加载、时间线

    xml:过去传输的数据格式 json:现在的传输数据格式,属性名加双引号来区别,其实也是对象,传输的是个字符串,其实就是json 前端JSON.stringfy(obj) 然后传给后台 后台传回来的j ...

  6. 《DSP using MATLAB》Problem 6.21

    代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% Output In ...

  7. mysql 常用函数-locate 和 instr 和 regexp

    ★1 -- 表级锁 情况SHOW STATUS LIKE 'table%';-- 行级锁 情况SHOW STATUS LIKE 'innodb_row_lock%'; -- 进程列表SHOW PROC ...

  8. 【mybatis源码学习】mybatis和spring框架整合,我们依赖的mapper的接口真相

    转载至:https://www.cnblogs.com/jpfss/p/7799806.html Mybatis MapperScannerConfigurer 自动扫描 将Mapper接口生成代理注 ...

  9. 【JVM】参数配置

    [一]JVM参数配置释意 编号 配置项 例子 含义 备注 1 -Xmx -Xmx20m java应用最大可用内存为20M  整个JVM内存大小=年轻代大小 + 年老代大小 + 持久代大小.持久代一般固 ...

  10. zeebe 为微服务架构的工作流引擎

    zeebe 是灵活.轻量的基于微服务架构的工作流引擎 包含以下特性: 可视化的额工作流 审计日志以及历史 水平缩放 持久化&&容错 消息驱动 操作容易 语言无关 工作流基于标准bpmn ...