Cycode MCP Server
आधिकारिकअपने डेव जीवनचक्र में SAST, SCA, Secrets और IaC स्कैनिंग के साथ Cycode के माध्यम से सुरक्षा बढ़ाएँ।
दस्तावेज़
Cycode CLI उपयोगकर्ता गाइड
Cycode कमांड लाइन इंटरफ़ेस (CLI) एक एप्लिकेशन है जिसे आप अपने रिपॉजिटरी को सीक्रेट्स, इंफ्रास्ट्रक्चर ऐज़ कोड मिसकॉन्फ़िगरेशन, सॉफ़्टवेयर कंपोज़िशन एनालिसिस वल्नरेबिलिटीज़ और स्टैटिक एप्लिकेशन सिक्योरिटी टेस्टिंग इश्यूज़ के लिए स्कैन करने हेतु स्थानीय रूप से इंस्टॉल कर सकते हैं।
यह गाइड आपको इंस्टॉलेशन और उपयोग दोनों के बारे में बताती है।
विषय सूची
- पूर्वापेक्षाएँ
- इंस्टॉलेशन
- Cycode CLI कमांड्स
- MCP कमांड
- प्लेटफ़ॉर्म कमांड
- स्कैन कमांड
- रिपोर्ट कमांड
- इम्पोर्ट कमांड
- स्कैन लॉग्स
- सिंटैक्स सहायता
पूर्वापेक्षाएँ
- Cycode CLI एप्लिकेशन के लिए Python संस्करण 3.9 या बाद का होना आवश्यक है। MCP कमांड केवल Python 3.10 और उससे ऊपर के लिए उपलब्ध है। यदि आप पुराने Python संस्करण का उपयोग कर रहे हैं, तो यह कमांड उपलब्ध नहीं होगा।
- CLI के साथ Cycode में प्रमाणीकरण करने के लिए
cycode authकमांड का उपयोग करें- वैकल्पिक रूप से, आप सर्विस अकाउंट टोकन और पर्सनल एक्सेस टोकन पृष्ठों में दिए गए चरणों का पालन करके Cycode क्लाइंट ID और क्लाइंट सीक्रेट की प्राप्त कर सकते हैं, जिनमें इन मानों को प्राप्त करने का विवरण है।
इंस्टॉलेशन
निम्नलिखित इंस्टॉलेशन चरण Windows और UNIX / Linux ऑपरेटिंग सिस्टम दोनों पर लागू होते हैं।
[!NOTE] निम्नलिखित चरण Python-संबंधित कमांड्स के लिए
python3औरpip3के उपयोग को मानते हैं; हालाँकि, कुछ सिस्टम आपके Python एनवायरनमेंट के कॉन्फ़िगरेशन के आधार परpythonऔरpipकमांड्स का उपयोग कर सकते हैं।
Cycode CLI इंस्टॉल करें
अपनी स्थानीय मशीन पर Cycode CLI एप्लिकेशन इंस्टॉल करने के लिए, निम्नलिखित चरण निष्पादित करें:
-
अपना कमांड लाइन या टर्मिनल एप्लिकेशन खोलें।
-
निम्नलिखित में से एक कमांड निष्पादित करें:
-
PyPI से इंस्टॉल करने के लिए:
pip3 install cycode -
Homebrew से इंस्टॉल करने के लिए:
brew install cycode -
GitHub Releases से इंस्टॉल करने के लिए अपने ऑपरेटिंग सिस्टम और आर्किटेक्चर के लिए एक्ज़ीक्यूटेबल पर नेविगेट करें और डाउनलोड करें, फिर निम्नलिखित कमांड चलाएँ:
cd /path/to/downloaded/cycode-cli chmod +x cycode ./cycode -
-
अंत में CLI को प्रमाणित करें। Cycode क्लाइंट ID और क्रेडेंशियल्स (क्लाइंट सीक्रेट या OIDC ID टोकन) सेट करने की तीन विधियाँ हैं:
- cycode auth (अनुशंसित)
- cycode configure
- उन्हें अपने एनवायरनमेंट वेरिएबल्स में जोड़ें
ऑथ कमांड का उपयोग करना
[!NOTE] Cycode CLI के साथ प्रमाणित करने के लिए अपनी स्थानीय मशीन को सेट अप करने की यह अनुशंसित विधि है।
-
अपने टर्मिनल/कमांड लाइन विंडो में निम्नलिखित कमांड टाइप करें:
cycode auth -
एक ब्राउज़र विंडो दिखाई देगी, जो आपको Cycode में लॉग इन करने के लिए कहेगी (जैसा कि नीचे देखा गया है):
-
इस पृष्ठ पर अपने लॉगिन क्रेडेंशियल्स दर्ज करें और लॉग इन करें।
-
अंततः आपको नीचे दिए गए पृष्ठ पर ले जाया जाएगा, जहाँ आपसे उस व्यवसाय समूह को चुनने के लिए कहा जाएगा जिसे आप Cycode के साथ अधिकृत करना चाहते हैं (यदि लागू हो):
[!NOTE] यह Cycode CLI के साथ प्रमाणित करने की डिफ़ॉल्ट विधि होगी।
-
चयनित व्यवसाय समूह पर Cycode CLI को अधिकृत करने के लिए Allow बटन पर क्लिक करें।
-
एक बार पूरा हो जाने पर, यदि यह सफलतापूर्वक चयनित हो गया तो आपको निम्नलिखित स्क्रीन दिखाई देगी:
-
टर्मिनल/कमांड लाइन स्क्रीन में, ब्राउज़र विंडो बंद करने पर आपको निम्नलिखित दिखाई देगा:
Successfully logged into cycode
कॉन्फ़िगर कमांड का उपयोग करना
[!NOTE] यदि आपने पहले से ही Linux या Windows एनवायरनमेंट वेरिएबल्स के माध्यम से अपना Cycode क्लाइंट ID और क्लाइंट सीक्रेट सेट अप कर लिया है, तो वे क्रेडेंशियल्स इस विधि पर प्राथमिकता लेंगे।
-
अपने टर्मिनल/कमांड लाइन विंडो में निम्नलिखित कमांड टाइप करें:
cycode configure -
अपना Cycode API URL मान दर्ज करें (डिफ़ॉल्ट मान का उपयोग करने के लिए आप खाली छोड़ सकते हैं)।
Cycode API URL [https://api.cycode.com]: https://api.onpremise.com -
अपना Cycode APP URL मान दर्ज करें (डिफ़ॉल्ट मान का उपयोग करने के लिए आप खाली छोड़ सकते हैं)।
Cycode APP URL [https://app.cycode.com]: https://app.onpremise.com -
अपना Cycode क्लाइंट ID मान दर्ज करें।
Cycode Client ID []: 7fe5346b-xxxx-xxxx-xxxx-55157625c72d -
अपना Cycode क्लाइंट सीक्रेट मान दर्ज करें (यदि आप OIDC ID टोकन का उपयोग करने की योजना बना रहे हैं तो छोड़ दें)।
Cycode Client Secret []: c1e24929-xxxx-xxxx-xxxx-8b08c1839a2e -
अपना Cycode OIDC ID टोकन मान दर्ज करें (वैकल्पिक)।
Cycode ID Token []: eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCJ9... -
यदि मान सफलतापूर्वक दर्ज किए गए, तो आपको निम्नलिखित संदेश दिखाई देगा:
Successfully configured CLI credentials!या/और
Successfully configured Cycode URLs!
यदि आप अपने उपयोगकर्ता फ़ोल्डर के अंतर्गत .cycode फ़ोल्डर में जाते हैं, तो आप पाएंगे कि ये क्रेडेंशियल्स बनाए गए और उस फ़ोल्डर में credentials.yaml फ़ाइल में रखे गए।
URL उस फ़ोल्डर में config.yaml फ़ाइल में रखे गए थे।
एनवायरनमेंट वेरिएबल्स में जोड़ें
Unix/Linux पर:
export CYCODE_CLIENT_ID={your Cycode ID}
और
export CYCODE_CLIENT_SECRET={your Cycode Secret Key}
यदि आपका संगठन OIDC प्रमाणीकरण का उपयोग करता है, तो आप इसके बजाय (या इसके अतिरिक्त) ID टोकन प्रदान कर सकते हैं:
export CYCODE_ID_TOKEN={your Cycode OIDC ID token}
Windows पर
-
कंट्रोल पैनल से, सिस्टम मेनू पर नेविगेट करें:
-
इसके बाद, Advanced system settings पर क्लिक करें:
-
खुलने वाली System Properties विंडो में, Environment Variables बटन पर क्लिक करें:
-
क्रमशः अपने ID और सीक्रेट की से मेल खाते मानों के साथ
CYCODE_CLIENT_IDऔरCYCODE_CLIENT_SECRETवेरिएबल्स बनाएँ। यदि आप OIDC के माध्यम से प्रमाणित करते हैं, तो अपने OIDC ID टोकन मान के साथCYCODE_ID_TOKENभी जोड़ें:
-
इंस्टॉलेशन पूरा करने के लिए
cycode.exeको पथ में डालें।
प्री-कमिट हुक इंस्टॉल करें
Cycode के प्री-कमिट और प्री-पुश हुक आपके स्थानीय रिपॉजिटरी के भीतर सेट अप किए जा सकते हैं ताकि Cycode CLI एप्लिकेशन आपके कोड को कमिट या पुश करने से पहले स्वचालित रूप से किसी भी समस्या की पहचान कर ले।
[!NOTE] प्री-कमिट और प्री-पुश हुक IaC स्कैन के लिए उपलब्ध नहीं हैं।
प्री-कमिट हुक इंस्टॉल करने के लिए निम्नलिखित चरण निष्पादित करें:
प्री-कमिट हुक इंस्टॉल करना
-
प्री-कमिट फ्रेमवर्क इंस्टॉल करें (Python 3.9 या उच्चतर इंस्टॉल होना चाहिए):
pip3 install pre-commit -
उस स्थानीय Git रिपॉजिटरी की शीर्ष निर्देशिका पर नेविगेट करें जिसे आप कॉन्फ़िगर करना चाहते हैं।
-
रिपॉजिटरी की शीर्ष निर्देशिका में
.pre-commit-config.yaml(आरंभिक.शामिल करें) नामक एक नई YAML फ़ाइल बनाएँ जिसमें निम्नलिखित शामिल हो:repos: - repo: https://github.com/cycodehq/cycode-cli rev: v3.5.0 hooks: - id: cycode stages: [pre-commit] -
अपनी विशिष्ट आवश्यकताओं के लिए बनाई गई फ़ाइल को संशोधित करें। सीक्रेट्स के लिए स्कैन सक्षम करने हेतु हुक ID
cycodeका उपयोग करें। SCA स्कैन सक्षम करने हेतु हुक IDcycode-scaका उपयोग करें। SAST स्कैन सक्षम करने हेतु हुक IDcycode-sastका उपयोग करें। यदि आप सभी स्कैनिंग प्रकारों को सक्षम करना चाहते हैं, तो इस कॉन्फ़िगरेशन का उपयोग करें:repos: - repo: https://github.com/cycodehq/cycode-cli rev: v3.5.0 hooks: - id: cycode stages: [pre-commit] - id: cycode-sca stages: [pre-commit] - id: cycode-sast stages: [pre-commit] -
Cycode का हुक इंस्टॉल करें:
pre-commit installएक सफल हुक इंस्टॉलेशन के परिणामस्वरूप संदेश आएगा:
Pre-commit installed at .git/hooks/pre-commit। -
प्री-कमिट हुक को अद्यतित रखें:
pre-commit autoupdateयह स्वचालित रूप से
.pre-commit-config.yamlमेंrevको Cycode CLI के नवीनतम उपलब्ध संस्करण में बढ़ा देगा।
[!NOTE] ट्रिगर
git commitकमांड पर होता है। हुक केवल उन फ़ाइलों पर ट्रिगर होता है जो कमिट के लिए स्टेज की गई हैं।
प्री-पुश हुक इंस्टॉल करना
प्री-कमिट हुक के अतिरिक्त या उसके बजाय प्री-पुश हुक इंस्टॉल करने के लिए:
-
अपनी
.pre-commit-config.yamlफ़ाइल में प्री-पुश हुक जोड़ें:repos: - repo: https://github.com/cycodehq/cycode-cli rev: v3.5.0 hooks: - id: cycode-pre-push stages: [pre-push] -
प्री-पुश हुक इंस्टॉल करें:
pre-commit install --hook-type pre-push -
प्री-कमिट और प्री-पुश दोनों हुक के लिए, उपयोग करें:
pre-commit install pre-commit install --hook-type pre-push
[!NOTE] प्री-पुश हुक
git pushकमांड पर ट्रिगर होते हैं और केवल पुश किए जाने वाले कमिट्स को स्कैन करते हैं।
Cycode CLI कमांड्स
Cycode CLI एप्लिकेशन के साथ उपलब्ध विकल्प और कमांड्स निम्नलिखित हैं:
| विकल्प | विवरण |
|---|---|
-v, --verbose | विस्तृत लॉग दिखाएँ। |
--no-progress-meter | प्रगति मीटर न दिखाएँ। |
--no-update-notifier | अपडेट के लिए CLI की जाँच न करें। |
-o, --output [rich|text|json|table] | आउटपुट प्रकार निर्दिष्ट करें। डिफ़ॉल्ट rich है। |
--client-id TEXT | इस विशिष्ट स्कैन निष्पादन के लिए Cycode क्लाइंट ID निर्दिष्ट करें। |
--client-secret TEXT | इस विशिष्ट स्कैन निष्पादन के लिए Cycode क्लाइंट सीक्रेट निर्दिष्ट करें। |
--id-token TEXT | इस विशिष्ट स्कैन निष्पादन के लिए Cycode OIDC ID टोकन निर्दिष्ट करें। |
--install-completion | वर्तमान शेल के लिए कम्पलीशन इंस्टॉल करें। |
--show-completion [bash|zsh|fish|powershell|pwsh] | निर्दिष्ट शेल के लिए कम्पलीशन दिखाएँ, इसे कॉपी करने या इंस्टॉलेशन को अनुकूलित करने के लिए। |
-h, --help | दिए गए कमांड के लिए विकल्प दिखाएँ। |
| कमांड | विवरण |
| ------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| auth | CLI को अपने Cycode खाते से संबद्ध करने के लिए अपनी मशीन को प्रमाणित करें। |
| configure | आपके CLI क्लाइंट प्रमाणीकरण को कॉन्फ़िगर करने का प्रारंभिक कमांड। |
| ignore | किसी विशिष्ट मान, पथ या नियम ID को अनदेखा करें। |
| mcp | Cycode स्कैनिंग क्षमताओं के साथ AI एकीकरण सक्षम करने के लिए मॉडल कॉन्टेक्स्ट प्रोटोकॉल (MCP) सर्वर प्रारंभ करें। |
| scan | Secrets/IaC/SCA/SAST उल्लंघनों के लिए सामग्री स्कैन करें। आपको यह निर्दिष्ट करना होगा कि किस प्रकार का स्कैन करना है: commit-history/path/repository/etc. |
| report | रिपोर्ट जनरेट करें। आपको यह निर्दिष्ट करना होगा कि SBOM के रूप में किस प्रकार की रिपोर्ट बनानी है। |
| status | CLI स्थिति दिखाएं और बाहर निकलें। |
MCP कमांड [प्रयोगात्मक]
[!WARNING] MCP कमांड केवल Python 3.10 और उससे ऊपर के संस्करणों के लिए उपलब्ध है। यदि आप पुराने Python संस्करण का उपयोग कर रहे हैं, तो यह कमांड उपलब्ध नहीं होगा।
मॉडल कॉन्टेक्स्ट प्रोटोकॉल (MCP) कमांड आपको एक MCP सर्वर शुरू करने की अनुमति देता है जो AI सिस्टम और अनुप्रयोगों को Cycode की स्कैनिंग क्षमताओं को उजागर करता है। यह AI मॉडलों को एक मानकीकृत प्रोटोकॉल के माध्यम से Cycode CLI उपकरणों के साथ बातचीत करने में सक्षम बनाता है।
[!TIP] सर्वोत्तम अनुभव के लिए,
pip install cycodeयाbrew install cycodeका उपयोग करके अपने सिस्टम पर वैश्विक रूप से Cycode CLI स्थापित करें, फिरcycode authके साथ एक बार प्रमाणित करें। वैश्विक स्थापना और प्रमाणीकरण के बाद, आपको अपनी MCP कॉन्फ़िगरेशन फ़ाइलों मेंCYCODE_CLIENT_IDऔरCYCODE_CLIENT_SECRETपर्यावरण चर कॉन्फ़िगर करने की आवश्यकता नहीं होगी।
MCP सर्वर प्रारंभ करना
MCP सर्वर प्रारंभ करने के लिए, निम्न कमांड का उपयोग करें:
cycode mcp
डिफ़ॉल्ट रूप से, यह stdio ट्रांसपोर्ट का उपयोग करके सर्वर प्रारंभ करता है, जो स्थानीय एकीकरण और AI अनुप्रयोगों के लिए उपयुक्त है जो उप-प्रक्रियाएं उत्पन्न कर सकते हैं।
उपलब्ध विकल्प
| विकल्प | विवरण |
|---|---|
-t, --transport | MCP सर्वर के लिए ट्रांसपोर्ट प्रकार: stdio, sse, या streamable-http (डिफ़ॉल्ट: stdio) |
-H, --host | सर्वर को बाइंड करने के लिए होस्ट पता (केवल गैर-stdio ट्रांसपोर्ट के लिए उपयोग किया जाता है) (डिफ़ॉल्ट: 127.0.0.1) |
-p, --port | सर्वर को बाइंड करने के लिए पोर्ट संख्या (केवल गैर-stdio ट्रांसपोर्ट के लिए उपयोग किया जाता है) (डिफ़ॉल्ट: 8000) |
--help | सहायता संदेश और उपलब्ध विकल्प दिखाएं |
MCP उपकरण
MCP सर्वर निम्नलिखित उपकरण प्रदान करता है जिनका AI सिस्टम उपयोग कर सकते हैं:
| उपकरण का नाम | विवरण |
|---|---|
cycode_secret_scan | हार्डकोडेड सीक्रेट्स के लिए स्कैन करें |
cycode_sca_scan | सॉफ़्टवेयर कंपोज़िशन एनालिसिस (SCA) के लिए स्कैन करें - कमजोरियाँ और लाइसेंस मुद्दे |
cycode_iac_scan | इंफ्रास्ट्रक्चर ऐज़ कोड (IaC) गलत कॉन्फ़िगरेशन के लिए स्कैन करें |
cycode_sast_scan | स्टैटिक एप्लीकेशन सिक्योरिटी टेस्टिंग (SAST) के लिए स्कैन करें - कोड गुणवत्ता और सुरक्षा खामियाँ |
cycode_status | Cycode CLI संस्करण, प्रमाणीकरण स्थिति और कॉन्फ़िगरेशन जानकारी प्राप्त करें |
प्रत्येक स्कैन उपकरण दो परस्पर अनन्य इनपुट मोड स्वीकार करता है:
paths(पसंदीदा) — डिस्क पर मौजूद एक या अधिक फ़ाइल या निर्देशिका पथ। निर्देशिकाओं को पुनरावर्ती रूप से स्कैन किया जाता है। Cycode इंजन फ़ाइल खोज और फ़िल्टरिंग को संभालता है, ठीक वैसे ही जैसेcycode scan -t <type> path ./srcCLI से करता है।files(फ़ॉलबैक) — फ़ाइल पथों को स्ट्रिंग के रूप में उनकी पूर्ण सामग्री से मैप करने वाला एक शब्दकोश। इसका उपयोग केवल तब करें जब फ़ाइलें डिस्क पर उपलब्ध न हों (जैसे इन-मेमोरी संपादन जो अभी तक सहेजे नहीं गए हैं)।
[!TIP] जब भी संभव हो
pathsका उपयोग करें। बड़ी फ़ाइलों (जैसेpackage-lock.json) को इनलाइन सामग्री के रूप में पास करने से टोकन सीमा पार हो सकती है और AI क्लाइंट धीमा हो सकता है।pathsके साथ, Cycode इंजन सीधे डिस्क से फ़ाइलें पढ़ता है।
सभी स्कैन उपकरण एक JSON ऑब्जेक्ट लौटाते हैं जिसमें पूर्ण "detections" सरणी के अतिरिक्त एक मानव-पठनीय उल्लंघन गणना (जैसे "Cycode found 3 violations: 1 CRITICAL, 2 HIGH.") के साथ एक "summary" फ़ील्ड शामिल होता है।
उपयोग के उदाहरण
बुनियादी कमांड उदाहरण
डिफ़ॉल्ट सेटिंग्स (stdio ट्रांसपोर्ट) के साथ MCP सर्वर प्रारंभ करें:
cycode mcp
स्पष्ट stdio ट्रांसपोर्ट के साथ MCP सर्वर प्रारंभ करें:
cycode mcp -t stdio
सर्वर-सेंट इवेंट्स (SSE) ट्रांसपोर्ट के साथ MCP सर्वर प्रारंभ करें:
cycode mcp -t sse -p 8080
कस्टम होस्ट और पोर्ट पर स्ट्रीमेबल HTTP ट्रांसपोर्ट के साथ MCP सर्वर प्रारंभ करें:
cycode mcp -t streamable-http -H 0.0.0.0 -p 9000
MCP ट्रांसपोर्ट प्रकारों के बारे में MCP प्रोटोकॉल विशिष्टता – ट्रांसपोर्ट में अधिक जानें।
कॉन्फ़िगरेशन उदाहरण
Cursor/VS Code/Claude Desktop आदि के साथ MCP का उपयोग करना (mcp.json)
[!NOTE] EU Cycode परिवेशों के लिए, पर्यावरण चरों में उपयुक्त
CYCODE_API_URLऔरCYCODE_APP_URLमान सेट करना सुनिश्चित करें (जैसे,https://api.eu.cycode.comऔरhttps://app.eu.cycode.com)।
अपने VS Code/GitHub Copilot में MCP सर्वर कॉन्फ़िगर करने के लिए इस गाइड का पालन करें। ध्यान रखें कि settings.json में, एक स्टैंडअलोन mcpServers ऑब्जेक्ट के बजाय, एक नेस्टेड servers उप-ऑब्जेक्ट वाला mcp ऑब्जेक्ट होता है।
stdio ट्रांसपोर्ट (प्रत्यक्ष निष्पादन) के लिए:
{
"mcpServers": {
"cycode": {
"command": "cycode",
"args": ["mcp"],
"env": {
"CYCODE_CLIENT_ID": "your-cycode-id",
"CYCODE_CLIENT_SECRET": "your-cycode-secret-key",
"CYCODE_API_URL": "https://api.cycode.com",
"CYCODE_APP_URL": "https://app.cycode.com"
}
}
}
}
pipx स्थापना के साथ stdio ट्रांसपोर्ट के लिए:
{
"mcpServers": {
"cycode": {
"command": "pipx",
"args": ["run", "cycode", "mcp"],
"env": {
"CYCODE_CLIENT_ID": "your-cycode-id",
"CYCODE_CLIENT_SECRET": "your-cycode-secret-key",
"CYCODE_API_URL": "https://api.cycode.com",
"CYCODE_APP_URL": "https://app.cycode.com"
}
}
}
}
uvx स्थापना के साथ stdio ट्रांसपोर्ट के लिए:
{
"mcpServers": {
"cycode": {
"command": "uvx",
"args": ["cycode", "mcp"],
"env": {
"CYCODE_CLIENT_ID": "your-cycode-id",
"CYCODE_CLIENT_SECRET": "your-cycode-secret-key",
"CYCODE_API_URL": "https://api.cycode.com",
"CYCODE_APP_URL": "https://app.cycode.com"
}
}
}
}
SSE ट्रांसपोर्ट (सर्वर-सेंट इवेंट्स) के लिए:
{
"mcpServers": {
"cycode": {
"url": "http://127.0.0.1:8000/sse"
}
}
}
कस्टम पोर्ट पर SSE ट्रांसपोर्ट के लिए:
{
"mcpServers": {
"cycode": {
"url": "http://127.0.0.1:8080/sse"
}
}
}
स्ट्रीमेबल HTTP ट्रांसपोर्ट के लिए:
{
"mcpServers": {
"cycode": {
"url": "http://127.0.0.1:8000/mcp"
}
}
}
पृष्ठभूमि में MCP सर्वर चलाना
SSE ट्रांसपोर्ट के लिए (पहले सर्वर प्रारंभ करें, फिर क्लाइंट कॉन्फ़िगर करें):
# Start the MCP server in the background
cycode mcp -t sse -p 8000 &
# Configure in mcp.json
{
"mcpServers": {
"cycode": {
"url": "http://127.0.0.1:8000/sse"
}
}
}
स्ट्रीमेबल HTTP ट्रांसपोर्ट के लिए:
# Start the MCP server in the background
cycode mcp -t streamable-http -H 127.0.0.2 -p 9000 &
# Configure in mcp.json
{
"mcpServers": {
"cycode": {
"url": "http://127.0.0.2:9000/mcp"
}
}
}
उन्नत कॉन्फ़िगरेशन
कस्टम प्रमाणपत्र और टाइमआउट (प्रॉक्सी परिवेश)
यदि आपका संगठन HTTPS निरीक्षण के लिए कॉर्पोरेट प्रॉक्सी या कस्टम CA बंडल का उपयोग करता है, तो आपको Cycode CLI (और अंतर्निहित Python TLS स्टैक) को यह बताना होगा कि विश्वसनीय प्रमाणपत्र बंडल कहाँ मिलेगा। यदि स्कैन छोटे हो रहे हैं तो आप MCP उपकरण कॉल टाइमआउट भी बढ़ा सकते हैं।
| पर्यावरण चर | विवरण |
|---|---|
REQUESTS_CA_BUNDLE | कस्टम CA बंडल फ़ाइल का पथ (.pem या .crt)। Cycode CLI द्वारा किए गए सभी HTTPS कॉल के लिए requests लाइब्रेरी द्वारा उपयोग किया जाता है। |
SSL_CERT_FILE | कस्टम CA बंडल फ़ाइल का पथ। Python के निम्न-स्तरीय ssl मॉड्यूल द्वारा उपयोग किया जाता है। पूर्ण कवरेज के लिए इसे REQUESTS_CA_BUNDLE के साथ सेट करें। |
MCP_TOOL_TIMEOUT | टाइमआउट (सेकंड में) जो Claude और GitHub Copilot जैसे MCP क्लाइंट किसी उपकरण कॉल के पूरा होने की प्रतीक्षा करते हैं। यदि लंबे समय तक चलने वाले स्कैन समाप्त होने से पहले ही कट जाते हैं तो इसे बढ़ाएँ। |
[!TIP]
REQUESTS_CA_BUNDLEऔरSSL_CERT_FILEदोनों को एक ही CA बंडल पथ पर सेट करें।REQUESTS_CA_BUNDLEHTTP परत को कवर करता है;SSL_CERT_FILEनिम्न-स्तरीय TLS परत को कवर करता है। केवल एक का उपयोग करने से कुछ परिवेशों में प्रमाणपत्र त्रुटियाँ हो सकती हैं।
कस्टम प्रमाणपत्र और लंबे टाइमआउट के साथ उदाहरण mcp.json कॉन्फ़िगरेशन:
{
"mcpServers": {
"cycode": {
"command": "cycode",
"args": ["mcp"],
"env": {
"REQUESTS_CA_BUNDLE": "/path/to/your/corporate-ca-bundle.pem",
"SSL_CERT_FILE": "/path/to/your/corporate-ca-bundle.pem",
"MCP_TOOL_TIMEOUT": "1800"
}
}
}
}
[!NOTE] MCP सर्वर को कार्य करने के लिए उचित Cycode CLI प्रमाणीकरण की आवश्यकता होती है। MCP सर्वर प्रारंभ करने से पहले सुनिश्चित करें कि आपने
cycode authका उपयोग करके प्रमाणित किया है या अपने क्रेडेंशियल कॉन्फ़िगर किए हैं।
उप-एजेंटों के लिए उपकरणों को पूर्व-अधिकृत करना (Claude Code)
जब Claude Code पृष्ठभूमि उप-एजेंटों को काम सौंपता है (जैसे समानांतर में स्कैन चलाने के लिए), तो वे उप-एजेंट इंटरैक्टिव अनुमति संकेत प्रदर्शित नहीं कर सकते। यदि Cycode उपकरण पूर्व-अनुमोदित नहीं किए गए हैं, तो उप-एजेंट संदर्भों में स्कैन चुपचाप विफल हो जाएंगे।
Cycode MCP उपकरणों को पूर्व-अधिकृत करने के लिए ताकि वे उप-एजेंटों सहित सभी संदर्भों में काम करें, उन्हें अपनी Claude Code सेटिंग्स (~/.claude/settings.json) में allowedTools सूची में जोड़ें:
{
"allowedTools": [
"mcp__cycode__cycode_secret_scan",
"mcp__cycode__cycode_sca_scan",
"mcp__cycode__cycode_iac_scan",
"mcp__cycode__cycode_sast_scan",
"mcp__cycode__cycode_status"
]
}
एक बार जुड़ जाने के बाद, Claude Code इन उपकरणों के बुलाए जाने पर अनुमोदन के लिए संकेत नहीं देगा, और वे उप-एजेंटों के अंदर सही ढंग से काम करेंगे।
MCP समस्या निवारण
यदि आपको MCP सर्वर के साथ समस्याएँ आती हैं, तो आप क्या हो रहा है इसके बारे में अधिक विस्तृत जानकारी प्राप्त करने के लिए डिबग लॉगिंग सक्षम कर सकते हैं। डिबग लॉगिंग सक्षम करने के दो तरीके हैं:
-vया--verboseफ़्लैग का उपयोग करके:
cycode -v mcp
CYCODE_CLI_VERBOSEपर्यावरण चर का उपयोग करके:
CYCODE_CLI_VERBOSE=1 cycode mcp
डिबग लॉग इसके बारे में विस्तृत जानकारी दिखाएंगे:
- सर्वर स्टार्टअप और कॉन्फ़िगरेशन
- कनेक्शन प्रयास और स्थिति
- उपकरण निष्पादन और परिणाम
- होने वाली कोई भी त्रुटि या चेतावनी
यह जानकारी तब सहायक हो सकती है जब:
- कनेक्शन समस्याओं का निदान करना
- यह समझना कि कुछ उपकरण काम क्यों नहीं कर रहे हैं
- प्रमाणीकरण समस्याओं की पहचान करना
- ट्रांसपोर्ट-विशिष्ट मुद्दों को डिबग करना
MCP कॉन्फ़िगरेशन
प्लेटफ़ॉर्म कमांड [बीटा]
[!WARNING]
platformकमांड बीटा में है। कमांड, तर्क और आउटपुट प्रारूप Cycode API विनिर्देश से गतिशील रूप से उत्पन्न होते हैं और बिना सूचना के रिलीज़ के बीच बदल सकते हैं। अभी उत्पादन स्वचालन में उन पर भरोसा न करें।
cycode platform कमांड Cycode प्लेटफ़ॉर्म के रीड API को CLI कमांड के रूप में उजागर करता है। यह संसाधन द्वारा एंडपॉइंट्स को समूहित करता है (जैसे projects, violations, workflows) और प्रत्येक एंडपॉइंट के पैरामीटर को टाइप किए गए CLI तर्कों और --option फ़्लैग में बदल देता है।
cycode platform projects list --page-size 50
cycode platform violations count
cycode platform workflows view <workflow-id>
OpenAPI विनिर्देश पहले उपयोग पर Cycode API से प्राप्त किया जाता है और 24 घंटे के लिए ~/.cycode/openapi-spec.json पर कैश किया जाता है। असंबंधित कमांड (cycode scan, cycode status, आदि) फ़ेच को ट्रिगर नहीं करते हैं।
[!NOTE]
cycode platformके लिए कमांड खोजने और चलाने के लिए आपको प्रमाणित होना चाहिए (cycode authयाCYCODE_CLIENT_ID/CYCODE_CLIENT_SECRETपर्यावरण चर)। अन्य Cycode CLI कमांड प्रमाणीकरण के बिना काम करते हैं।
कमांड खोजना
क्योंकि कमांड विनिर्देश से उत्पन्न होते हैं, क्या उपलब्ध है इसका सत्य का स्रोत --help है:
cycode platform --help # list all resource groups
cycode platform projects --help # list actions on a resource
cycode platform projects list --help # list options/arguments for an action
प्लेटफ़ॉर्म उदाहरण
# List projects with pagination
cycode platform projects list --page-size 25
# View a single project by ID
cycode platform projects view <project-id>
# Count violations across the tenant
cycode platform violations count
# Filter using query parameters (see `--help` for what each endpoint supports)
cycode platform violations list --severity CRITICAL
सभी आउटपुट डिफ़ॉल्ट रूप से JSON है — तदर्थ फ़िल्टरिंग के लिए इसे jq के माध्यम से पाइप करें:
cycode platform projects list --page-size 100 | jq '.items[].name'
प्लेटफ़ॉर्म नोट्स और सीमाएँ
- वर्तमान में केवल-पढ़ने के लिए। इस बीटा में केवल
GETएंडपॉइंट उजागर किए गए हैं। - विनिर्देश-संचालित। API में एक नया एंडपॉइंट जोड़ने से अगली बार कैश रिफ्रेश होने पर यह स्वचालित रूप से सामने आ जाता है।
- कोई बंडल विनिर्देश नहीं। इंस्टॉल के बाद (या 24 घंटे की कैश अवधि समाप्त होने के बाद) पहला
cycode platformआह्वान एक नेटवर्क फ़ेच करता है। धीमे कनेक्शन पर इस पहली कॉल में कुछ सेकंड लग सकते हैं; कैश समाप्त होने तक बाद की कॉल लगभग तात्कालिक होती हैं। CYCODE_SPEC_CACHE_TTL=<seconds>के साथ कैश TTL को ओवरराइड करें।
स्कैन कमांड
स्कैन चलाना
Cycode CLI एप्लिकेशन कई प्रकार के स्कैन प्रदान करता है ताकि आप वह विकल्प चुन सकें जो आपके मामले में सबसे उपयुक्त हो। निम्नलिखित वर्तमान विकल्प और उपलब्ध कमांड हैं:
| विकल्प | विवरण |
|---|---|
-t, --scan-type [secret|iac|sca|sast] | वह स्कैन निर्दिष्ट करें जिसे आप निष्पादित करना चाहते हैं (secret/iac/sca/sast), डिफ़ॉल्ट secret है। |
--show-secret BOOLEAN | सीक्रेट को सादे टेक्स्ट में दिखाएं। अधिक जानकारी के लिए सीक्रेट दिखाएं/छुपाएं अनुभाग देखें। |
--soft-fail BOOLEAN | बिना असफल हुए स्कैन चलाएं, हमेशा एक गैर-त्रुटि स्थिति कोड लौटाएं। अधिक जानकारी के लिए सॉफ्ट फेल अनुभाग देखें। |
--severity-threshold [INFO|LOW|MEDIUM|HIGH|CRITICAL] | केवल निर्दिष्ट स्तर या उससे ऊपर के उल्लंघन दिखाएं। |
--sca-scan | वह SCA स्कैन निर्दिष्ट करें जिसे आप निष्पादित करना चाहते हैं (package-vulnerabilities/license-compliance)। डिफ़ॉल्ट दोनों है। |
--monitor | निर्दिष्ट होने पर, स्कैन परिणाम Cycode में दर्ज किए जाएंगे। |
--cycode-report | कंसोल आउटपुट में Cycode प्लेटफ़ॉर्म पर स्कैन रिपोर्ट का लिंक प्रदर्शित करें। |
--no-restore | निर्दिष्ट होने पर, Cycode रिस्टोर कमांड नहीं चलाएगा। यह केवल प्रत्यक्ष निर्भरताओं को स्कैन करेगा! |
--stop-on-error | यदि कोई फ़ाइल संग्रह या निर्भरता पुनर्स्थापना विफलता होती है, तो विफल फ़ाइल को छोड़कर जारी रखने के बजाय स्कैन को निरस्त करें। |
--gradle-all-sub-projects | सभी उप-परियोजनाओं के लिए gradle रिस्टोर कमांड चलाएं। इसे यहां से चलाया जाना चाहिए |
--maven-settings-file | केवल Maven के लिए, निर्भरताओं के लिए स्कैन करते समय एक कस्टम settings.xml फ़ाइल का उपयोग करने की अनुमति देता है |
--help | दिए गए कमांड के लिए विकल्प दिखाएं। |
| कमांड | विवरण |
|---|---|
| commit-history | कमिट इतिहास स्कैन करें या विशिष्ट कमिट के बीच अंतर स्कैनिंग करें |
| path | कमांड में दिए गए पथ में फ़ाइलों को स्कैन करें |
| pre-commit | उस सामग्री को स्कैन करने के लिए इस कमांड का उपयोग करें जो अभी तक कमिट नहीं की गई है |
| repository | इसके इतिहास सहित git रिपॉजिटरी को स्कैन करें |
विकल्प
गंभीरता विकल्प
स्कैन के परिणामों को एक विशिष्ट गंभीरता सीमा तक सीमित करने के लिए, तर्क --severity-threshold को स्कैन कमांड में जोड़ा जा सकता है।
उदाहरण के लिए, निम्नलिखित कमांड मध्यम या उससे अधिक गंभीरता वाले नीति उल्लंघनों के लिए रिपॉजिटरी को स्कैन करेगा:
cycode scan --severity-threshold MEDIUM repository ~/home/git/codebase
मॉनिटर विकल्प
[!NOTE] यह विकल्प केवल SCA स्कैन के लिए उपलब्ध है।
SCA प्रकार के स्कैन में पाए गए SCA नीतियों से जुड़े स्कैन परिणामों को Cycode पर पुश करने के लिए, तर्क --monitor को स्कैन कमांड में जोड़ें।
उदाहरण के लिए, निम्नलिखित कमांड SCA नीति उल्लंघनों के लिए रिपॉजिटरी को स्कैन करेगा और उन्हें Cycode प्लेटफ़ॉर्म पर पुश करेगा:
cycode scan -t sca --monitor repository ~/home/git/codebase
Cycode रिपोर्ट विकल्प
Cycode CLI का उपयोग करके किए गए प्रत्येक स्कैन के लिए, एक रिपोर्ट स्वचालित रूप से उत्पन्न होती है और इसके परिणाम Cycode को भेजे जाते हैं। ये परिणाम Cycode प्लेटफ़ॉर्म के भीतर प्रासंगिक नीतियों (जैसे, रिपॉजिटरी स्कैन के लिए SCA नीतियां) से जुड़े होते हैं।
स्कैन पूरा होने के बाद अपने CLI आउटपुट में इस Cycode रिपोर्ट का सीधा URL प्रिंट कराने के लिए, अपने स्कैन कमांड में तर्क --cycode-report जोड़ें।
cycode scan --cycode-report repository ~/home/git/codebase
CLI से सभी स्कैन परिणाम Cycode के CLI लॉग अनुभाग में दिखाई देंगे। यदि आपने अपने कमांड में --cycode-report फ़्लैग शामिल किया है, तो स्कैन परिणामों के बाद आपके टर्मिनल में विशिष्ट रिपोर्ट का सीधा लिंक प्रदर्शित किया जाएगा।
[!WARNING] इस पृष्ठ को देखने के लिए आपके पास Cycode में
ownerयाadminभूमिका होनी चाहिए।

रिपोर्ट पृष्ठ कुछ इस प्रकार दिखाई देगा:

पैकेज कमजोरियाँ विकल्प
[!NOTE] यह विकल्प केवल SCA स्कैन के लिए उपलब्ध है।
अपने स्थानीय रिपॉजिटरी की किसी विशिष्ट पैकेज भेद्यता को स्कैन करने के लिए, -t sca या --scan-type sca विकल्प के बाद तर्क --sca-scan package-vulnerabilities जोड़ें।
पिछले उदाहरण में, यदि आप केवल पैकेज कमजोरियों पर SCA स्कैन चलाना चाहते थे, तो आप निम्नलिखित निष्पादित कर सकते थे:
cycode scan -t sca --sca-scan package-vulnerabilities repository ~/home/git/codebase
लाइसेंस अनुपालन विकल्प
[!NOTE] यह विकल्प केवल SCA स्कैन के लिए उपलब्ध है।
अपने स्थानीय रिपॉजिटरी की किसी विशिष्ट शाखा को स्कैन करने के लिए, तर्क --sca-scan license-compliance जोड़ें और उसके बाद उस शाखा का नाम लिखें जिसे आप स्कैन करना चाहते हैं।
पिछले उदाहरण में, यदि आप केवल dev नामक शाखा को स्कैन करना चाहते थे, तो आप निम्नलिखित निष्पादित कर सकते थे:
cycode scan -t sca --sca-scan license-compliance repository ~/home/git/codebase -b dev
लॉक रिस्टोर विकल्प
[!NOTE] यह विकल्प केवल SCA स्कैन के लिए उपलब्ध है।
SCA स्कैन चलाते समय, Cycode CLI स्वचालित रूप से प्रत्येक समर्थित मैनिफ़ेस्ट फ़ाइल के लिए एक निर्भरता लॉकफ़ाइल को पुनर्स्थापित (उत्पन्न) करने का प्रयास करता है। यह केवल मैनिफ़ेस्ट में सीधे सूचीबद्ध निर्भरताओं को ही नहीं, बल्कि सकर्मक निर्भरताओं को स्कैन करने की अनुमति देता है। इस चरण को छोड़ने और केवल प्रत्यक्ष निर्भरताओं को स्कैन करने के लिए, --no-restore फ़्लैग का उपयोग करें।
निम्नलिखित इकोसिस्टम स्वचालित लॉकफ़ाइल पुनर्स्थापना का समर्थन करते हैं:
| इकोसिस्टम | मैनिफ़ेस्ट फ़ाइल | उत्पन्न लॉकफ़ाइल | लागू किया गया उपकरण (जब लॉकफ़ाइल अनुपस्थित हो) |
|---|---|---|---|
| npm | package.json | package-lock.json | npm install --package-lock-only --ignore-scripts --no-audit |
| Yarn | package.json | yarn.lock | yarn install --ignore-scripts |
| pnpm | package.json | pnpm-lock.yaml | pnpm install --ignore-scripts |
| Deno | deno.json / deno.jsonc | deno.lock | (केवल मौजूदा लॉकफ़ाइल पढ़ें) |
| Go | go.mod | go.mod.graph | go list -m -json all + go mod graph |
| Maven | pom.xml | bcde.mvndeps | mvn dependency:tree |
| Gradle | build.gradle / build.gradle.kts | gradle-dependencies-generated.txt | gradle dependencies -q --console plain |
| SBT | build.sbt | build.sbt.lock | sbt dependencyLockWrite |
| NuGet | *.csproj | packages.lock.json | dotnet restore --use-lock-file |
| Ruby | Gemfile | Gemfile.lock | bundle --quiet |
| Poetry | pyproject.toml | poetry.lock | poetry lock |
| Pipenv | Pipfile | Pipfile.lock | pipenv lock |
| PHP Composer | composer.json | composer.lock | composer update --no-cache --no-install --no-scripts --ignore-platform-reqs |
यदि मैनिफ़ेस्ट के साथ पहले से ही कोई लॉकफ़ाइल मौजूद है, तो Cycode बिना कोई इंस्टॉल कमांड चलाए इसे सीधे पढ़ता है।
SBT पूर्वापेक्षा: sbt-dependency-lock प्लगइन स्थापित होना चाहिए। project/plugins.sbt में निम्नलिखित पंक्ति जोड़ें:
addSbtPlugin("software.purpledragon" % "sbt-dependency-lock" % "1.5.1")
त्रुटि पर रुकें विकल्प
डिफ़ॉल्ट रूप से, Cycode स्कैन करना जारी रखता है, भले ही कोई फ़ाइल पढ़ी न जा सके (जैसे अनुमति त्रुटि के कारण) या SCA स्कैन के दौरान कोई निर्भरता लॉकफ़ाइल उत्पन्न न की जा सके। विफल आइटम को एक चेतावनी के साथ छोड़ दिया जाता है और शेष फ़ाइलों के साथ स्कैन जारी रहता है।
इस व्यवहार को बदलने के लिए --stop-on-error का उपयोग करें: स्कैन पहली ऐसी विफलता पर तुरंत निरस्त हो जाता है और त्रुटि की रिपोर्ट करता है।
cycode scan -t sca --stop-on-error path ~/home/git/codebase
यह CI पाइपलाइनों में उपयोगी है जहां एक मूक विफलता अधूरा स्कैन परिणाम उत्पन्न करेगी। जब --stop-on-error ट्रिगर होता है तो आप या तो अंतर्निहित समस्या को ठीक कर सकते हैं या, विशेष रूप से SCA पुनर्स्थापना विफलताओं के लिए, लॉकफ़ाइल निर्माण को छोड़ने और केवल प्रत्यक्ष निर्भरताओं को स्कैन करने के लिए --no-restore जोड़ सकते हैं।
जब --stop-on-error का उपयोग किया जाता है, तो CLI निकास कोड के माध्यम से स्कैन त्रुटियों और नीति उल्लंघनों के बीच अंतर करता है:
| निकास कोड | अर्थ |
|---|---|
0 | स्कैन बिना किसी उल्लंघन के पूरा हुआ |
1 | स्कैन पूरा हुआ और उल्लंघन पाए गए |
2 | किसी त्रुटि के कारण स्कैन निरस्त (केवल तब जब --stop-on-error सेट हो) |
रिपॉजिटरी स्कैन
एक रिपॉजिटरी स्कैन किसी भी उजागर सीक्रेट या असुरक्षित गलत कॉन्फ़िगरेशन के लिए एक संपूर्ण स्थानीय रिपॉजिटरी की जांच करता है। यह अधिक समग्र स्कैन प्रकार सब कुछ देखता है: आपकी रिपॉजिटरी की वर्तमान स्थिति और इसका कमिट इतिहास। यह न केवल उन सीक्रेट की तलाश करेगा जो वर्तमान में रिपॉजिटरी के भीतर उजागर हैं बल्कि पहले हटाए गए सीक्रेट की भी।
एक पूर्ण रिपॉजिटरी स्कैन निष्पादित करने के लिए, निम्नलिखित निष्पादित करें:
cycode scan repository {{path}}
उदाहरण के लिए, यदि आप ~/home/git/codebase में संग्रहीत किसी रिपॉजिटरी को स्कैन करना चाहते थे, तो आप निम्नलिखित निष्पादित कर सकते थे:
cycode scan repository ~/home/git/codebase
इस कमांड के साथ उपयोग के लिए निम्नलिखित विकल्प उपलब्ध है:
| विकल्प | विवरण |
|---|---|
-b, --branch TEXT | स्कैन करने के लिए शाखा, यदि सेट नहीं है तो डिफ़ॉल्ट शाखा को स्कैन करना |
शाखा विकल्प
अपने स्थानीय रिपॉजिटरी की किसी विशिष्ट शाखा को स्कैन करने के लिए, तर्क -b (वैकल्पिक रूप से, --branch) जोड़ें और उसके बाद उस शाखा का नाम लिखें जिसे आप स्कैन करना चाहते हैं।
पिछले उदाहरण को देखते हुए, यदि आप केवल dev नामक शाखा को स्कैन करना चाहते थे, तो आप निम्नलिखित निष्पादित कर सकते थे:
cycode scan repository ~/home/git/codebase -b dev
पथ स्कैन
एक पथ स्कैन केवल GIT रिपॉजिटरी पर ध्यान केंद्रित करने के बजाय, एक विशिष्ट स्थानीय निर्देशिका और उसके भीतर की सभी सामग्री की जांच करता है।
एक निर्देशिका स्कैन निष्पादित करने के लिए, निम्नलिखित निष्पादित करें:
cycode scan path {{path}}
उदाहरण के लिए, एक ऐसे परिदृश्य पर विचार करें जिसमें आप ~/home/git/codebase पर स्थित निर्देशिका को स्कैन करना चाहते हैं। तब आप निम्नलिखित निष्पादित कर सकते थे:
cycode scan path ~/home/git/codebase
टेराफ़ॉर्म प्लान स्कैन
Cycode CLI टेराफ़ॉर्म प्लान स्कैनिंग का समर्थन करता है (टेराफ़ॉर्म 0.12 और बाद के संस्करण का समर्थन करता है)
टेराफ़ॉर्म प्लान फ़ाइल JSON प्रारूप में होनी चाहिए (जिसमें .json एक्सटेंशन हो)
यदि आपके पास केवल एक कॉन्फ़िगरेशन फ़ाइल है, तो आप निम्न कार्य करके एक प्लान उत्पन्न कर सकते हैं:
-
एक कार्यशील निर्देशिका प्रारंभ करें जिसमें टेराफ़ॉर्म कॉन्फ़िगरेशन फ़ाइल हो:
terraform init -
टेराफ़ॉर्म निष्पादन योजना बनाएं और बाइनरी आउटपुट सहेजें:
terraform plan -out={tfplan_output} -
बाइनरी आउटपुट फ़ाइल को पठनीय JSON में बदलें:
terraform show -json {tfplan_output} > {tfplan}.json -
Cycode CLI के साथ अपने
{tfplan}.jsonको स्कैन करें:cycode scan -t iac path ~/PATH/TO/YOUR/{tfplan}.json
कमिट इतिहास स्कैन
[!NOTE] कमिट इतिहास स्कैन IaC स्कैन के लिए उपलब्ध नहीं है।
कमिट इतिहास स्कैन कमांड दो मुख्य क्षमताएं प्रदान करता है:
- पूर्ण इतिहास स्कैनिंग: रिपॉजिटरी इतिहास में सभी कमिट का विश्लेषण करें
- अंतर स्कैनिंग: केवल विशिष्ट कमिट के बीच के परिवर्तनों को स्कैन करें
सीक्रेट स्कैनिंग रिपॉजिटरी इतिहास में सभी कमिट का विश्लेषण कर सकती है क्योंकि पेश किए गए और बाद में हटाए गए सीक्रेट अभी भी लीक या उजागर हो सकते हैं। SCA और SAST स्कैन के लिए, कमिट इतिहास कमांड कमिट के बीच अंतर/परिवर्तनों को स्कैन करने पर ध्यान केंद्रित करता है, जो इसे पुल अनुरोध समीक्षा और वृद्धिशील स्कैनिंग के लिए एकदम सही बनाता है।
एक कमिट इतिहास स्कैन आपके Git रिपॉजिटरी के कमिट इतिहास की जांच करता है और इसका उपयोग व्यापक ऐतिहासिक विश्लेषण और विशिष्ट परिवर्तनों की लक्षित अंतर स्कैनिंग दोनों के लिए किया जा सकता है।
कमिट इतिहास स्कैन निष्पादित करने के लिए, निम्नलिखित निष्पादित करें:
cycode scan commit-history {{path}}
उदाहरण के लिए, एक ऐसे परिदृश्य पर विचार करें जिसमें आप ~/home/git/codebase में संग्रहीत रिपॉजिटरी के लिए कमिट इतिहास स्कैन करना चाहते हैं। तब आप निम्नलिखित निष्पादित कर सकते थे:
cycode scan commit-history ~/home/git/codebase
इस कमांड के साथ उपयोग के लिए निम्नलिखित विकल्प उपलब्ध हैं:
| विकल्प | विवरण |
|---|---|
-r, --commit-range TEXT | इस गिट रिपॉजिटरी में एक कमिट रेंज स्कैन करें, डिफ़ॉल्ट रूप से साइकोड सभी कमिट इतिहास स्कैन करता है (उदाहरण: HEAD~1) |
कमिट रेंज विकल्प (डिफ स्कैनिंग)
कमिट रेंज विकल्प डिफ स्कैनिंग सक्षम करता है – संपूर्ण रिपॉजिटरी इतिहास के बजाय केवल विशिष्ट कमिट के बीच के बदलावों को स्कैन करना। यह विशेष रूप से उपयोगी है:
- पुल रिक्वेस्ट सत्यापन: केवल PR में पेश किए गए बदलावों को स्कैन करें
- वृद्धिशील CI/CD स्कैनिंग: संपूर्ण कोडबेस के बजाय हाल के बदलावों पर ध्यान केंद्रित करें
- फीचर ब्रांच समीक्षा: मुख्य/मास्टर ब्रांच के मुकाबले बदलावों की तुलना करें
- प्रदर्शन अनुकूलन: प्रासंगिक बदलावों तक दायरा सीमित करके तेज़ स्कैन
कमिट रेंज सिंटैक्स
--commit-range (-r) विकल्प मानक गिट रिवीजन सिंटैक्स का समर्थन करता है:
| सिंटैक्स | विवरण | उदाहरण |
|---|---|---|
commit1..commit2 | कमिट1 से कमिट2 तक के बदलाव | abc123..def456 |
commit1...commit2 | कमिट2 में बदलाव जो कमिट1 में नहीं हैं | main...feature-branch |
commit | कमिट से HEAD तक के बदलाव | HEAD~1 |
branch1..branch2 | ब्रांच1 से ब्रांच2 तक के बदलाव | main..feature-branch |
डिफ स्कैनिंग उदाहरण
पिछले कमिट में बदलाव स्कैन करें:
cycode scan commit-history -r HEAD~1 ~/home/git/codebase
दो विशिष्ट कमिट के बीच बदलाव स्कैन करें:
cycode scan commit-history -r abc123..def456 ~/home/git/codebase
मुख्य ब्रांच की तुलना में अपनी फीचर ब्रांच में बदलाव स्कैन करें:
cycode scan commit-history -r main..HEAD ~/home/git/codebase
मुख्य और फीचर ब्रांच के बीच बदलाव स्कैन करें:
cycode scan commit-history -r main..feature-branch ~/home/git/codebase
पिछले 3 कमिट में सभी बदलाव स्कैन करें:
cycode scan commit-history -r HEAD~3..HEAD ~/home/git/codebase
[!TIP] CI/CD पाइपलाइनों के लिए, आप केवल PR/MR बदलावों को स्कैन करने के लिए
${{ github.event.pull_request.base.sha }}..${{ github.sha }}(GitHub Actions) या$CI_MERGE_REQUEST_TARGET_BRANCH_SHA..$CI_COMMIT_SHA(GitLab CI) जैसे एनवायरनमेंट वेरिएबल का उपयोग कर सकते हैं।
प्री-कमिट स्कैन
प्री-कमिट स्कैन आपके रिपॉजिटरी में बदलाव कमिट करने से पहले किसी भी समस्या की स्वचालित रूप से पहचान करता है। इस स्कैन को मैन्युअल रूप से निष्पादित करने की कोई आवश्यकता नहीं है; इस गाइड के इंस्टॉलेशन अनुभाग में बताए अनुसार प्री-कमिट हुक कॉन्फ़िगर करें।
प्री-कमिट हुक स्थापित करने के बाद, आप कभी-कभी किसी विशिष्ट कमिट के दौरान स्कैनिंग छोड़ना चाह सकते हैं। ऐसा करने के लिए, एकल कमिट के लिए स्कैनिंग छोड़ने हेतु अपने git कमांड में निम्नलिखित जोड़ें:
SKIP=cycode git commit -m <your commit message>`
प्री-पुश स्कैन
प्री-पुश स्कैन आपके द्वारा दूरस्थ रिपॉजिटरी में बदलाव पुश करने से पहले किसी भी समस्या की स्वचालित रूप से पहचान करता है। यह हुक क्लाइंट साइड पर चलता है और केवल उन कमिट को स्कैन करता है जो पुश किए जाने वाले हैं, जिससे यह दूरस्थ रिपॉजिटरी तक पहुँचने से पहले समस्याओं को पकड़ने में कुशल होता है।
[!NOTE] प्री-पुश हुक IaC स्कैन के लिए उपलब्ध नहीं है।
प्री-पुश हुक प्री-कमिट फ्रेमवर्क के साथ एकीकृत होता है और इसे किसी भी git push ऑपरेशन से पहले चलाने के लिए कॉन्फ़िगर किया जा सकता है।
प्री-पुश हुक स्थापित करना
प्री-कमिट फ्रेमवर्क का उपयोग करके प्री-पुश हुक सेट अप करने के लिए:
-
प्री-कमिट फ्रेमवर्क स्थापित करें (यदि पहले से स्थापित नहीं है):
pip3 install pre-commit -
प्री-पुश हुक शामिल करने के लिए अपनी
.pre-commit-config.yamlफ़ाइल बनाएँ या अपडेट करें:repos: - repo: https://github.com/cycodehq/cycode-cli rev: v3.5.0 hooks: - id: cycode-pre-push stages: [pre-push] -
एकाधिक स्कैन प्रकारों के लिए, इस कॉन्फ़िगरेशन का उपयोग करें:
repos: - repo: https://github.com/cycodehq/cycode-cli rev: v3.5.0 hooks: - id: cycode-pre-push # Secrets scan stages: [pre-push] - id: cycode-sca-pre-push # SCA scan stages: [pre-push] - id: cycode-sast-pre-push # SAST scan stages: [pre-push] -
प्री-पुश हुक स्थापित करें:
pre-commit install --hook-type pre-pushएक सफल इंस्टॉलेशन के परिणामस्वरूप संदेश आएगा:
Pre-push installed at .git/hooks/pre-push। -
प्री-पुश हुक को अद्यतित रखें:
pre-commit autoupdate
प्री-पुश स्कैनिंग कैसे काम करती है
प्री-पुश हुक:
- पुश किए जा रहे कमिट के बारे में जानकारी प्राप्त करता है
- स्कैन करने के लिए उपयुक्त कमिट रेंज की गणना करता है
- नई शाखाओं के लिए: डिफ़ॉल्ट शाखा के साथ मर्ज बेस से सभी कमिट स्कैन करता है
- मौजूदा शाखाओं के लिए: अंतिम पुश के बाद से केवल नए कमिट स्कैन करता है
- अन्य साइकोड स्कैन मोड के समान व्यापक स्कैनिंग चलाता है
स्मार्ट डिफ़ॉल्ट शाखा पहचान
प्री-पुश हुक इस प्राथमिकता क्रम का उपयोग करके मर्ज बेस गणना के लिए डिफ़ॉल्ट शाखा का बुद्धिमानी से पता लगाता है:
- एनवायरनमेंट वेरिएबल:
CYCODE_DEFAULT_BRANCH- मैन्युअल ओवरराइड की अनुमति देता है - गिट रिमोट HEAD: वास्तविक दूरस्थ डिफ़ॉल्ट शाखा का पता लगाने के लिए
git symbolic-ref refs/remotes/origin/HEADका उपयोग करता है - गिट रिमोट जानकारी: यदि सिम्बॉलिक-रेफ विफल हो जाता है तो
git remote show originपर वापस आता है - हार्डकोडेड फ़ॉलबैक: सामान्य डिफ़ॉल्ट शाखा नामों (origin/main, origin/master, main, master) का उपयोग करता है
एक कस्टम डिफ़ॉल्ट शाखा सेट करना:
export CYCODE_DEFAULT_BRANCH=origin/develop
यह स्मार्ट पहचान सुनिश्चित करती है कि प्री-पुश हुक सही ढंग से काम करे, भले ही आपका रिपॉजिटरी main, master, develop, या किसी अन्य डिफ़ॉल्ट शाखा नाम का उपयोग करता हो।
प्री-पुश स्कैन छोड़ना
किसी विशिष्ट पुश ऑपरेशन के लिए प्री-पुश स्कैन छोड़ने हेतु, उपयोग करें:
SKIP=cycode-pre-push git push
या सभी प्री-पुश हुक छोड़ने के लिए:
git push --no-verify
[!TIP] प्री-पुश हुक
git pushकमांड पर ट्रिगर होता है और केवल उन कमिट को स्कैन करता है जो पुश किए जाने वाले हैं, जिससे यह संपूर्ण रिपॉजिटरी को स्कैन करने की तुलना में अधिक कुशल होता है।
स्कैन से पथ बहिष्कृत करें
आप साइकोड CLI को यह बताने के लिए .cycodeignore फ़ाइल का उपयोग कर सकते हैं कि किन फ़ाइलों और निर्देशिकाओं को स्कैन से बाहर रखा जाए।
यह बिल्कुल .gitignore फ़ाइल की तरह काम करता है। इससे आपको अपने प्रासंगिक कोड पर स्कैन केंद्रित करने और कुछ पथों को स्थानीय रूप से उल्लंघन ट्रिगर करने से रोकने में मदद मिलती है।
यह कैसे काम करता है
- अपने वर्कफ़ोल्डर में
.cycodeignoreनामक एक फ़ाइल बनाएँ। .gitignoreके समान पैटर्न का उपयोग करते हुए, उन फ़ाइलों और निर्देशिकाओं को सूचीबद्ध करें जिन्हें आप बाहर करना चाहते हैं।- इस फ़ाइल को उस निर्देशिका में रखें जहाँ आप साइकोड स्कैन कमांड चलाने की योजना बना रहे हैं।
[!WARNING]
- अमान्य फ़ाइलें: यदि
.cycodeignoreफ़ाइल में सिंटैक्स त्रुटि है, तो CLI स्कैन विफल हो जाएगा और एक त्रुटि लौटाएगा।- पथों को अनदेखा करना बनाम उल्लंघन: यह फ़ाइल पथों को बाहर करने के लिए है। यह CLI की विशिष्ट उल्लंघनों को अनदेखा करने की क्षमता से भिन्न है (उदाहरण के लिए, --ignore-violation फ़्लैग का उपयोग करके)।
समर्थित स्कैनर
- SAST
- IaC (जल्द ही आ रहा है)
- SCA (जल्द ही आ रहा है)
स्कैन परिणाम
प्रत्येक स्कैन एक संदेश के साथ पूरा होगा जिसमें बताया जाएगा कि कोई समस्या पाई गई या नहीं।
यदि कोई समस्या नहीं मिलती है, तो स्कैन निम्नलिखित सफलता संदेश के साथ समाप्त होता है:
Good job! No issues were found!!! 👏👏👏
यदि कोई समस्या पाई जाती है, तो इसके बजाय पूरा होने पर एक उल्लंघन कार्ड दिखाई देता है। इस स्थिति में आपको परिणाम संदेश द्वारा हाइलाइट की गई विशिष्ट पंक्ति के लिए प्रश्नगत फ़ाइल की समीक्षा करनी चाहिए। समस्या को हल करने के लिए आवश्यक कोई भी बदलाव लागू करें, फिर स्कैन पुनः निष्पादित करें।
रहस्य दिखाएँ/छिपाएँ
नीचे दिए गए उदाहरणों में, cli उपफ़ोल्डर में स्थित secret_test फ़ाइल में एक रहस्य पाया गया। संदेश का दूसरा भाग उस विशिष्ट पंक्ति को दिखाता है जिसमें रहस्य दिखाई देता है, जो इस मामले में googleApiKey को असाइन किया गया मान है।
ध्यान दें कि उदाहरण वास्तविक गुप्त मान को कैसे अस्पष्ट करता है, अधिकांश रहस्य को तारांकन से बदल देता है। स्कैन डिफ़ॉल्ट रूप से रहस्यों को अस्पष्ट करते हैं, लेकिन आप पूर्ण रहस्य देखने के लिए वैकल्पिक रूप से इस सुविधा को अक्षम कर सकते हैं (यह मानते हुए कि जिस मशीन पर आप स्कैन परिणाम देख रहे हैं वह ताक-झांक करने वाली नज़रों से पर्याप्त रूप से सुरक्षित है)।
रहस्य अस्पष्टीकरण को अक्षम करने के लिए, किसी भी प्रकार के स्कैन में --show-secret तर्क जोड़ें।
निम्नलिखित उदाहरण में, पाए गए किसी भी रहस्य को पूर्ण रूप से प्रदर्शित करने के विकल्प सक्षम होने के साथ cli उपनिर्देशिका के विरुद्ध एक पथ स्कैन निष्पादित किया जाता है:
cycode scan --show-secret path ./cli
तब परिणाम अस्पष्ट नहीं होगा।
सॉफ्ट फेल
सामान्य संचालन में CLI स्कैन परिणामों में समस्याएँ पाए जाने पर 1 का एग्जिट कोड लौटाएगा। आपके CI/CD सेटअप के आधार पर इसका परिणाम आमतौर पर समग्र विफलता होगा। यदि आप नहीं चाहते कि ऐसा हो, तो आप सॉफ्ट फेल सुविधा का उपयोग कर सकते हैं।
किसी भी प्रकार के स्कैन में --soft-fail विकल्प जोड़कर, एग्जिट कोड को 0 पर बाध्य किया जाएगा, भले ही कोई परिणाम मिले या नहीं।
उदाहरण स्कैन परिणाम
रहस्य परिणाम उदाहरण
╭─────────────────────────────────────────────────────────────── Hardcoded generic-password is used ───────────────────────────────────────────────────────────────╮
│ Violation 12 of 12 │
│ ╭─ 🔍 Details ───────────────────────────────────────╮ ╭─ 💻 Code Snippet ─────────────────────────────────────────────────────────────────────────────────────╮ │
│ │ Severity 🟠 MEDIUM │ │ 34 }; │ │
│ │ In file /Users/cycodemacuser/NodeGoat/test/s │ │ 35 │ │
│ │ ecurity/profile-test.js │ │ 36 var sutUserName = "user1"; │ │
│ │ Secret SHA b4ea3116d868b7c982ee6812cce61727856b │ │ ❱ 37 var sutUserPassword = "Us*****23"; │ │
│ │ 802b3063cd5aebe7d796988552e0 │ │ 38 │ │
│ │ Rule ID 68b6a876-4890-4e62-9531-0e687223579f │ │ 39 chrome.setDefaultService(service); │ │
│ ╰────────────────────────────────────────────────────╯ │ 40 │ │
│ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
│ ╭─ 📝 Summary ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │
│ │ A generic secret or password is an authentication token used to access a computer or application and is assigned to a password variable. │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
IaC परिणाम उदाहरण
╭──────────── Enable Content Encoding through the attribute 'MinimumCompressionSize'. This value should be greater than -1 and smaller than 10485760. ─────────────╮
│ Violation 45 of 110 │
│ ╭─ 🔍 Details ───────────────────────────────────────╮ ╭─ 💻 Code Snippet ─────────────────────────────────────────────────────────────────────────────────────╮ │
│ │ Severity 🟠 MEDIUM │ │ 20 BinaryMediaTypes: │ │
│ │ In file ...ads-copy/iac/cft/api-gateway/ap │ │ 21 - !Ref binaryMediaType1 │ │
│ │ i-gateway-rest-api/deploy.yml │ │ 22 - !Ref binaryMediaType2 │ │
│ │ IaC Provider CloudFormation │ │ ❱ 23 MinimumCompressionSize: -1 │ │
│ │ Rule ID 33c4b90c-3270-4337-a075-d3109c141b │ │ 24 EndpointConfiguration: │ │
│ │ 53 │ │ 25 Types: │ │
│ ╰────────────────────────────────────────────────────╯ │ 26 - EDGE │ │
│ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
│ ╭─ 📝 Summary ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │
│ │ This policy validates the proper configuration of content encoding in AWS API Gateway. Specifically, the policy checks for the attribute │ │
│ │ 'minimum_compression_size' in API Gateway REST APIs. Correct configuration of this attribute is important for enabling content encoding of API responses for │ │
│ │ improved API performance and reduced payload sizes. │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
SCA परिणाम उदाहरण
╭─────────────────────────────────────────────────────── [CVE-2019-10795] Prototype Pollution in undefsafe ────────────────────────────────────────────────────────╮
│ Violation 172 of 195 │
│ ╭─ 🔍 Details ───────────────────────────────────────╮ ╭─ 💻 Code Snippet ─────────────────────────────────────────────────────────────────────────────────────╮ │
│ │ Severity 🟠 MEDIUM │ │ 26758 "integrity": "sha1-5z3T17DXxe2G+6xrCufYxqadUPo=", │ │
│ │ In file /Users/cycodemacuser/Node │ │ 26759 "dev": true │ │
│ │ Goat/package-lock.json │ │ 26760 }, │ │
│ │ CVEs CVE-2019-10795 │ │ ❱ 26761 "undefsafe": { │ │
│ │ Package undefsafe │ │ 26762 "version": "2.0.2", │ │
│ │ Version 2.0.2 │ │ 26763 "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.2.tgz", │ │
│ │ First patched version Not fixed │ │ 26764 "integrity": "sha1-Il9rngM3Zj4Njnz9aG/Cg2zKznY=", │ │
│ │ Dependency path nodemon 1.19.1 -> │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
│ │ undefsafe 2.0.2 │ │
│ │ Rule ID 9c6a8911-e071-4616-86db-4 │ │
│ │ 943f2e1df81 │ │
│ ╰────────────────────────────────────────────────────╯ │
│ ╭─ 📝 Summary ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │
│ │ undefsafe before 2.0.3 is vulnerable to Prototype Pollution. The 'a' function could be tricked into adding or modifying properties of Object.prototype using │ │
│ │ a __proto__ payload. │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
SAST परिणाम उदाहरण
╭───────────────────────────────────────────── [CWE-208: Observable Timing Discrepancy] Observable Timing Discrepancy ─────────────────────────────────────────────╮
│ Violation 24 of 49 │
│ ╭─ 🔍 Details ───────────────────────────────────────╮ ╭─ 💻 Code Snippet ─────────────────────────────────────────────────────────────────────────────────────╮ │
│ │ Severity 🟠 MEDIUM │ │ 173 " including numbers, lowercase and uppercase letters."; │ │
│ │ In file /Users/cycodemacuser/NodeGoat/app │ │ 174 return false; │ │
│ │ /routes/session.js │ │ 175 } │ │
│ │ CWE CWE-208 │ │ ❱ 176 if (password !== verify) { │ │
│ │ Subcategory Security │ │ 177 errors.verifyError = "Password must match"; │ │
│ │ Language js │ │ 178 return false; │ │
│ │ Security Tool Bearer (Powered by Cycode) │ │ 179 } │ │
│ │ Rule ID 19fbca07-a8e7-4fa6-92ac-a36d15509 │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
│ │ fa9 │ │
│ ╰────────────────────────────────────────────────────╯ │
│ ╭─ 📝 Summary ─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╮ │
│ │ Observable Timing Discrepancy occurs when the time it takes for certain operations to complete can be measured and observed by attackers. This vulnerability │ │
│ │ is particularly concerning when operations involve sensitive information, such as password checks or secret comparisons. If attackers can analyze how long │ │
│ │ these operations take, they might be able to deduce confidential details, putting your data at risk. │ │
│ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯
कंपनी कस्टम उपचार दिशानिर्देश
यदि आपकी कंपनी ने साइकोड पोर्टल के माध्यम से प्रासंगिक नीति में कस्टम उपचार दिशानिर्देश निर्धारित किए हैं, तो आपको "कंपनी दिशानिर्देश" के लिए एक फ़ील्ड दिखाई देगी जिसमें आपके द्वारा जोड़े गए उपचार दिशानिर्देश शामिल होंगे। ध्यान दें कि यदि आपने कोई कंपनी दिशानिर्देश नहीं जोड़ा है, तो यह फ़ील्ड CLI टूल में दिखाई नहीं देगी।
स्कैन परिणामों को अनदेखा करना
विशिष्ट गुप्त मानों, विशिष्ट SHA512 मानों, विशिष्ट पथों और विशिष्ट साइकोड गुप्त और IaC नियम IDs को अनदेखा करने के लिए अनदेखा नियम जोड़े जा सकते हैं। इससे स्कैन इन मानों के लिए अलर्ट नहीं करेगा। अनदेखा करने के नियम ./.cycode/config.yaml फ़ाइल में स्थानीय रूप से लिखे और सहेजे जाते हैं।
[!WARNING] अनदेखा किए जाने वाले मानों को जोड़ना मानों, पथों और नीतियों पर सावधानीपूर्वक विचार करके किया जाना चाहिए ताकि यह सुनिश्चित हो सके कि स्कैन सही सकारात्मक परिणाम उठाएँगे।
cycode ignore कमांड के लिए निम्नलिखित विकल्प उपलब्ध हैं:
| विकल्प | विवरण |
|---|---|
--by-value TEXT | रहस्यों के लिए स्कैन करते समय किसी विशिष्ट मान को अनदेखा करें। अधिक विवरण के लिए गुप्त मान को अनदेखा करना देखें। |
--by-sha TEXT | रहस्यों के लिए स्कैन करते समय स्ट्रिंग के विशिष्ट SHA512 प्रतिनिधित्व को अनदेखा करें। अधिक विवरण के लिए गुप्त SHA मान को अनदेखा करना देखें। |
--by-path TEXT | किसी विशिष्ट पथ को स्कैन करने से बचें। स्कैन प्रकार निर्दिष्ट करने की आवश्यकता है। अधिक विवरण के लिए पथ को अनदेखा करना देखें। |
--by-rule TEXT | किसी विशिष्ट गुप्त नियम ID/IaC नियम ID/SCA नियम ID को स्कैन करना अनदेखा करें। अधिक विवरण के लिए गुप्त या Iac नियम को अनदेखा करना देखें। |
--by-package TEXT | SCA स्कैन चलाते समय किसी विशिष्ट पैकेज संस्करण को स्कैन करना अनदेखा करें। अपेक्षित पैटर्न - name@version। अधिक विवरण के लिए पैकेज को अनदेखा करना देखें। |
--by-cve TEXT | SCA स्कैन चलाते समय किसी विशिष्ट CVE को स्कैन करना अनदेखा करें। अपेक्षित पैटर्न: CVE-YYYY-NNN। |
-t, --scan-type [secret|iac|sca|sast] | वह स्कैन निर्दिष्ट करें जिसे आप निष्पादित करना चाहते हैं (secret/iac/sca/sast)। डिफ़ॉल्ट मान secret है। |
-g, --global | एक अनदेखा नियम जोड़ें और इसे वैश्विक .cycode कॉन्फ़िग फ़ाइल में अपडेट करें। |
गुप्त मान को अनदेखा करना
किसी विशिष्ट गुप्त मान को अनदेखा करने के लिए, आपको --by-value फ़्लैग का उपयोग करना होगा। यह भविष्य के सभी स्कैन से दिए गए गुप्त मान को अनदेखा कर देगा। अनदेखा किए जाने वाले गुप्त मान को जोड़ने के लिए निम्न कमांड का उपयोग करें:
cycode ignore --by-value {{secret-value}}
इस अनुभाग के शीर्ष पर दिए गए उदाहरण में, किसी विशिष्ट गुप्त मान को अनदेखा करने का कमांड इस प्रकार है:
cycode ignore --by-value h3110w0r1d!@#$350
उपरोक्त उदाहरण में, h3110w0r1d!@#$350 मान को अपने गैर-मास्क्ड गुप्त मान से बदलें। स्कैन परिणामों में गुप्त मान देखने के तरीके के विवरण के लिए साइकोड स्कैन विकल्प देखें।
गुप्त SHA मान को अनदेखा करना
किसी विशिष्ट गुप्त SHA मान को अनदेखा करने के लिए, आपको --by-sha फ़्लैग का उपयोग करना होगा। यह भविष्य के सभी स्कैन से दिए गए गुप्त SHA मान को अनदेखा कर देगा। अनदेखा किए जाने वाले गुप्त SHA मान को जोड़ने के लिए निम्न कमांड का उपयोग करें:
cycode ignore --by-sha {{secret-sha-value}}
इस खंड के शीर्ष पर दिए गए उदाहरण में, किसी विशिष्ट गुप्त SHA मान को अनदेखा करने का आदेश इस प्रकार है:
cycode ignore --by-sha a44081db3296c84b82d12a35c446a3cba19411dddfa0380134c75f7b3973bff0
उपरोक्त उदाहरण में, a44081db3296c84b82d12a35c446a3cba19411dddfa0380134c75f7b3973bff0 मान को अपने गुप्त SHA मान से बदलें।
पथ को अनदेखा करना
गुप्त, IaC, या SCA स्कैन के लिए किसी विशिष्ट पथ को अनदेखा करने के लिए, आपको -t, --scan-type फ़्लैग के साथ --by-path फ़्लैग का उपयोग करना होगा (आपको स्कैन प्रकार निर्दिष्ट करना होगा)। यह दिए गए स्कैन प्रकार के लिए भविष्य के सभी स्कैन से दिए गए पथ को अनदेखा कर देगा। अनदेखा किए जाने वाले पथ को जोड़ने के लिए निम्न आदेश का उपयोग करें:
cycode ignore -t {{scan-type}} --by-path {{path}}
इस खंड के शीर्ष पर दिए गए उदाहरण में, किसी गुप्त के लिए विशिष्ट पथ को अनदेखा करने का आदेश इस प्रकार है:
cycode ignore -t secret --by-path ~/home/my-repo/config
उपरोक्त उदाहरण में, ~/home/my-repo/config मान को अपने पथ मान से बदलें।
इस खंड के शीर्ष पर दिए गए उदाहरण में, IaC स्कैन से किसी विशिष्ट पथ को अनदेखा करने का आदेश इस प्रकार है:
cycode ignore -t iac --by-path ~/home/my-repo/config
उपरोक्त उदाहरण में, ~/home/my-repo/config मान को अपने पथ मान से बदलें।
इस खंड के शीर्ष पर दिए गए उदाहरण में, SCA स्कैन से किसी विशिष्ट पथ को अनदेखा करने का आदेश इस प्रकार है:
cycode ignore -t sca --by-path ~/home/my-repo/config
उपरोक्त उदाहरण में, ~/home/my-repo/config मान को अपने पथ मान से बदलें।
गुप्त, IaC, SCA, या SAST नियम को अनदेखा करना
किसी विशिष्ट गुप्त, IaC, SCA, या SAST नियम को अनदेखा करने के लिए, आपको -t, --scan-type फ़्लैग के साथ --by-rule फ़्लैग का उपयोग करना होगा (आपको स्कैन प्रकार निर्दिष्ट करना होगा)। यह भविष्य के सभी स्कैन से दिए गए नियम ID मान को अनदेखा कर देगा। अनदेखा किए जाने वाले नियम ID मान को जोड़ने के लिए निम्न आदेश का उपयोग करें:
cycode ignore -t {{scan-type}} --by-rule {{rule-ID}}
इस खंड के शीर्ष पर दिए गए उदाहरण में, विशिष्ट गुप्त नियम ID को अनदेखा करने का आदेश इस प्रकार है:
cycode ignore -t secret --by-rule ce3a4de0-9dfc-448b-a004-c538cf8b4710
उपरोक्त उदाहरण में, ce3a4de0-9dfc-448b-a004-c538cf8b4710 मान को उस नियम ID से बदलें जिसे आप अनदेखा करना चाहते हैं।
इस खंड के शीर्ष पर दिए गए उदाहरण में, विशिष्ट IaC नियम ID को अनदेखा करने का आदेश इस प्रकार है:
cycode ignore -t iac --by-rule bdaa88e2-5e7c-46ff-ac2a-29721418c59c
उपरोक्त उदाहरण में, bdaa88e2-5e7c-46ff-ac2a-29721418c59c मान को उस नियम ID से बदलें जिसे आप अनदेखा करना चाहते हैं।
इस खंड के शीर्ष पर दिए गए उदाहरण में, विशिष्ट SCA नियम ID को अनदेखा करने का आदेश इस प्रकार है:
cycode ignore -t sca --by-rule dc21bc6b-9f4f-46fb-9f92-e4327ea03f6b
उपरोक्त उदाहरण में, dc21bc6b-9f4f-46fb-9f92-e4327ea03f6b मान को उस नियम ID से बदलें जिसे आप अनदेखा करना चाहते हैं।
पैकेज को अनदेखा करना
[!NOTE] यह विकल्प केवल SCA स्कैन के लिए उपलब्ध है।
SCA स्कैन में किसी विशिष्ट पैकेज को अनदेखा करने के लिए, आपको -t, --scan-type फ़्लैग के साथ --by-package फ़्लैग का उपयोग करना होगा (आपको sca स्कैन प्रकार निर्दिष्ट करना होगा)। यह {{package_name}}@{{package_version}} स्वरूपण का उपयोग करके, भविष्य के सभी स्कैन से दिए गए पैकेज को अनदेखा कर देगा। अनदेखा किए जाने वाले पैकेज और संस्करण को जोड़ने के लिए निम्न आदेश का उपयोग करें:
cycode ignore --scan-type sca --by-package {{package_name}}@{{package_version}}
या
cycode ignore -t sca --by-package {{package_name}}@{{package_version}}
नीचे दिए गए उदाहरण में, किसी विशिष्ट SCA पैकेज को अनदेखा करने का आदेश इस प्रकार है:
cycode ignore --scan-type sca --by-package [email protected]
उपरोक्त उदाहरण में, pyyaml को पैकेज नाम से और 5.3.1 को उस पैकेज संस्करण से बदलें जिसे आप अनदेखा करना चाहते हैं।
कॉन्फ़िग फ़ाइल के माध्यम से अनदेखा करना
लागू अनदेखा करने के नियम config.yaml नामक कॉन्फ़िगरेशन फ़ाइल में संग्रहीत होते हैं।
इस फ़ाइल को डेवलपर्स के बीच आसानी से साझा किया जा सकता है या दूरस्थ Git में भी कमिट किया जा सकता है।
ये फ़ाइलें हमेशा .cycode फ़ोल्डर में स्थित होती हैं।
फ़ोल्डर एक डॉट (.) से शुरू होता है, और आपको इसे देखने के लिए छिपी हुई फ़ाइलों का प्रदर्शन सक्षम करना चाहिए।
कॉन्फ़िग फ़ाइलों का पथ
डिफ़ॉल्ट रूप से, सभी cycode ignore आदेश अनदेखा करने के नियम को वर्तमान निर्देशिका में सहेजते हैं जहाँ से CLI चलाया गया है।
उदाहरण: /Users/name/projects/backend से अनदेखा CLI आदेश चलाने पर /Users/name/projects/backend/.cycode में config.yaml बनेगा
➜ backend pwd
/Users/name/projects/backend
➜ backend cycode ignore --by-value test-value
➜ backend tree -a
.
└── .cycode
└── config.yaml
2 directories, 1 file
दूसरा विकल्प अनदेखा करने के नियमों को वैश्विक कॉन्फ़िगरेशन फ़ाइलों में सहेजना है।
वैश्विक कॉन्फ़िग का पथ ~/.cycode/config.yaml है,
जहाँ ~ का अर्थ macOS पर users home directory, for example, /Users/name` है।
वैश्विक स्थान पर सहेजना cycode ignore आदेश के -g फ़्लैग के साथ किया जा सकता है।
उदाहरण के लिए: cycode ignore -g --by-value test-value।
उचित कार्यशील निर्देशिका
.cycode फ़ोल्डर रखना और उसी स्थान से CLI चलाना अत्यंत महत्वपूर्ण है।
विभिन्न वातावरणों जैसे CI/CD (GitHub Actions, Jenkins, आदि) के साथ काम करते समय आपको इसकी दोबारा जाँच करनी चाहिए।
आप .cycode फ़ोल्डर को अपने रिपॉजिटरी के रूट में कमिट कर सकते हैं। इस परिदृश्य में, आपको रिपॉजिटरी रूट से CLI स्कैन चलाना होगा। यदि यह आपकी आवश्यकताओं के अनुकूल नहीं है, तो आप अस्थायी रूप से .cycode फ़ोल्डर को जहाँ चाहें कॉपी कर सकते हैं और इस फ़ोल्डर से CLI स्कैन कर सकते हैं।
कॉन्फ़िग में अनदेखा करने के नियमों की संरचना
CLI के बिना इन कॉन्फ़िगरेशन फ़ाइलों को पढ़ने या संशोधित करने में सक्षम होने के लिए यह समझना महत्वपूर्ण है कि CLI अनदेखा किए गए नियमों को कैसे संग्रहीत करता है।
सार YAML संरचना:
exclusions:
{scanTypeName}:
{ignoringType}:
- someIgnoringValue1
- someIgnoringValue2
scanTypeName के संभावित मान: iac, sca, sast, secret।
ignoringType के संभावित मान: paths, values, rules, packages, shas, cves।
[!WARNING] "मान द्वारा अनदेखा करें" के मान सादे पाठ के रूप में संग्रहीत नहीं होते हैं! CLI इसके बजाय मानों के sha256 हैश संग्रहीत करता है। हाथ से कॉन्फ़िगरेशन फ़ाइल को संशोधित करते समय आपको स्ट्रिंग के हैश डालने चाहिए।
वास्तविक config.yaml का उदाहरण:
exclusions:
iac:
rules:
- bdaa88e2-5e7c-46ff-ac2a-29721418c59c
sca:
packages:
- [email protected]
secret:
paths:
- /Users/name/projects/build
rules:
- ce3a4de0-9dfc-448b-a004-c538cf8b4710
shas:
- a44081db3296c84b82d12a35c446a3cba19411dddfa0380134c75f7b3973bff0
values:
- a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3
- 60303ae22b998861bce3b28f33eec1be758a213c86c93c076dbe9f558c11c752
रिपोर्ट आदेश
SBOM रिपोर्ट तैयार करना
सॉफ़्टवेयर बिल ऑफ़ मटेरियल्स (SBOM) किसी एप्लिकेशन के विकास और वितरण में शामिल सभी घटक घटकों और सॉफ़्टवेयर निर्भरताओं की एक सूची है। इस आदेश का उपयोग करके, आप अपने स्थानीय प्रोजेक्ट या अपने रिपॉजिटरी URI के लिए एक SBOM रिपोर्ट बना सकते हैं।
इस आदेश के साथ उपयोग के लिए निम्नलिखित विकल्प उपलब्ध हैं:
| विकल्प | विवरण | आवश्यक | डिफ़ॉल्ट |
|---|---|---|---|
-f, --format [spdx-2.2|spdx-2.3|cyclonedx-1.4] | SBOM प्रारूप | हाँ | |
-o, --output-format [JSON] | आउटपुट फ़ाइल प्रारूप निर्दिष्ट करें | नहीं | json |
--output-file PATH | आउटपुट फ़ाइल | नहीं | वर्तमान निर्देशिका में सहेजा गया स्वतः उत्पन्न फ़ाइल नाम |
--include-vulnerabilities | कमजोरियाँ शामिल करें | नहीं | False |
--include-dev-dependencies | dev निर्भरताएँ शामिल करें | नहीं | False |
इस आदेश के साथ उपयोग के लिए निम्नलिखित आदेश उपलब्ध हैं:
| आदेश | विवरण |
|---|---|
path | आदेश में दिए गए पथ के लिए SBOM रिपोर्ट तैयार करें |
repository-url | आदेश में दिए गए रिपॉजिटरी URI के लिए SBOM रिपोर्ट तैयार करें |
रिपॉजिटरी
रिपॉजिटरी URI के लिए SBOM रिपोर्ट बनाने हेतु:
cycode report sbom --format <sbom format> --include-vulnerabilities --include-dev-dependencies --output-file </path/to/file> repository_url <repository url>
उदाहरण के लिए:
cycode report sbom --format spdx-2.3 --include-vulnerabilities --include-dev-dependencies repository_url https://github.com/cycodehq/cycode-cli.git
स्थानीय प्रोजेक्ट
पथ के लिए SBOM रिपोर्ट बनाने हेतु:
cycode report sbom --format <sbom format> --include-vulnerabilities --include-dev-dependencies --output-file </path/to/file> path </path/to/project>
उदाहरण के लिए:
cycode report sbom --format spdx-2.3 --include-vulnerabilities --include-dev-dependencies path /path/to/local/project
path उप-आदेश निम्नलिखित अतिरिक्त विकल्पों का समर्थन करता है:
| विकल्प | विवरण |
|---|---|
--no-restore | लॉकफ़ाइल पुनर्स्थापना छोड़ें और केवल प्रत्यक्ष निर्भरताओं को स्कैन करें। विवरण के लिए लॉक पुनर्स्थापना विकल्प देखें। |
--gradle-all-sub-projects | सभी उप-प्रोजेक्टों के लिए Gradle पुनर्स्थापना आदेश चलाएँ (बहु-प्रोजेक्ट Gradle बिल्ड के रूट से उपयोग करें)। |
--maven-settings-file | केवल Maven के लिए, निर्भरता ट्री बनाते समय कस्टम settings.xml फ़ाइल का उपयोग करने की अनुमति देता है। |
आयात आदेश
SBOM आयात करना
सॉफ़्टवेयर बिल ऑफ़ मटेरियल्स (SBOM) किसी एप्लिकेशन के विकास और वितरण में शामिल सभी घटक घटकों और सॉफ़्टवेयर निर्भरताओं की एक सूची है। इस आदेश का उपयोग करके, आप अपने फ़ाइल सिस्टम से एक SBOM फ़ाइल को Cycode में आयात कर सकते हैं।
इस आदेश के साथ उपयोग के लिए निम्नलिखित विकल्प उपलब्ध हैं:
| विकल्प | विवरण | आवश्यक | डिफ़ॉल्ट |
|---|---|---|---|
-n, --name TEXT | SBOM का प्रदर्शन नाम | हाँ | |
-v, --vendor TEXT | SBOM प्रदान करने वाली इकाई का नाम | हाँ | |
-l, --label TEXT | SBOM से लेबल संलग्न करें | नहीं | |
-o, --owner TEXT | Cycode उपयोगकर्ता का ईमेल पता जो इस SBOM के लिए संपर्क बिंदु के रूप में कार्य करता है | नहीं | |
-b, --business-impact [High | Medium | Low] | व्यावसायिक प्रभाव | नहीं | Medium |
उदाहरण के लिए:
cycode import sbom --name example-sbom --vendor cycode -label tag1 -label tag2 --owner [email protected] /path/to/local/project
स्कैन लॉग
सभी CLI स्कैन Cycode में लॉग किए जाते हैं। लॉग सेटिंग्स > CLI लॉग्स के अंतर्गत पाए जा सकते हैं।
सिंटैक्स सहायता
आप उपलब्ध विकल्पों और उनके सिंटैक्स को प्रदर्शित करने वाला सहायता संदेश देखने के लिए किसी भी समय किसी भी आदेश में --help तर्क जोड़ सकते हैं।
सामान्य सहायता देखने के लिए, बस यह आदेश दर्ज करें:
cycode --help
स्कैन विकल्प देखने के लिए, दर्ज करें:
cycode scan --help
किसी विशिष्ट प्रकार के स्कैन के लिए उपलब्ध विकल्प देखने के लिए, दर्ज करें:
cycode scan {{option}} --help
उदाहरण के लिए, पथ स्कैन के लिए उपलब्ध विकल्प देखने के लिए, आप दर्ज करेंगे:
cycode scan path --help
अनदेखा स्कैन फ़ंक्शन के लिए उपलब्ध विकल्प देखने के लिए, इस आदेश का उपयोग करें:
cycode ignore --help
रिपोर्ट के लिए उपलब्ध विकल्प देखने के लिए, इस आदेश का उपयोग करें:
cycode report --help
किसी विशिष्ट प्रकार की रिपोर्ट के लिए उपलब्ध विकल्प देखने के लिए, दर्ज करें:
cycode scan {{option}} --help