CroupierCroupier
指南
架构
API 参考
  • C++ SDK
  • Go SDK
  • Java SDK
  • JavaScript SDK
  • Python SDK
  • C# SDK
  • Lua SDK
分析
GitHub
指南
架构
API 参考
  • C++ SDK
  • Go SDK
  • Java SDK
  • JavaScript SDK
  • Python SDK
  • C# SDK
  • Lua SDK
分析
GitHub
  • 入门指南

    • 首页
    • 新手教程
    • 快速开始
    • 安装指南
    • 配置管理
    • 部署指南
    • 常见问题
  • 核心概念

    • 系统概览
    • 虚拟对象系统
    • 函数管理
    • 权限控制
  • 运维指南

    • 监控指南
    • 安全配置
    • 故障排查

权限控制

Croupier 实现零信任安全模型,提供 RBAC/ABAC 混合权限控制、操作审批和完整审计链。

目录

  • 目录
  • 权限模型
    • 整体架构
    • RBAC 模型
    • ABAC 模型
  • 用户和角色
    • 用户定义
    • 角色定义
  • 权限定义
    • 权限格式
    • 游戏作用域
  • 函数权限配置
    • 基础权限
    • ABAC 表达式
    • 可用表达式
    • 可用变量
  • 审批流程
    • 双人规则
    • 审批流程
    • 审批 API
  • 审计日志
    • 审计事件
    • 敏感字段脱敏
    • 审计链防篡改
  • 风险等级
    • 风险分级
    • 风险配置
  • 限流保护
    • 函数级限流
    • 用户级限流
  • 最佳实践
    • 1. 最小权限原则
    • 2. 环境隔离
    • 3. 审批配置
    • 4. 审计保留
  • 相关文档

权限模型

整体架构

RBAC 模型

RBAC (Role-Based Access Control) 基于角色的访问控制。

用户 (User)
  ↓ 拥有
角色 (Role)
  ↓ 分配
权限 (Permission)
  ↓ 保护
函数 (Function)

ABAC 模型

ABAC (Attribute-Based Access Control) 基于属性的访问控制。

// 评估表达式
user.roles.includes('admin') || (game_id === 'my-game' && env === 'dev')

用户和角色

用户定义

{
  "user_id": "user_123",
  "username": "admin",
  "email": "admin@example.com",
  "roles": ["admin", "operator"],
  "attributes": {
    "department": "operations",
    "level": 5
  }
}

角色定义

{
  "role_id": "admin",
  "name": "管理员",
  "permissions": [
    "*.*"  // 所有权限
  ]
}

{
  "role_id": "gm",
  "name": "游戏管理员",
  "permissions": [
    "player.*",
    "item.*",
    "guild.*"
  ]
}

{
  "role_id": "viewer",
  "name": "查看者",
  "permissions": [
    "player.view",
    "item.view"
  ]
}

权限定义

权限格式

{entity}.{operation}

示例:
- player.ban      # 封禁玩家
- player.view     # 查看玩家
- item.create     # 创建物品
- item.delete     # 删除物品
- *.*             # 所有权限(谨慎使用)

游戏作用域

权限可以限定到特定游戏:

game:{game_id}:{permission}

示例:
- game:my-game:player.ban    # 仅 my-game 的封禁权限
- game:test-game:*.*         # test-game 的所有权限

函数权限配置

基础权限

{
  "id": "player.ban",
  "auth": {
    "permission": "player.ban"
  }
}

ABAC 表达式

{
  "id": "player.ban",
  "auth": {
    "permission": "player.ban",
    "allow_if": "has_role('admin') || has_role('senior_gm')"
  }
}

可用表达式

函数说明示例
has_role(role)检查角色has_role('admin')
has_permission(perm)检查权限has_permission('player.view')
==等于env == 'prod'
!=不等于env != 'dev'
&&逻辑与has_role('admin') && env == 'prod'
||逻辑或has_role('admin') || has_role('gm')
()分组(a || b) && c

可用变量

变量类型说明
userobject当前用户信息
user.rolesarray用户角色列表
game_idstring目标游戏 ID
envstring环境 (dev/staging/prod)
function_idstring被调用的函数 ID

审批流程

双人规则

高风险操作需要双人审批:

{
  "id": "player.ban",
  "auth": {
    "permission": "player.ban",
    "two_person_rule": true,
    "approval": {
      "enabled": true,
      "threshold": 2  // 需要两人审批
    }
  }
}

审批流程

审批 API

# 创建审批请求
POST /api/approvals
{
  "function_id": "player.ban",
  "payload": {...},
  "reason": "玩家使用外挂"
}

# 获取待审批列表
GET /api/approvals?state=pending

# 审批通过
POST /api/approvals/{id}/approve

# 审批拒绝
POST /api/approvals/{id}/reject
{
  "reason": "证据不足"
}

审计日志

审计事件

所有操作都会记录审计日志:

{
  "audit_id": "audit_20241201_001",
  "timestamp": "2024-12-01T10:30:00Z",
  "user": {
    "user_id": "user_123",
    "username": "admin"
  },
  "action": "function.invoke",
  "game_id": "my-game",
  "env": "prod",
  "function_id": "player.ban",
  "payload_preview": {
    "player_id": "***",
    "duration": 24
  },
  "result": "success",
  "approval_id": "approval_123",
  "ip": "192.168.1.100",
  "ip_region": "中国 上海"
}

敏感字段脱敏

# 配置脱敏字段
server:
  audit:
    sensitive_fields:
      - "password"
      - "token"
      - "secret"
      - "api_key"

审计链防篡改

每条审计记录包含哈希值:

{
  "audit_id": "audit_001",
  "hash": "sha256(prev_hash + content)",
  "prev_hash": "sha256(...)"
}

风险等级

风险分级

等级说明审批要求
low低风险无需审批
medium中风险可选审批
high高风险强制双人审批

风险配置

{
  "id": "player.ban",
  "ui": {
    "risk_level": "high",
    "risk_warning": "高风险操作,封禁后玩家无法登录",
    "confirm_message": "确认封禁玩家?"
  }
}

限流保护

函数级限流

{
  "id": "player.ban",
  "semantics": {
    "rate_limit": "10rps",
    "concurrency": 5
  }
}

用户级限流

{
  "semantics": {
    "user_rate_limit": "5rps",
    "user_burst": 10
  }
}

最佳实践

1. 最小权限原则

// ❌ 不推荐:过度授权
{
  "roles": ["admin"]  // 拥有所有权限
}

// ✅ 推荐:按需授权
{
  "roles": ["gm"],  // 仅游戏管理权限
  "permissions": ["player.ban", "player.view"]
}

2. 环境隔离

{
  "auth": {
    "allow_if": "env == 'dev' || has_role('admin')"
  }
}

3. 审批配置

{
  "auth": {
    "approval": {
      "enabled": true,
      "threshold": "has_role('admin') ? 1 : 2",
      "approvers": ["admin", "senior_gm"],
      "timeout": "24h"
    }
  }
}

4. 审计保留

server:
  audit:
    enabled: true
    retention_days: 365
    backup_enabled: true

相关文档

  • 函数管理
  • 配置管理
  • 安全配置
在 GitHub 上编辑此页
最后更新: 2026/1/9 23:19
Prev
函数管理