• consul--基础--06--ACL


    consul–基础–06–ACL


    1、介绍

    1.1、Access Control Lists(ACL-访问控制列表)

    Consul使用 Access Control Lists 来保护对UI、API、CLI、服务通信和代理通信的访问。

    1.2、ACL的核心

    ACL的核心是将规则分组为策略,然后将一个或多个策略与令牌相关联。

    1.3、令牌

    1. Consul使用token进行安全控制访问,token里面包含了操作权限
    2. 类比:比如 应用的WebAPI接口,通过一个授权token来限制资源的访问。

    2、环境

    2.1、基础环境

    Consul--生产环境搭建--01--单机部署--Server模式
    https://blog.csdn.net/zhou920786312/article/details/118220171
    
    • 1
    • 2

    2.2、修改启动命令

    #!/bin/bash
    cd /home/hd/consul-node
    ./consul agent -config-dir=./config
    cd
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    2.3、移动配置文件

    在这里插入图片描述

    3、配置ACL的步骤

    3.1、步骤1:配置ACL

    1. 在各节点启动时将ACL启用,在配置文件夹目录中(这里目录名是config)增加acl.hcl文件
    2. 配置文件准备好之后,重新启动节点即可
    3. acl.hcl内容如下
    acl = { enabled = true default_policy = "deny" enable_token_persistence = true }
    
    • 1

    在这里插入图片描述

    参数说明:

    1. enabled=true:表示开启ACL
    2. default_policy="deny":默认:allow,如果需要自定义权限,需要将其设置为deny;
    3. enable_token_persistence =true:表示开启token持久化,将token持久化到磁盘上;
    
    • 1
    • 2
    • 3

    3.2、步骤2:获取bootstrap token

    1. 获取一个bootstrap token,因为针对子权限(策略)生成token的时候需要用到,就好比MySQL中的root用户一样,只要有了root权限才能给其他用户分配更多的权限。
    2. 在任意一个Server中执行consul acl bootstrap命令 就可以获取
    3. Consul中token都很重要,需要保存好
    ./consul acl bootstrap
     
    
    • 1
    • 2

    在这里插入图片描述

    内容
    AccessorID:       332f50a2-dfc9-4a43-bf74-6f0d38164388
    # token的内容
    SecretID:         eed1cd0b-f2a5-a423-2621-cf742160a2f8
    # 描述
    Description:      Bootstrap Token (Global Management)
    Local:            false
    Create Time:      2022-11-07 17:41:12.451612834 +0800 CST
    # 使用的全局策略,权限很大,类似mysql的root
    Policies:
       00000000-0000-0000-0000-000000000001 - global-management
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    3.3、步骤3:登录

    在这里插入图片描述

    在这里插入图片描述

    4、配置其他token

    bootstrap token权限很大,不可能每个小伙伴都拥有,就像MySQL的root权限一样,只能有个别的人知道,其他用户的权限需单独控制;
    Consul也是如此,针对不同权限策略,生成对应的token,使用这个token就只能访问或操作对应权限范围内的资源。

    ALC 配置其他token的方式有以下2种

    1. 通过命令的形式
    2. 通过UI界面的形式(因为现在有bootstrap token超级权限)

    4.1、UI方式配置

    4.1.1、创建策略

    
    node-read-policy
    
    node_prefix ""{
    policy = "read"
    }
    
    只能查看node信息的策略
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述

    在这里插入图片描述

    在这里插入图片描述

    4.1.1.1、常用规则(Rules)
    1. 主要针对的配置
      1. 节点(node)
      2. 服务(service)
      3. 键值对(K/V)
    2. 可以模糊指定,也可以具体指定
    node_prefix "":节点前缀为空,代表所有的节点都使用策略;
    service_prefix "":服务前缀为空,代表所有的服务都使用策略;
    service "Code6688Name":指定对应的服务使用策略;
    key_prefix "redis/":只对前缀有"redis/"的key使用对应策略;
    key "dashboard-app":指定对应的key使用策略;
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    4.1.1.2、常用策略(policy)

    规则中关于策略(policy)通常有以下几种:

    read:只能查询;
    write:可查可写;
    deny:不能读不能写;
    
    • 1
    • 2
    • 3

    4.1.2、根据策略生成token

    根据 只能查看node信息的策略 生成token
    
    
    • 1
    • 2

    在这里插入图片描述
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

    4.1.3、使用token

    我们使用bootstrap token登录的时候,可以看到如下

    在这里插入图片描述

    切换刚刚生成的token,可以看到如下

    在这里插入图片描述
    在这里插入图片描述

    切换之后,界面中除了node能查出信息,其他都不能查出信息

    4.2、命令方式

    4.2.1、编写规则文件

    vim key-acl.hcl
    
    
    • 1
    • 2

    内容

    # 所有的key都只能查看,不能编辑
    key_prefix ""{
    policy = "read"
    }
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    4.2.2、根据规则文件生成策略

    # 创建策略,名称为allKeyOnlyRead
    # 因为启用ACL,所以需要对应的权限token,这里使用bootstrap token
    ./consul acl policy create -name "allKeyOnlyRead" -rules @key-acl.hcl -token eed1cd0b-f2a5-a423-2621-cf742160a2f8
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    4.2.3、根据策略生成token

    # 创建token,名称为 allKeyOnlyReadToken
    # 因为启用ACL,所以需要对应的权限token,这里使用bootstrap token
    ./consul acl token create   -description "key只读" -policy-name allKeyOnlyRead -token eed1cd0b-f2a5-a423-2621-cf742160a2f8
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    4.2.4、使用token

    在这里插入图片描述

    5、spinrgboot集成

    spring:
      application:
        name: xcoa
      cloud:
        consul:
          host: 192.168.187.171
          port: 8500
          config:
            prefix: xcoa/dev
            format: FILES
            # 配置token
            acl-token: eed1cd0b-f2a5-a423-2621-cf742160a2f8
          discovery:
            prefer-ip-address: true
            instance-id: ${spring.application.name}:${spring.cloud.client.ip-address}:${server.port}
            # 健康检测API
            health-check-path: '/xcoa/health'
            # 配置token
            acl-token: eed1cd0b-f2a5-a423-2621-cf742160a2f8
     
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
  • 相关阅读:
    一文搞懂SpringSecurity---[Day03]自定义登录逻辑+自定义登录页面
    【六袆 - Windows】PL/SQL instantclient安装包下载;PL/SQL双击登录配置
    Python钢筋混凝土结构计算.pdf-T001-混凝土强度设计值
    [rtsp学习]-264rtp打包结构
    修改 Zynq 7000 系列 CPU 主频到 800HMz(7045 和 7100)
    python中的字典对象
    redis常用操作命令
    51单片机循迹小车原理介绍和代码示例
    java计算机毕业设计家校沟通程序MyBatis+系统+LW文档+源码+调试部署
    算法的复杂度分析
  • 原文地址:https://blog.csdn.net/zhou920786312/article/details/127738110