本文档风哥主要介绍Rancher全局用户、角色与RBAC权限体系实战,包括Rancher数据库RBAC概念、Rancher数据库用户管理、Rancher数据库角色管理、Rancher数据库RBAC准备、Rancher数据库RBAC要求、Rancher数据库RBAC规划、Rancher数据库创建用户、Rancher数据库创建角色、Rancher数据库配置RBAC、Rancher数据库RBAC管理、Rancher数据库RBAC测试、Rancher数据库RBAC审计等内容,风哥教程参考Rancher官方文档用户管理、角色管理、RBAC等内容,适合运维人员在学习和测试中使用,如果要应用于生产环境则需要自行确认。
Part01-基础概念与理论知识
1.1 Rancher数据库RBAC概念
RBAC(Role-Based Access Control,基于角色的访问控制)是Rancher中用于管理用户权限的核心机制。RBAC通过定义角色(Role)和角色绑定(RoleBinding)来控制用户对资源的访问权限。Rancher支持两种类型的RBAC:全局RBAC和集群RBAC。全局RBAC在全局级别管理用户和角色,适用于多集群环境;集群RBAC在单个集群级别管理权限,适用于单个集群环境。更多视频教程www.fgedu.net.cn
- 支持全局RBAC和集群RBAC
- 基于角色的权限管理
- 支持自定义角色
- 支持权限继承
- 支持审计日志
1.2 Rancher数据库用户管理
Rancher数据库用户管理包括本地用户和外部用户两种类型。本地用户是在Rancher中直接创建的用户,使用用户名和密码进行认证;外部用户是通过外部认证系统(如LDAP、AD、GitHub等)导入的用户。用户管理包括用户的创建、删除、禁用、启用等操作。每个用户可以分配一个或多个角色,从而获得相应的权限。学习交流加群风哥微信: itpux-com
- 本地用户:在Rancher中直接创建
- 外部用户:通过外部认证系统导入
- 服务账户:用于自动化任务
- 管理员用户:拥有所有权限
1.3 Rancher数据库角色管理
Rancher数据库角色管理包括系统角色和自定义角色两种类型。系统角色是Rancher预定义的角色,如管理员、只读用户、开发人员等;自定义角色是根据业务需求创建的角色,可以灵活定义权限。角色定义了用户可以执行的操作,如创建、读取、更新、删除资源等。角色可以绑定到用户、用户组或服务账户。学习交流加群风哥QQ113257174
- 系统角色:Rancher预定义的角色
- 自定义角色:根据业务需求创建
- 全局角色:在全局级别生效
- 集群角色:在集群级别生效
- 命名空间角色:在命名空间级别生效
Part02-生产环境规划与建议
2.1 Rancher数据库RBAC准备
Rancher数据库RBAC准备:
# 1. Rancher Server准备
– Rancher Server已部署
– Rancher Server可访问
– Rancher Server配置正确
# 2. 用户需求分析
– 确定用户类型
– 确定用户数量
– 确定用户权限需求
– 确定用户组织结构
# 3. 角色需求分析
– 确定角色类型
– 确定角色权限
– 确定角色继承关系
– 确定角色分配策略
# 4. 认证方式选择
– 本地认证
– LDAP/AD认证
– GitHub认证
– OIDC认证
# 5. 审计需求分析
– 确定审计范围
– 确定审计日志保留时间
– 确定审计日志存储位置
– 确定审计日志分析方式
2.2 Rancher数据库RBAC要求
Rancher数据库RBAC要求:
# 用户要求
– 用户名:唯一标识
– 密码:符合安全策略
– 邮箱:用于通知
– 角色:至少分配一个角色
# 角色要求
– 角色名称:唯一标识
– 角色权限:明确具体
– 角色描述:清晰易懂
– 角色继承:避免循环依赖
# 权限要求
– 权限粒度:最小权限原则
– 权限范围:明确资源范围
– 权限类型:CRUD操作
– 权限验证:定期审计
# 审计要求
– 审计日志:完整记录
– 审计保留:至少6个月
– 审计分析:定期分析
– 审计告警:异常告警
2.3 Rancher数据库RBAC规划
Rancher数据库RBAC规划:
# 用户规划
管理员用户:fgedu-admin
运维用户:fgedu-ops
开发用户:fgedu-dev
测试用户:fgedu-test
只读用户:fgedu-readonly
# 角色规划
管理员角色:cluster-admin
运维角色:cluster-operator
开发角色:developer
测试角色:tester
只读角色:readonly
# 权限规划
管理员角色:所有权限
运维角色:集群管理、应用部署、监控告警
开发角色:应用部署、日志查看
测试角色:应用查看、日志查看
只读角色:只读权限
# 审计规划
审计范围:所有用户操作
审计保留:6个月
审计存储:/Rancher/fgdata/audit
审计分析:ELK Stack
Part03-生产环境项目实施方案
3.1 Rancher数据库创建用户
3.1.1 Rancher数据库创建本地用户
# 步骤1:登录Rancher管理界面
# 步骤2:点击”用户和认证” – “用户”
# 步骤3:点击”创建用户”按钮
# 步骤4:填写用户信息:
# 用户名:fgedu-dev
# 全名:风哥开发用户
# 密码:Fgedu@123456
# 确认密码:Fgedu@123456
# 描述:Rancher数据库开发用户
# 步骤5:点击”创建”按钮
# 通过API创建本地用户
[root@rancher ~]# curl -k -X POST \
-H “Content-Type: application/json” \
-u “admin:password” \
https://192.168.1.100/v3/users \
-d ‘{
“username”: “fgedu-dev”,
“name”: “风哥开发用户”,
“password”: “Fgedu@123456”,
“description”: “Rancher数据库开发用户”
}’
{
“id”: “u-1234567890”,
“type”: “user”,
“username”: “fgedu-dev”,
“name”: “风哥开发用户”,
“description”: “Rancher数据库开发用户”,
“enabled”: true,
“mustChangePassword”: false
}
# 查看用户列表
[root@rancher ~]# curl -k -u “admin:password” \
https://192.168.1.100/v3/users
{
“data”: [
{
“id”: “u-1234567890”,
“type”: “user”,
“username”: “admin”,
“name”: “Administrator”,
“enabled”: true
},
{
“id”: “u-2345678901”,
“type”: “user”,
“username”: “fgedu-dev”,
“name”: “风哥开发用户”,
“enabled”: true
}
]
}
3.2 Rancher数据库创建角色
3.2.1 Rancher数据库创建自定义角色
# 步骤1:登录Rancher管理界面
# 步骤2:点击”用户和认证” – “角色” – “创建角色”
# 步骤3:填写角色信息:
# 角色名称:fgedu-developer
# 角色描述:Rancher数据库开发角色
# 角色类型:集群角色
# 步骤4:配置角色权限:
# Pods:创建、读取、更新、删除
# Services:创建、读取、更新、删除
# Deployments:创建、读取、更新、删除
# ConfigMaps:创建、读取、更新、删除
# Secrets:读取
# Events:读取
# 步骤5:点击”创建”按钮
# 通过kubectl创建自定义角色
[root@rancher ~]# cat <
Annotations:
PolicyRule:
Resources Non-Resource URLs Resource Names Verbs
——— —————– ————– —–
pods [] [] [get list watch create update patch delete]
services [] [] [get list watch create update patch delete]
configmaps [] [] [get list watch create update patch delete]
secrets [] [] [get list]
events [] [] [get list watch]
deployments.apps [] [get list watch create update patch delete]
3.3 Rancher数据库配置RBAC
3.3.1 Rancher数据库绑定角色到用户
# 步骤1:登录Rancher管理界面
# 步骤2:点击”用户和认证” – “用户”
# 步骤3:选择用户:fgedu-dev
# 步骤4:点击”添加角色”按钮
# 步骤5:选择角色:fgedu-developer
# 步骤6:选择范围:集群
# 步骤7:点击”添加”按钮
# 通过kubectl绑定角色到用户
[root@rancher ~]# cat <
Annotations:
Role:
Kind: ClusterRole
Name: fgedu-developer
Subjects:
Kind Name Namespace
—- —- ———
User fgedu-dev
# 测试用户权限
[root@rancher ~]# kubectl auth can-i get pods –as=fgedu-dev
yes
[root@rancher ~]# kubectl auth can-i create deployments –as=fgedu-dev
yes
[root@rancher ~]# kubectl auth can-i delete secrets –as=fgedu-dev
no
Part04-生产案例与实战讲解
4.1 Rancher数据库RBAC管理
4.1.1 Rancher数据库管理用户
# 步骤1:登录Rancher管理界面
# 步骤2:点击”用户和认证” – “用户”
# 步骤3:查看用户列表
# 步骤4:选择用户进行操作:
# 编辑用户信息
# 禁用/启用用户
# 删除用户
# 重置密码
# 通过API管理用户
# 禁用用户
[root@rancher ~]# curl -k -X PUT \
-H “Content-Type: application/json” \
-u “admin:password” \
https://192.168.1.100/v3/users/u-2345678901 \
-d ‘{
“enabled”: false
}’
# 启用用户
[root@rancher ~]# curl -k -X PUT \
-H “Content-Type: application/json” \
-u “admin:password” \
https://192.168.1.100/v3/users/u-2345678901 \
-d ‘{
“enabled”: true
}’
# 删除用户
[root@rancher ~]# curl -k -X DELETE \
-u “admin:password” \
https://192.168.1.100/v3/users/u-2345678901
4.2 Rancher数据库RBAC测试
4.2.1 Rancher数据库测试用户权限
# 测试读取Pod权限
[root@rancher ~]# kubectl auth can-i get pods –as=fgedu-dev
yes
# 测试创建Pod权限
[root@rancher ~]# kubectl auth can-i create pods –as=fgedu-dev
yes
# 测试删除Pod权限
[root@rancher ~]# kubectl auth can-i delete pods –as=fgedu-dev
yes
# 测试读取Secret权限
[root@rancher ~]# kubectl auth can-i get secrets –as=fgedu-dev
yes
# 测试创建Secret权限
[root@rancher ~]# kubectl auth can-i create secrets –as=fgedu-dev
no
# 测试删除Secret权限
[root@rancher ~]# kubectl auth can-i delete secrets –as=fgedu-dev
no
# 测试读取所有资源权限
[root@rancher ~]# kubectl auth can-i get “*” –as=fgedu-dev –all-namespaces
no
# 测试创建所有资源权限
[root@rancher ~]# kubectl auth can-i create “*” –as=fgedu-dev –all-namespaces
no
# 使用用户凭证测试权限
[root@rancher ~]# kubectl get pods –kubeconfig=/home/fgedu-dev/.kube/config
NAME READY STATUS RESTARTS AGE
fgedu-nginx-1234567890-abcde 1/1 Running 0 10m
[root@rancher ~]# kubectl create deployment test –image=nginx –kubeconfig=/home/fgedu-dev/.kube/config
deployment.apps/test created
[root@rancher ~]# kubectl delete secret default-token-12345 –kubeconfig=/home/fgedu-dev/.kube/config
Error from server (Forbidden): secrets “default-token-12345” is forbidden: User “fgedu-dev” cannot delete resource “secrets” in API group “” in the namespace “default”
4.3 Rancher数据库RBAC审计
4.3.1 Rancher数据库查看审计日志
# 步骤1:登录Rancher管理界面
# 步骤2:点击”审计日志”
# 步骤3:筛选审计日志:
# 用户:fgedu-dev
# 操作类型:创建、读取、更新、删除
# 时间范围:最近7天
# 步骤4:查看审计日志详情
# 通过kubectl查看审计日志
[root@rancher ~]# kubectl get events –sort-by=.metadata.creationTimestamp
LAST SEEN TYPE REASON OBJECT MESSAGE
1m Normal Scheduled pod/test-1234567890-abcde Successfully assigned default/test-1234567890-abcde to rke2-worker1
1m Normal Pulling pod/test-1234567890-abcde Pulling image “nginx:latest”
1m Normal Pulled pod/test-1234567890-abcde Successfully pulled image “nginx:latest”
1m Normal Created pod/test-1234567890-abcde Created container test
1m Normal Started pod/test-1234567890-abcde Started container test
# 通过API查看审计日志
[root@rancher ~]# curl -k -u “admin:password” \
“https://192.168.1.100/v3/auditlogs?user=fgedu-dev&limit=10”
{
“data”: [
{
“id”: “auditlog-1234567890”,
“type”: “auditLog”,
“user”: “fgedu-dev”,
“action”: “create”,
“resourceType”: “deployment”,
“resourceName”: “test”,
“request”: “POST /apis/apps/v1/namespaces/default/deployments”,
“responseCode”: 201,
“timestamp”: “2026-04-10T10:00:00Z”
},
{
“id”: “auditlog-2345678901”,
“type”: “auditLog”,
“user”: “fgedu-dev”,
“action”: “delete”,
“resourceType”: “secret”,
“resourceName”: “default-token-12345”,
“request”: “DELETE /api/v1/namespaces/default/secrets/default-token-12345”,
“responseCode”: 403,
“timestamp”: “2026-04-10T10:01:00Z”
}
]
}
# 导出审计日志
[root@rancher ~]# curl -k -u “admin:password” \
“https://192.168.1.100/v3/auditlogs?user=fgedu-dev&limit=1000” \
-o /Rancher/fgdata/audit/fgedu-dev-audit.log
# 分析审计日志
[root@rancher ~]# grep -i “error\|forbidden\|unauthorized” /Rancher/fgdata/audit/fgedu-dev-audit.log
{“user”:”fgedu-dev”,”action”:”delete”,”resourceType”:”secret”,”responseCode”:403}
Part05-风哥经验总结与分享
5.1 Rancher数据库RBAC最佳实践
Rancher数据库RBAC最佳实践:
- 最小权限原则:只授予用户必要的权限
- 角色分离:将不同职责分配给不同角色
- 定期审计:定期审计权限配置和使用情况
- 及时回收:及时回收不必要的权限
- 文档记录:记录权限配置和变更
- 监控告警:配置异常操作告警
- 定期更新:定期更新密码和证书
5.2 Rancher数据库RBAC问题排查
Rancher数据库RBAC问题排查:
# 问题1:用户无法访问资源
# 现象:用户访问资源时提示权限不足
# 原因:角色未绑定、权限不足、角色配置错误
# 解决:
[root@rancher ~]# kubectl auth can-i get pods –as=fgedu-dev
[root@rancher ~]# kubectl get clusterrolebindings | grep fgedu
[root@rancher ~]# kubectl describe clusterrolebinding fgedu-developer-binding
[root@rancher ~]# kubectl describe clusterrole fgedu-developer
# 问题2:用户权限过大
# 现象:用户拥有不必要的权限
# 原因:角色配置不当、角色绑定错误
# 解决:
[root@rancher ~]# kubectl auth can-i –list –as=fgedu-dev –all-namespaces
[root@rancher ~]# kubectl get clusterrolebindings | grep fgedu
[root@rancher ~]# kubectl describe clusterrole fgedu-developer
[root@rancher ~]# kubectl edit clusterrole fgedu-developer
# 问题3:角色绑定不生效
# 现象:角色绑定后用户仍无权限
# 原因:角色绑定配置错误、缓存未刷新
# 解决:
[root@rancher ~]# kubectl get clusterrolebindings | grep fgedu
[root@rancher ~]# kubectl describe clusterrolebinding fgedu-developer-binding
[root@rancher ~]# kubectl auth can-i get pods –as=fgedu-dev
[root@rancher ~]# kubectl delete clusterrolebinding fgedu-developer-binding
[root@rancher ~]# kubectl apply -f fgedu-developer-binding.yaml
# 问题4:审计日志不完整
# 现象:审计日志缺少部分操作记录
# 原因:审计配置错误、日志存储不足
# 解决:
[root@rancher ~]# kubectl get events –sort-by=.metadata.creationTimestamp
[root@rancher ~]# kubectl logs -n kube-system rancher-1234567890-abcde
[root@rancher ~]# df -h /Rancher/fgdata/audit
[root@rancher ~]# du -sh /Rancher/fgdata/audit/*
5.3 Rancher数据库RBAC维护
Rancher数据库RBAC维护:
# 1. 定期检查
– 检查用户状态
– 检查角色配置
– 检查角色绑定
– 检查权限使用情况
# 2. 定期审计
– 审计用户权限
– 审计角色配置
– 审计角色绑定
– 审计操作日志
# 3. 定期更新
– 更新用户信息
– 更新角色权限
– 更新角色绑定
– 更新密码和证书
# 4. 定期清理
– 清理禁用用户
– 清理无用角色
– 清理无用绑定
– 清理过期日志
# 5. 定期备份
– 备份用户配置
– 备份角色配置
– 备份角色绑定
– 备份审计日志
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
