fix: enforce settings authority boundaries (#618)

Close generic settings authorization bypasses and enforce per-setting authority, validation, redaction, transactional config import, and route-local write rate limiting.
This commit is contained in:
SnapOtter
2026-07-22 20:15:38 +08:00
committed by GitHub
parent 0467e87bfe
commit 44d8109486
63 changed files with 2287 additions and 731 deletions
+7 -5
View File
@@ -1,7 +1,7 @@
---
description: "完全な REST API リファレンス。ツールエンドポイント、バッチ処理、パイプライン、ファイルライブラリ、認証、チーム、管理者操作。"
i18n_output_hash: aa42f6d4ddbe
i18n_source_hash: b89b5df16af5
i18n_source_hash: 7e0a0db4abe0
i18n_provenance: human
---
@@ -533,7 +533,7 @@ data: {"jobId":"...","type":"batch","status":"processing","completedFiles":2,"to
## 設定 {#settings}
ランタイムのキー・バリュー設定(認証済みユーザーは誰でも読み取り可能、書き込みは管理者のみ)
ランタイム設定では、認識済みキーの閉じた集合を使用します。読み取りには `settings:read`、書き込みには `settings:write` が必要です。また、セキュリティおよびコンプライアンスのキーには、それぞれ `security:manage` または `compliance:manage` も必要です。秘密の設定には完全な管理者権限が必要で、専用エンドポイントが管理する認証情報と状態は、ここでは読み取り専用です。一括更新は、いずれかの値が書き込まれる前に検証されます
| メソッド | パス | 説明 |
|--------|------|-------------|
@@ -541,7 +541,7 @@ data: {"jobId":"...","type":"batch","status":"processing","completedFiles":2,"to
| `PUT` | `/api/v1/settings` | 設定を一括更新(キー・バリューのペアを含む JSON ボディ) |
| `GET` | `/api/v1/settings/:key` | キーで特定の設定を取得 |
既知のキー: `disabledTools`(ツール ID の JSON 配列), `enableExperimentalTools`bool 文字列), `loginAttemptLimit`数値)
代表的なキー: `disabledTools`(ツール ID の JSON 配列)`enableExperimentalTools`ブール値)、`loginAttemptLimit`セキュリティポリシー)、`auditRetentionDays`(コンプライアンスポリシー)。認識されていないキーは拒否されます
## 環境設定 {#preferences}
@@ -636,11 +636,13 @@ arm64 の `linux-arm64-cpu-py311` アーカイブを使用します。別のタ
これらのルートは、関連するエンタープライズ機能によってライセンスゲートされています。それでも、記載された SnapOtter のパーミッションを必要とします。
**完全な組み込み管理者**とは、認証された主体が `admin` ロールを持ち、管理者権限の完全かつ実効的なセットを保持していることを意味します。管理者権限が一つでも欠ける API キーのスコープは対象外です。
| メソッド | パス | アクセス | 説明 |
|--------|------|--------|-------------|
| `GET` | `/api/v1/enterprise/audit/export` | Admin`audit:read`) | 監査エントリをフィルタ付きで JSON または CSV としてエクスポート |
| `GET` | `/api/v1/enterprise/config/export` | Admin`system:health` | 秘匿化されたインスタンス設定、カスタムロール、チームをエクスポート |
| `POST` | `/api/v1/enterprise/config/import` | Admin`system:health` | 設定をインポート(オプションのドライラン付き) |
| `GET` | `/api/v1/enterprise/config/export` | 完全な組み込み管理者 | 秘匿化されたインスタンス設定、カスタムロール、チームをエクスポート |
| `POST` | `/api/v1/enterprise/config/import` | 完全な組み込み管理者 | 設定をインポート(オプションのドライラン付き) |
| `GET` | `/api/v1/enterprise/ip-allowlist` | Admin`security:manage`) | 設定された CIDR 許可リストを読み取る |
| `PUT` | `/api/v1/enterprise/ip-allowlist` | Admin`security:manage`) | 自己ロックアウト防止付きで CIDR 許可リストを更新 |
| `GET` | `/api/v1/enterprise/legal-hold` | Admin`compliance:manage`) | ユーザーおよびチームのリーガルホールドを一覧表示 |