ETCD 权限配置

直接使用

docker exec -it etcd1 etcdctl --endpoints=地址 --user=root:123456 role add test_role && \

docker exec etcd1 etcdctl --endpoints=地址 --user=root:123456 role grant-permission test_role readwrite /test --prefix=true && \

docker exec etcd1 etcdctl --endpoints=地址 --user=root:123456 user add testuser:test_password_123456 && \

docker exec etcd1 etcdctl --endpoints=地址9 --user=root:123456 user grant-role testuser test_role

#!/bin/bash

etcd 用户权限配置脚本

用途:配置 etcd 访问用户和权限

set -e

配置参数

ETCD_ENDPOINTS=""

ROOT_PASSWORD=""

APP_USER=""

APP_PASSWORD=""

颜色输出

RED='\033[0;31m'

GREEN='\033[0;32m'

YELLOW='\033[1;33m'

NC='\033[0m'

echo -e "{GREEN}========================================{NC}"

echo -e "{GREEN}etcd 用户权限配置脚本{NC}"

echo -e "{GREEN}========================================{NC}"

等待集群就绪

echo -e "{YELLOW}\[1/8\] 等待 etcd 集群就绪...{NC}"

sleep 5

检查集群状态

echo -e "{YELLOW}\[2/8\] 检查集群状态...{NC}"

docker exec etcd1 etcdctl --endpoints=${ETCD_ENDPOINTS} endpoint status --write-out=table

echo -e "{GREEN}✓ 集群运行正常{NC}"

创建 root 用户

echo -e "{YELLOW}\[3/8\] 创建 root 用户...{NC}"

docker exec etcd1 etcdctl --endpoints={ETCD_ENDPOINTS} user add root:{ROOT_PASSWORD} || echo "root 用户可能已存在"

echo -e "{GREEN}✓ root 用户已配置{NC}"

创建应用用户

echo -e "{YELLOW}\[4/8\] 创建应用用户 ({APP_USER})...${NC}"

docker exec etcd1 etcdctl --endpoints={ETCD_ENDPOINTS} user add {APP_USER}:{APP_PASSWORD} \|\| echo "{APP_USER} 用户可能已存在"

echo -e "{GREEN}✓ {APP_USER} 用户已创建${NC}"

创建角色

echo -e "{YELLOW}\[5/8\] 创建角色...{NC}"

docker exec etcd1 etcdctl --endpoints=${ETCD_ENDPOINTS} role add readwrite || echo "readwrite 角色可能已存在"

echo -e "{GREEN}✓ readwrite 角色已创建{NC}"

授予权限(读写所有 key)

echo -e "{YELLOW}\[6/8\] 授予权限...{NC}"

docker exec etcd1 etcdctl --endpoints=${ETCD_ENDPOINTS} role grant-permission readwrite readwrite '' --prefix=true

docker exec etcd1 etcdctl --endpoints=${ETCD_ENDPOINTS} role grant-permission readwrite read '' --prefix=true

echo -e "{GREEN}✓ 权限已授予{NC}"

将用户绑定到角色

echo -e "{YELLOW}\[7/8\] 绑定用户到角色...{NC}"

docker exec etcd1 etcdctl --endpoints={ETCD_ENDPOINTS} user grant-role {APP_USER} readwrite

echo -e "{GREEN}✓ 用户角色绑定完成{NC}"

启用认证

echo -e "{YELLOW}\[8/8\] 启用认证...{NC}"

docker exec etcd1 etcdctl --endpoints=${ETCD_ENDPOINTS} auth enable || echo "认证可能已启用"

echo -e "{GREEN}✓ 认证已启用{NC}"

测试认证

echo -e "{YELLOW}\[测试\] 测试认证...{NC}"

echo -e "使用 root 用户测试:"

docker exec etcd1 etcdctl --endpoints={ETCD_ENDPOINTS} --user=root:{ROOT_PASSWORD} put /test/auth "authentication works"

docker exec etcd1 etcdctl --endpoints={ETCD_ENDPOINTS} --user=root:{ROOT_PASSWORD} get /test/auth

echo -e ""

echo -e "使用 ${APP_USER} 用户测试:"

docker exec etcd1 etcdctl --endpoints={ETCD_ENDPOINTS} --user={APP_USER}:{APP_PASSWORD} put /test/{APP_USER} "app user works"

docker exec etcd1 etcdctl --endpoints={ETCD_ENDPOINTS} --user={APP_USER}:{APP_PASSWORD} get /test/{APP_USER}

echo -e ""

echo -e "{GREEN}========================================{NC}"

echo -e "{GREEN}用户权限配置完成!{NC}"

echo -e "{GREEN}========================================{NC}"

echo -e "Root 用户: root"

echo -e "Root 密码: ${ROOT_PASSWORD}"

echo -e ""

echo -e "应用用户: ${APP_USER}"

echo -e "应用密码: ${APP_PASSWORD}"

echo -e ""

echo -e "{YELLOW}重要提示:{NC}"

echo -e "1. 请妥善保管这些密码"

echo -e "2. 建议修改密码: etcdctl user passwd <username>"

echo -e "3. 连接字符串: ${ETCD_ENDPOINTS}"

echo -e ""

echo -e "使用示例:"

echo -e " etcdctl --endpoints={ETCD_ENDPOINTS} --user={APP_USER}:${APP_PASSWORD} get / --prefix"

echo -e "{GREEN}========================================{NC}"

相关推荐
赵渝强老师4 分钟前
【赵渝强老师】OceanBase的配置文件与配置项
数据库·oceanbase
玖日大大41 分钟前
OceanBase SeekDB:AI 原生数据库的技术革命与实践指南
数据库·人工智能·oceanbase
高溪流2 小时前
3.数据库表的基本操作
数据库·mysql
alonewolf_992 小时前
深入剖析MySQL锁机制与MVCC原理:高并发场景下的数据库核心优化
数据库·mysql
一 乐2 小时前
绿色农产品销售|基于springboot + vue绿色农产品销售系统(源码+数据库+文档)
java·前端·数据库·vue.js·spring boot·后端·宠物
Codeking__3 小时前
Redis初识——什么是Redis
数据库·redis·mybatis
k***1953 小时前
Spring 核心技术解析【纯干货版】- Ⅶ:Spring 切面编程模块 Spring-Instrument 模块精讲
前端·数据库·spring
程序员黄老师3 小时前
主流向量数据库全面解析
数据库·大模型·向量·rag
Full Stack Developme3 小时前
Redis 可以实现哪些业务功能
数据库·redis·缓存
rgeshfgreh3 小时前
Spring事务传播机制深度解析
java·前端·数据库