HoRain云--Docker创建Consul并添加权限控制

  

🎬 HoRain云小助手个人主页

 🔥 个人专栏: 《Linux 系列教程》《c语言教程

⛺️生活的理想,就是为了理想的生活!


⛳️ 推荐

前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。

专栏介绍

专栏名称

专栏介绍

《C语言》

本专栏主要撰写C干货内容和编程技巧,让大家从底层了解C,把更多的知识由抽象到简单通俗易懂。

《网络协议》

本专栏主要是注重从底层来给大家一步步剖析网络协议的奥秘,一起解密网络协议在运行中协议的基本运行机制!

《docker容器精解篇》

全面深入解析 docker 容器,从基础到进阶,涵盖原理、操作、实践案例,助您精通 docker。

《linux系列》

本专栏主要撰写Linux干货内容,从基础到进阶,知识由抽象到简单通俗易懂,帮你从新手小白到扫地僧。

《python 系列》

本专栏着重撰写Python相关的干货内容与编程技巧,助力大家从底层去认识Python,将更多复杂的知识由抽象转化为简单易懂的内容。

《试题库》

本专栏主要是发布一些考试和练习题库(涵盖软考、HCIE、HRCE、CCNA等)

目录

⛳️ 推荐

专栏介绍

1. 创建Consul容器(启用ACL)

2. 配置ACL核心文件

3. 生成Bootstrap Token

4. 创建策略文件

5. 生成客户端Token

6. 客户端连接(带Token)

7. 验证ACL

8. 持久化配置建议

高级ACL配置示例

注意事项


img

在Docker中创建具有ACL权限控制的Consul集群可通过以下步骤实现:


1. 创建Consul容器(启用ACL)

# 创建Docker网络
docker network create consul-net

# 启动Consul Server(启用ACL)
docker run -d \
  --name=consul-server \
  --network=consul-net \
  -p 8500:8500 \
  -p 8600:8600/udp \
  -v consul-data:/consul/data \
  consul:latest agent -server \
    -bootstrap-expect=1 \
    -node=server-1 \
    -client=0.0.0.0 \
    -config-dir=/consul/config \
    -datacenter=dc1 \
    -enable-script-checks=true \
    -ui

2. 配置ACL核心文件

在宿主机创建配置文件 consul-acl.hcl

acl = {
  enabled = true
  default_policy = "deny"
  enable_token_persistence = true
  tokens = {
    initial_management = "your-root-token"  # 替换为自定义管理token
  }
}

挂载配置文件到容器:

docker run ... -v /path/to/config:/consul/config ...

3. 生成Bootstrap Token

# 进入容器
docker exec -it consul-server sh

# 生成Bootstrap Token(首次启用ACL时)
consul acl bootstrap

保存输出的 SecretID(即root token)


4. 创建策略文件

创建策略文件 node-policy.hcl

node_prefix "" {
  policy = "read"
}
service_prefix "" {
  policy = "read"
}

创建策略:

consul acl policy create \
  -name "node-read" \
  -description "Read-only node access" \
  -rules @node-policy.hcl

5. 生成客户端Token

# 创建客户端Token
consul acl token create \
  -description "Client Token" \
  -policy-name "node-read" \
  -secret "your-client-token"  # 自定义客户端token

6. 客户端连接(带Token)

docker run -d \
  --name=consul-client \
  --network=consul-net \
  consul:latest agent -client \
    -retry-join=consul-server \
    -datacenter=dc1 \
    -acl-token=your-client-token

7. 验证ACL

# 无Token访问会被拒绝
curl http://localhost:8500/v1/agent/members

# 使用Token访问
curl -H "X-Consul-Token: your-client-token" http://localhost:8500/v1/agent/members

8. 持久化配置建议

  1. 使用Docker Volume持久化数据:

    -v consul-data:/consul/data \
    -v consul-config:/consul/config \
    
  2. 通过环境变量传递Token:

    -e CONSUL_HTTP_TOKEN=your-client-token
    

高级ACL配置示例

创建细粒度策略 web-service.hcl

service "web" {
  policy = "write"
}

key_prefix "web/" {
  policy = "read"
}

注意事项

  1. 安全警告:不要在生产环境使用 -bootstrap-expect=1,建议3或5节点集群
  2. Token保护:通过 -config-dir 加载加密配置文件
  3. 网络加密:建议启用TLS通信
  4. ACL日志:查看审计日志 consul monitor -log-level=debug

❤️❤️❤️本人水平有限,如有纰漏,欢迎各位大佬评论批评指正!😄😄😄

💘💘💘如果觉得这篇文对你有帮助的话,也请给个点赞、收藏下吧,非常感谢!👍 👍 👍

🔥🔥🔥Stay Hungry Stay Foolish 道阻且长,行则将至,让我们一起加油吧!🌙🌙🌙

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值