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}"

相关推荐
数据库小学妹几秒前
工业物联网时序数据库怎么选?存-查-算一体化选型指南
数据库·物联网·时序数据库·工业物联网·融合数据库·时序选型
wespaul4 分钟前
VeapAI 自然语言操作实战|第 08 篇:治理层——审计、指标、评估与权限
运维·网络·数据库
小羊没烦恼!8 分钟前
浅谈SQL Server中的事务日志(二)----事务日志在修改数据时的角色
前端·数据库·后端·python·web安全·oracle
hgf101111 分钟前
大内密探 · 案卷 1.2:一夫当关,万夫莫开(Receive Enable)
数据库·mysql
data analyse 45627 分钟前
页面卸载时埋点上报总丢失?sendBeacon 上报与补偿方案
大数据·运维·服务器·前端·数据库·人工智能·数据分析
企查查数据服务28 分钟前
充电桩集采准入:用企业数据做供应商失信批量核验
大数据·数据库·人工智能
敲上瘾35 分钟前
分布式系统——Redis哨兵:自动故障转移与选举原理
linux·数据库·redis·分布式·缓存·微服务
2501_933923251 小时前
MySQL CRUD 详解:表数据插入、更新与删除,附生产避坑指南
数据库·mysql
爱喝水的鱼丶3 小时前
SAP-ABAP:S/4 HANA ABAP 新特性入门:与 ECC ABAP 的核心差异、架构优势与学习路径规划
运维·数据库·性能优化·sap·abap·hana·开发交流
余槐i10 小时前
PostgreSQL 函数索引报错 must be immutable:3种绕法与代价
数据库·后端·sql·postgresql·性能优化