For the complete documentation index, see llms.txt. This page is also available as Markdown.

स्वीकृत इनपुट फ़ॉर्मैट

self-hosted Roboflow Inference server द्वारा स्वीकार किए जाने वाले input formats, और pickle किए गए numpy payloads तथा URL image fetching जैसे कम सुरक्षित विकल्पों को कैसे अक्षम करें।

यह क्यों महत्वपूर्ण है

Inference सर्वर को आसानी से इंटीग्रेट करने के लिए डिज़ाइन किया गया है, इसलिए कुछ सुविधाजनक लेकिन संभावित रूप से कम सुरक्षित डेटा-लोडिंग तरीके उपलब्ध हैं। प्रोडक्शन डिप्लॉयमेंट के लिए, कॉन्फ़िगरेशन विकल्प आपको उन व्यवहारों को अक्षम करने देते हैं।

यह पेज बताता है कि आपकी ज़रूरतों के अनुसार सर्वर को कैसे अधिक सुरक्षित बनाया जाए या अधिक लचीला व्यवहार कैसे सक्षम किया जाए।

पिकल किए गए numpy ऑब्जेक्ट्स का डीसिरियलाइज़ेशन

Inference सर्वर को अनुरोध भेजने का एक तरीका सीरियलाइज़ किए गए numpy ऑब्जेक्ट्स के साथ है:

import cv2
import pickle
import requests

image = cv2.imread("...")
img_str = pickle.dumps(image)

infer_payload = {
    "model_id": "{project_id}/{model_version}",
    "image": {
        "type": "numpy",
        "value": img_str,
    },
}

res = requests.post(
    "http://localhost:9001/infer/{task}",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    json=infer_payload,
)

संस्करण v0.14.0, इस payload प्रकार का डीसिरियलाइज़ेशन डिफ़ॉल्ट रूप से अक्षम है। आप इसे सेट करके सक्षम कर सकते हैं ALLOW_NUMPY_INPUT=True. देखें Inference CLI डॉक्स में देखें कि उस फ़्लैग के साथ सर्वर कैसे चलाया जाए। यह विकल्प Roboflow के होस्ट किए गए APIs में उपलब्ध नहीं है।

इमेज inference के लिए URLs भेजना

URLs से इमेज फ़ेच करना सुविधाजनक है, लेकिन इससे सर्वर को server-side request forgery (SSRF) हमलों:

Inference अनुरोध में दिए गए URL से सीधे इमेज लोड कर सकता है ({"image": {"type": "url", "value": "https://..."}}). जब भी कोई सर्वर ऐसे URL को फ़ेच करता है जिसे कॉलर नियंत्रित करता है, तो कॉलर उसे अपनी ओर से अनुरोध करने के लिए मोड़ने की कोशिश कर सकता है; इस तरह के हमले को server-side request forgery (SSRF) कहा जाता है। जो व्यक्ति आपके internal network तक सीधे नहीं पहुँच सकता, वह आपके सर्वर से, उदाहरण के लिए, यह फ़ेच करने को कह सकता है:

  • http://169.254.169.254/latest/meta-data/, cloud metadata service (AWS, GCP, Azure), जो instance credentials वापस दे सकता है।

  • http://127.0.0.1:9001/... और अन्य localhost सेवाएँ: admin panels, databases, या Inference सर्वर के अपने unauthenticated endpoints.

  • http://10.0.0.5/, http://192.168.1.1/, और अन्य private (RFC1918), link-local, CGNAT, या IPv6 ULA hosts जो आपके perimeter के पीछे स्थित हैं।

सार्वजनिक दिखने वाला hostname सार्वजनिक target का प्रमाण नहीं है: यह private IP पर resolve हो सकता है, किसी private IP पर redirect हो सकता है, या DNS rebinding का उपयोग कर सकता है (validation check के लिए public IP पर resolve होकर, फिर वास्तविक connection के लिए private IP पर)। Inference इनमें से सभी के लिए नियंत्रण प्रदान करता है।

यदि आपको इसकी आवश्यकता नहीं है, तो URL input बंद करें

सबसे मजबूत नियंत्रण यह है कि URL images को बिल्कुल स्वीकार ही न करें। यदि आपके clients हमेशा images को base64 या file uploads के रूप में भेजते हैं, तो URL fetching को पूरी तरह अक्षम कर दें:

जब आपको इसकी आवश्यकता हो, तब URL input को अधिक सुरक्षित बनाएं

