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

2.2、修改启动命令

#!/bin/bash
cd /home/hd/consul-node
./consul agent -config-dir=./config
cd

在这里插入图片描述

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

3.2、步骤2:获取bootstrap token

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

在这里插入图片描述

内容
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

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信息的策略

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

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使用策略;


4.1.1.2、常用策略(policy)

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

read:只能查询;
write:可查可写;
deny:不能读不能写;

4.1.2、根据策略生成token

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

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

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

4.1.3、使用token

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

在这里插入图片描述

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

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

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

4.2、命令方式

4.2.1、编写规则文件

vim key-acl.hcl

内容

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

在这里插入图片描述

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

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

在这里插入图片描述

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

在这里插入图片描述

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
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值