版本: v3.0 Per-Team Roles
狀態: Production Ready
權限系統文檔:docs/PERMISSION_RULES.md
一套為多微服務架構設計的集中式 API Token 管理系統,採用 Per-Team Roles 權限架構,支持多團隊協作與細粒度權限控制。
- ✅ Token 管理: 創建、查看、撤銷 API Token
- ✅ 路由管理: 動態新增/修改/刪除微服務路由
- ✅ Per-Team Roles: 每團隊獨立角色系統,完美團隊隔離
- ✅ 用戶管理: 完整的用戶與團隊成員管理
- ✅ 團隊管理: 創建團隊、管理成員、分配權限
- ✅ 用戶邀請: Clerk Invitations,支持 Google Login
- ✅ 審計日誌: 記錄所有管理操作
- ✅ Modern UI: React 18 + Clerk 認證
- ✅ 全球分佈: Cloudflare Edge Network 低延遲
n8n Workflows
↓
Cloudflare Worker (API Gateway)
↓
Backend Microservices
Token Manager (Railway)
↓
PostgreSQL
↓
Cloudflare KV (配置同步)
-
Token Manager (Railway)
- 後端: FastAPI + PostgreSQL
- 前端: HTML/CSS/JS
- 提供 Web UI 管理 Token 和路由
-
Cloudflare Worker (Edge Network)
- 驗證 API Key
- 路由轉發到對應後端
-
Cloudflare KV (全球分佈存儲)
- 存儲 Token 元數據
- 存儲路由映射
token-manager/
├── docs/ # 📚 文檔
│ ├── PRD.md # 產品需求文檔
│ ├── TODO.md # 開發任務清單
│ └── draft.md # 原始設計草稿
│
├── backend/ # 🔧 後端 API (Railway Service 1)
│ ├── main.py # FastAPI 主應用
│ ├── models.py # Pydantic 模型
│ ├── database.py # 數據庫連接
│ ├── cloudflare.py # KV 同步
│ └── requirements.txt
│
├── frontend/ # 🎨 前端 UI (Railway Service 2)
│ └── index.html # 管理界面
│
├── worker/ # ⚡ Cloudflare Worker
│ ├── src/
│ │ └── worker.js # Worker 代碼
│ ├── wrangler.toml # Worker 配置
│ └── package.json
│
├── .env.example # 環境變數範例
├── .gitignore
└── README.md
- Cloudflare 帳號 (免費版即可)
- Railway 帳號 (免費版即可)
- GitHub 帳號
- Node.js (用於部署 Worker)
# 安裝 Wrangler CLI
npm install -g wrangler
# 登入 Cloudflare
wrangler login
# 創建 KV Namespace
cd worker
wrangler kv:namespace create "TOKENS"記下返回的 Namespace ID。
- 訪問 Cloudflare Dashboard → My Profile → API Tokens
- 點擊 "Create Token"
- 選擇 "Edit Cloudflare Workers" 模板
- 權限:
Account > Workers KV Storage > Edit - 記下 Token 值
在 Cloudflare Dashboard 右上角可找到 Account ID
# 初始化 Git (如果還沒有)
git init
git add .
git commit -m "Initial commit"
# 推送到 GitHub
git remote add origin https://github.com/your-username/token-manager.git
git push -u origin main- 訪問 Railway Dashboard
- 點擊 "New Project" → "Deploy from GitHub repo"
- 選擇您的
token-manager倉庫 - 添加 PostgreSQL:
- 點擊 "+ New" → "Database" → "Add PostgreSQL"
- 配置後端服務:
- 點擊後端服務
- Settings → Root Directory:
backend - Variables → 添加環境變數:
DATABASE_URL=${{Postgres.DATABASE_URL}} CF_ACCOUNT_ID=your_cloudflare_account_id CF_API_TOKEN=your_cloudflare_api_token CF_KV_NAMESPACE_ID=your_kv_namespace_id
- Deploy!
- 在同一個 Railway Project 中
- 點擊 "+ New" → "GitHub Repo"
- 選擇同一個倉庫
- Settings → Root Directory:
frontend - Deploy!
在後端服務的 Settings → Domains 中記錄 URL,例如:
https://token-manager-backend-production.up.railway.app
修改 frontend/index.html 中的 API_URL:
const API_URL = 'https://token-manager-backend-production.up.railway.app';提交並推送,Railway 會自動重新部署。
cd worker
# 更新 wrangler.toml 中的 KV Namespace ID
# 將 YOUR_KV_NAMESPACE_ID 替換為實際的 ID
# 部署
npm run deploy部署成功後會顯示 Worker URL:
https://api-gateway.your-subdomain.workers.dev
- 訪問前端管理界面
- 點擊 "Token 管理" 標籤
- 填寫表單:
- 名稱: Marketing-John
- 部門: marketing
- 權限: image,data 或 * (全部權限)
- 過期天數: 90
- 點擊 "創建 Token"
- 立即複製顯示的 Token (只顯示一次!)
- 點擊 "路由管理" 標籤
- 填寫表單:
- 路徑: /api/image
- 後端 URL: https://image-service.railway.app
- 描述: 圖片處理服務
- 點擊 "新增路由"
- 約 60 秒後生效
在 n8n HTTP Request 節點中:
URL: https://api-gateway.your-subdomain.workers.dev/api/image/process
Method: POST
Headers:
X-API-Key: ntk_xxxxxxxxxxxxxxxxxxxxx
Content-Type: application/json
Body:
{
"image_url": "https://example.com/image.jpg"
}
-
Token 管理
- Token 只在創建時顯示一次,請妥善保管
- 定期輪換 Token (建議 90 天)
- 不再使用的 Token 立即撤銷
-
權限控制
- 遵循最小權限原則
- 不同部門使用不同 Token
- 使用具體的 scopes 而非 *
-
監控
- 定期查看審計日誌
- 監控 Cloudflare Dashboard 的請求統計
cd backend
# 創建虛擬環境
uv venv
# 安裝依賴
uv pip install -r requirements.txt
# 設置環境變數
cp ../.env.example .env
# 編輯 .env 填入實際值
# 啟動服務
uv run uvicorn main:app --reload --port 8000訪問 http://localhost:8000/docs 查看 API 文檔
cd worker
# 安裝依賴
npm install
# 本地測試
npm run dev- Worker 請求: 100,000 次/天
- KV 讀取: 100,000 次/天
- KV 寫入: 1,000 次/天
- KV 存儲: 1 GB
對於 100 個 n8n 工作流完全夠用!
- $5 免費額度/月
- 512 MB RAM
- 1 GB Disk
升級到 Hobby ($5/月) 可獲得更多資源
- 檢查 Token 是否正確 (包括
ntk_前綴) - 檢查 Token 是否已被撤銷
- 檢查 Token 是否過期
- 等待 60 秒讓 KV 同步完成
- 檢查路由路徑是否以
/開頭 - 檢查後端 URL 是否可訪問
- 等待 60 秒讓 KV 同步完成
- 在 Cloudflare Dashboard 檢查 KV 中的
routeskey
- 檢查環境變數是否正確設置
- 檢查 PostgreSQL 連接
- 查看 Railway 日誌
| 指標 | 目標 | 實際 |
|---|---|---|
| Worker 延遲 (P95) | < 200ms | ~50ms |
| Token 撤銷生效時間 | < 60s | < 60s |
| 路由更新生效時間 | < 60s | < 60s |
| 系統可用性 | 99% | 99.9%+ |
- ✅ Token CRUD
- ✅ 路由 CRUD
- ✅ Worker 驗證與轉發
- ✅ Web UI
- ✅ 審計日誌
- ⏳ 管理系統登入認證
- ⏳ Token 使用統計
- ⏳ Rate Limiting
- ⏳ Webhook 通知
- ⏳ SSO 整合
- ⏳ 多環境支持
- ⏳ API 版本控制
完整的 API 文檔請參考:
歡迎提交 Issue 和 Pull Request!
MIT License
- 📚 產品需求文檔
- 📋 開發任務清單
- 🏗️ Per-Team Roles 分析
PERMISSIONS_GUIDE.md- 已被 PERMISSION_RULES.md 取代RBAC_REDESIGN.md- 舊架構設計
🚀 現在開始使用吧!