API Keys
API Key 用於認證 API 請求,讓外部系統與自動化腳本安全地存取平台資源。
端點概覽
| 方法 | 路徑 | 說明 |
|---|---|---|
| POST | /api/v1/api-keys | 建立 API Key |
| GET | /api/v1/api-keys | 查詢 API Key 列表 |
| GET | /api/v1/api-keys/{id} | 取得單一 API Key |
| PATCH | /api/v1/api-keys/{id} | 更新 API Key |
| DELETE | /api/v1/api-keys/{id} | 撤銷 API Key |
| POST | /api/v1/api-keys/{id}/rotate | 輪換 API Key |
使用場景
- 系統整合:為外部系統建立 API Key 進行資料交換
- 自動化腳本:在 CI/CD 或排程任務中呼叫 API
- 第三方應用:讓合作夥伴存取指定資源
建立 API Key
步驟
- 登入 SaaS 儀表板
- 前往 帳號設定 → API Keys (
/account/api-keys) - 點擊 「建立 API Key」
- 填寫名稱、說明、權限範圍(Scopes)、過期時間等
- 確認建立後,系統會顯示完整的 API Key
⚠️ 重要:API Key 只會顯示一次,請立即複製並妥善保存。建議存放於環境變數或密鑰管理系統(如 HashiCorp Vault、AWS Secrets Manager)。
可設定欄位
| 欄位 | 說明 |
|---|---|
| 名稱 | 1-100 字元,用於識別 Key 的用途 |
| 說明 | 選填,最多 500 字元 |
| 權限範圍 | 選擇 Scopes(不選則使用全部權限) |
| 過期天數 | 1-3650 天(不填則永不過期) |
| 速率限制 | 每分鐘請求上限(1-10000) |
| IP 白名單 | 最多 50 個 IP/CIDR(IPv4) |
| 元數據 | 自訂 key-value 資料 |
💡 建立後可透過 API 或前端頁面進行更新、停用、輪換與撤銷。
使用 API Key
在 API 請求的 Authorization Header 中帶入 API Key:
curl -X GET https://api.example.com/api/v1/devices \
-H "Authorization: Bearer syncai_3rd_Ab3xKm9P_h7sYn2xQkL9..."
Key 格式
syncai_3rd_{prefix}_{secret}
| 部分 | 說明 |
|---|---|
syncai_3rd_ | 固定前綴,標識為第三方 Key |
prefix | 8 字元前綴,用於識別(安全顯示用) |
secret | 加密後的密鑰主體 |
權限範圍 (Scopes)
建立 API Key 時可選擇以下權限範圍,決定該 Key 能存取的資源:
| Scope | 說明 |
|---|---|
device:read | 讀取設備資訊 |
device:write | 建立/修改/刪除設備 |
scene:read | 讀取場景配置 |
scene:write | 建立/修改場景 |
task:read | 讀取分析任務狀態 |
task:write | 啟動/停止分析任務 |
alert:read | 讀取告警規則與告警事件 |
alert:write | 建立/修改/刪除告警規則 |
analytics:read | 讀取分析結果與統計 |
webhook:read | 讀取 Webhook 設定與投遞紀錄 |
webhook:write | 建立/修改/刪除 Webhook 設定 |
💡 若不指定
scopes,將授予上述全部權限。權限採用 AND 邏輯 — 需同時擁有端點所需的全部權限才能存取。
Key 管理操作
查詢列表
GET /api/v1/api-keys
取得單筆
GET /api/v1/api-keys/{id}
更新
PATCH /api/v1/api-keys/{id}
可更新 name、description、scopes、isActive、rateLimit、allowedIps、metadata。
撤銷
DELETE /api/v1/api-keys/{id}
輪換
POST /api/v1/api-keys/{id}/rotate
輪換後會生成新密鑰;舊密鑰應立即停用並替換部署環境。
安全機制
| 機制 | 說明 |
|---|---|
| IP 白名單 | 設置 allowedIps 後,僅白名單中的 IP/CIDR 可使用 |
| Rate Limit | 每分鐘滑動窗口限流 |
| Scope AND 邏輯 | 端點所需多個 scope 全部滿足才能存取 |
| Key 過期 | 超過設定天數自動失效 |
| 即時撤銷 | 在前端管理頁面可立即撤銷或停用 |
Rate Limiting 規則
使用 API Key 呼叫端點時,適用以下速率限制:
| 端點類型 | 限制 | 適用範圍 |
|---|---|---|
| 一般端點 | 60 req/min | 設備/場景/告警查詢 |
| 分析控制 | 30 req/min | 啟動/停止分析 |
| 資料寫入 | 30 req/min | 建立/更新資源 |
| 文件上傳 | 10 req/min | 圖片/文件上傳 |
| Webhook 測試 | 5 req/min | 測試 Webhook |
HTTP Headers
每次回應會包含以下 Rate Limit 資訊:
| Header | 說明 |
|---|---|
X-RateLimit-Limit | 該端點的速率限制 |
X-RateLimit-Remaining | 剩餘可用請求數 |
X-RateLimit-Reset | 限制重置時間 (Unix timestamp) |
Retry-After | 被限流時,建議重試秒數 |