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: 40efba210bee
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` (number)
प्रतिनिधि कीज़: `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` | एडमिन (`audit:read`) | फ़िल्टर के साथ ऑडिट प्रविष्टियों को JSON या CSV के रूप में निर्यात करें |
| `GET` | `/api/v1/enterprise/config/export` | एडमिन (`system:health`) | संपादित इंस्टेंस कॉन्फ़िग, कस्टम भूमिकाएँ, और टीमें निर्यात करें |
| `POST` | `/api/v1/enterprise/config/import` | एडमिन (`system:health`) | कॉन्फ़िग आयात करें, वैकल्पिक ड्राई रन के साथ |
| `GET` | `/api/v1/enterprise/config/export` | पूर्ण अंतर्निहित एडमिन | संपादित इंस्टेंस कॉन्फ़िग, कस्टम भूमिकाएँ, और टीमें निर्यात करें |
| `POST` | `/api/v1/enterprise/config/import` | पूर्ण अंतर्निहित एडमिन | कॉन्फ़िग आयात करें, वैकल्पिक ड्राई रन के साथ |
| `GET` | `/api/v1/enterprise/ip-allowlist` | एडमिन (`security:manage`) | कॉन्फ़िगर किया गया CIDR अनुमति-सूची पढ़ें |
| `PUT` | `/api/v1/enterprise/ip-allowlist` | एडमिन (`security:manage`) | सेल्फ़-लॉकआउट रोकथाम के साथ CIDR अनुमति-सूची अपडेट करें |
| `GET` | `/api/v1/enterprise/legal-hold` | एडमिन (`compliance:manage`) | उपयोगकर्ता और टीम लीगल होल्ड की सूची बनाएँ |