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

相关推荐
丁丁丁梦涛26 分钟前
navicat跨服务器连接MySQL数据库
服务器·数据库·mysql
tgethe30 分钟前
mysql-索引详解
数据库·mysql
一个天蝎座 白勺 程序猿32 分钟前
Apache IoTDB(11):分段聚合深度解析——从原理到实战的完整指南
数据库·apache·iotdb
Java Fans36 分钟前
PyQt实现SQLite数据库操作案例详解
数据库·sqlite·pyqt
子夜江寒36 分钟前
MySQL 学习
数据库·mysql
SAP小崔说事儿44 分钟前
SAP B1 库龄分析报表(SQL版本&非批次管理)
数据库·sql·sap·sap b1·business one·批次管理·库龄分析
不穿格子的程序员1 小时前
Redis篇7——Redis深度剖析:主从数据同步原理与实践优化
数据库·redis·缓存·数据同步
廋到被风吹走1 小时前
【数据库】【Redis】监控与告警体系构建
数据库·redis·缓存
老华带你飞1 小时前
个人网盘管理|基于springboot + vue个人网盘管理系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端
代码or搬砖1 小时前
悲观锁讲解
开发语言·数据库