जब URL images की आवश्यकता होती है, तब ये flags सीमित करते हैं कि सर्वर क्या फ़ेच कर सकता है। साथ मिलकर ये internal targets को अस्वीकार करते हैं, connection को validated IP पर pin करते हैं (DNS rebinding को विफल करते हुए), और हर redirect hop को फिर से सत्यापित करते हैं।

Description
Execution providers की प्राथमिकता क्रम में सूची। यदि कोई provider आपके platform पर समर्थित नहीं है, तो warning प्रदर्शित होती है।
प्रभाव

ALLOW_URL_TO_NON_GLOBAL_ADDRESSES

WORKFLOWS_CUSTOM_PYTHON_EXECUTION_MODE

URL image input के लिए master switch। False सभी URL images को अस्वीकार करता है।

ALLOW_LOADING_IMAGES_FROM_LOCAL_FILESYSTEM

WORKFLOWS_CUSTOM_PYTHON_EXECUTION_MODE

Local filesystem से image loading को अक्षम करने के लिए इसे False पर सेट करें।

VALIDATE_IMAGE_URL_REDIRECTS

WORKFLOWS_CUSTOM_PYTHON_EXECUTION_MODE

जब False हो, तो ऐसा URL जिसका host non-global address (loopback, private, link-local/metadata, CGNAT, IPv6 ULA, आदि) पर resolve होता है, अस्वीकार कर दिया जाता है, और connection को validated IP पर pin किया जाता है ताकि दूसरा DNS answer target को बदल न सके।

, और अन्य) का दस्तावेज़ यहाँ है

MODEL_VALIDATION_DISABLED

जब True हो, तो redirects को एक-एक hop करके फ़ॉलो किया जाता है और हर hop URL को फिर से सत्यापित किया जाता है, बजाय इसके कि उन्हें बिना जाँच के फ़ॉलो किया जाए।

MAX_IMAGE_URL_REDIRECTS

30

Redirect hops पर कड़ी अधिकतम सीमा, ऊपर दिए गए flag की परवाह किए बिना लागू।

ALLOW_NON_HTTPS_URL_INPUT

MODEL_VALIDATION_DISABLED

जब False हो, तो केवल https:// URLs स्वीकार किए जाते हैं।

ALLOW_URL_INPUT_WITHOUT_FQDN

MODEL_VALIDATION_DISABLED

जब False हो, तो ऐसे URLs अस्वीकार किए जाते हैं जिनका host केवल bare IP हो या जिनका कोई public suffix न हो, इसलिए callers को वास्तविक domain name का उपयोग करना होगा।

WHITELISTED_DESTINATIONS_FOR_URL_INPUT

अनसेट

कॉमा से अलग की गई destinations की allow-list (subdomain.domain.suffix)। जब यह सेट हो, केवल इन्हीं की अनुमति होती है।

BLACKLISTED_DESTINATIONS_FOR_URL_INPUT

अनसेट

कॉमा से अलग की गई destinations की block-list, जिन्हें हमेशा अस्वीकार किया जाता है।

एक अधिक सुरक्षित कॉन्फ़िगरेशन जो फिर भी सार्वजनिक HTTPS image URLs की अनुमति देता है:

सबसे कड़े नियंत्रण के लिए, एक allow-list जोड़ें ताकि सर्वर केवल उन्हीं सटीक hosts तक पहुँच सके जिनसे आप images सर्व करते हैं:

Proxies इस सुरक्षा को बाइपास कर देते हैं। यदि सर्वर के लिए HTTP(S) proxy कॉन्फ़िगर किया गया है, तो destination को proxy (Inference नहीं) resolve करता है, इसलिए non-global blocking और connection pinning लागू नहीं किए जा सकते। जब सर्वर इसे पहचानता है, तो वह चेतावनी देता है। यदि आप इन controls पर निर्भर हैं, तो proxy स्वयं क्या पहुँच सकता है, इसे सीमित करें।

Python SDK में वही नियंत्रण। inference-sdk client URLs से images लोड करते समय वही URL policy और SSRF protections लागू करता है, और वही environment variables पढ़ता है, इसलिए जो client भेजने से पहले URL images को hydrate करता है, वह भी शामिल है।

सर्वर-साइड video sources के लिए, देखें STREAM_MANAGER_MAX_RAM_MB. वापस जाएँ सर्वर सुरक्षा नेटवर्क एक्सेस और प्रमाणीकरण के लिए

अंतिम अपडेट

क्या यह उपयोगी था?