
safe-chain v1.5.15
npm, yarn, pnpm, npx, pnpx, pip, uv और poetry के माध्यम से इंस्टॉल किए गए दुर्भावनापूर्ण कोड से Aikido Safe Chain के साथ सुरक्षा करें। उपयोग के लिए निःशुल्क, किसी टोकन की आवश्यकता नहीं है।
Aikido Safe Chain
- ✅ डेवलपर लैपटॉप और CI/CD पर मैलवेयर ब्लॉक करें
- ✅ npm और PyPI सपोर्ट करता है और पैकेज मैनेजर आ रहे हैं
- ✅ 48 घंटे से नए पैकेज ब्लॉक करता है आपके बिल्ड को तोड़े बिना
- ✅ बिना टोकन, मुफ़्त, कोई बिल्ड डेटा साझा नहीं होता
npm और PyPI से परे सुरक्षा चाहिए?
Aikido Device Protection Safe Chain पर आधारित है, जो पैकेज और एक्सटेंशन सुरक्षा को और अधिक इकोसिस्टम तक विस्तारित करता है: npm, PyPI, VS Code, Open VSX - (Cursor, Windsurf, Kiro, Vs Codium, ...), Maven, NuGet, Chrome एक्सटेंशन, Go, Skills.sh AI skills, Ruby, Rust, और भी बहुत कुछ।
केंद्रीकृत पॉलिसी प्रबंधन, अनुरोध-और-अनुमोदन वर्कफ़्लो, और आपके संगठन के हर डेवलपर वर्कस्टेशन पर दृश्यता पाएं। यह उसी Aikido Intel फ़ीड द्वारा संचालित है। इसे मैन्युअल रूप से तैनात करें या अपने MDM टूल (Jamf, Fleet, या Iru) के माध्यम से प्रबंधित करें।
Aikido Safe Chain निम्नलिखित पैकेज मैनेजर सपोर्ट करता है:
- 📦 npm
- 📦 npx
- 📦 yarn
- 📦 pnpm
- 📦 pnpx
- 📦 rush
- 📦 rushx
- 📦 bun
- 📦 bunx
- 📦 pip
- 📦 pip3
- 📦 uv
- 📦 poetry
- 📦 uvx
- 📦 pipx
- 📦 pdm
उपयोग

स्थापना
इंस्टॉलेशन स्क्रिप्ट की मदद से Aikido Safe Chain इंस्टॉल करना आसान है।
Unix/Linux/macOS```shell
curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.sh -o /tmp/install-safe-chain.sh
&& echo "de0565e3d6346407a604e84e639e95fea8758748063da2216bbfdca5feda5dd2 /tmp/install-safe-chain.sh" | sha256sum -c -
&& sh /tmp/install-safe-chain.sh
&& rm /tmp/install-safe-chain.sh
### Windows (PowerShell)```powershell
$installer = Join-Path $env:TEMP "install-safe-chain.ps1"
Invoke-WebRequest "https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.ps1" -OutFile $installer -UseBasicParsing
$expectedHash = "5FC22EEF74814BEF6828AA07C0EAEC79598F343F98B94A4ACAB823769AD56DA1"
if ((Get-FileHash $installer -Algorithm SHA256).Hash -ne $expectedHash) {
Remove-Item $installer -ErrorAction SilentlyContinue
throw "Checksum verification failed for install-safe-chain.ps1"
}
& $installer
Remove-Item $installer
उपरोक्त इंस्टॉल कमांड हमेशा एक विशिष्ट रिलीज़ को संदर्भित करते हैं। कोई भिन्न संस्करण इंस्टॉल करने के लिए, संस्करण को अपने इच्छित संस्करण संख्या से बदलें। सभी उपलब्ध संस्करण रिलीज़ पेज पर हैं।
डाउनलोड अखंडता
इंस्टॉल स्क्रिप्ट एक संस्करणयुक्त रिलीज़ URL (releases/download/1.5.15/...) से प्रदान की जाती हैं। GitHub रिलीज़ अपरिवर्तनीय हैं — एक बार कोई आर्टिफैक्ट किसी संस्करणयुक्त URL पर प्रकाशित हो जाने पर उसे संशोधित या प्रतिस्थापित नहीं किया जा सकता, इसलिए आपके द्वारा डाउनलोड की गई फ़ाइल की गारंटी है कि वह बिल्कुल वैसी ही है जैसी रिलीज़ की गई थी।
इंस्टॉलेशन सत्यापित करें
-
❗अपने टर्मिनल को पुनः आरंभ करें Aikido Safe Chain का उपयोग शुरू करने के लिए।
- यह चरण महत्वपूर्ण है क्योंकि यह सुनिश्चित करता है कि npm, npx, yarn, pnpm, pnpx, rush, rushx, bun, bunx, pip, pip3, poetry, uv, uvx, pipx और pdm के लिए शेल एलियास सही ढंग से लोड हों। यदि आप अपना टर्मिनल पुनः आरंभ नहीं करते हैं, तो एलियास उपलब्ध नहीं होंगे।
-
इंस्टॉलेशन सत्यापित करें सत्यापन कमांड चलाकर: ```shell npm safe-chain-verify pnpm safe-chain-verify pip safe-chain-verify uv safe-chain-verify
Any other supported package manager: {packagemanager} safe-chain-verify
- आउटपुट में "OK: Safe-chain works!" प्रदर्शित होना चाहिए, जो पुष्टि करता है कि Aikido Safe Chain सही ढंग से स्थापित और चालू है।
-
(वैकल्पिक) मैलवेयर ब्लॉकिंग का परीक्षण करें एक परीक्षण पैकेज स्थापित करने का प्रयास करके:
JavaScript/Node.js के लिए: ```shell npm install safe-chain-test
Python के लिए: ```shell pip3 install safe-chain-pi-test
- आउटपुट से यह दिखना चाहिए कि Aikido Safe Chain इन परीक्षण पैकेजों की स्थापना को रोक रहा है, क्योंकि इन्हें मैलवेयर के रूप में चिह्नित किया गया है।
जब आप `npm`, `npx`, `yarn`, `pnpm`, `pnpx`, `rush`, `rushx`, `bun`, `bunx`, `pip`, `pip3`, `uv`, `uvx`, `poetry`, `pipx` और `pdm` कमांड चलाते हैं, तो Aikido Safe Chain आपके द्वारा स्थापित किए जाने वाले पैकेजों में मैलवेयर की स्वचालित रूप से जाँच करेगा। यह उपलब्ध होने पर pip के लिए Python मॉड्यूल कॉल्स को भी इंटरसेप्ट करता है (जैसे, `python -m pip install ...`, `python3 -m pip download ...`)। यदि कोई मैलवेयर पाया जाता है, तो यह आपको कमांड से बाहर निकलने के लिए संकेत देगा।
आप स्थापित संस्करण की जाँच निम्न कमांड चलाकर कर सकते हैं:
``````shell
safe-chain --version
यह कैसे काम करता है
मैलवेयर ब्लॉकिंग
Aikido Safe Chain एक हल्का प्रॉक्सी सर्वर चलाकर काम करता है जो npm रजिस्ट्री और PyPI से पैकेज डाउनलोड को इंटरसेप्ट करता है। जब आप npm, npx, yarn, pnpm, pnpx, rush, rushx, bun, bunx, pip, pip3, uv, uvx, poetry, pipx या pdm कमांड चलाते हैं, तो सभी पैकेज डाउनलोड इस लोकल प्रॉक्सी के माध्यम से रूट होते हैं, जो Aikido Intel - Open Sources Threat Intelligence के विरुद्ध वास्तविक समय में पैकेजों को सत्यापित करता है। यदि किसी पैकेज (गहरी निर्भरताओं सहित) में मैलवेयर पाया जाता है, तो प्रॉक्सी दुर्भावनापूर्ण कोड आपकी मशीन तक पहुँचने से पहले डाउनलोड को ब्लॉक कर देता है।
न्यूनतम पैकेज आयु
Safe Chain समर्थित इकोसिस्टम पर न्यूनतम पैकेज आयु जाँच लागू करता है।
वर्तमान प्रवर्तन इकोसिस्टम के अनुसार अलग है:
- npm-आधारित पैकेज प्रबंधक:
- सामान्य पैकेज रिज़ॉल्यूशन के दौरान, Safe Chain उन संस्करणों को दबा देता है जो रजिस्ट्री द्वारा लौटाए गए पैकेज मेटाडेटा से कॉन्फ़िगर की गई न्यूनतम आयु से नए होते हैं
- उस मेटाडेटा प्रवाह को बायपास करने वाले सीधे पैकेज डाउनलोड अनुरोधों के लिए, Safe Chain नए रिलीज़ हुए पैकेजों की कैश्ड सूची का उपयोग करके स्वयं अनुरोध को ब्लॉक कर सकता है
- Python पैकेज प्रबंधक:
- पैकेज रिज़ॉल्यूशन के दौरान, Safe Chain PyPI मेटाडेटा प्रतिक्रियाओं से बहुत नई फ़ाइलों और रिलीज़ों को दबा देता है
- उस मेटाडेटा प्रवाह को बायपास करने वाले सीधे पैकेज डाउनलोड अनुरोधों के लिए, Safe Chain नए रिलीज़ हुए पैकेजों की कैश्ड सूची का उपयोग करके स्वयं अनुरोध को ब्लॉक कर सकता है
डिफ़ॉल्ट रूप से, न्यूनतम पैकेज आयु 48 घंटे है। यह उस महत्वपूर्ण अवधि के दौरान एक अतिरिक्त सुरक्षा परत प्रदान करता है जब नए प्रकाशित पैकेजों में अनियंत्रित खतरे होने की सबसे अधिक संभावना होती है। आप इस सीमा को कॉन्फ़िगर कर सकते हैं या इस सुरक्षा को पूरी तरह से बायपास कर सकते हैं - नीचे न्यूनतम पैकेज आयु कॉन्फ़िगरेशन अनुभाग देखें।
शेल एकीकरण
Aikido Safe Chain आपके शेल के साथ एकीकृत होता है ताकि npm, npx, yarn, pnpm, pnpx, rush, rushx, bun, bunx, और Python पैकेज प्रबंधकों (pip, uv, uvx, poetry, pipx, pdm) का उपयोग करते समय एक सहज अनुभव प्रदान किया जा सके। यह इन कमांडों के लिए aliases सेट करता है ताकि वे Aikido Safe Chain कमांड द्वारा लपेटे जाएँ, जो मूल कमांड को निष्पादित करने से पहले प्रॉक्सी सर्वर का प्रबंधन करते हैं। हम वर्तमान में समर्थन करते हैं:
- ✅ Bash
- ✅ Zsh
- ✅ Fish
- ✅ PowerShell
- ✅ PowerShell Core
शेल एकीकरण के बारे में अधिक जानकारी शेल एकीकरण दस्तावेज़ में पाई जा सकती है।
अनइंस्टॉलेशन
Aikido Safe Chain को अनइंस्टॉल करने के लिए, हमारे एक-लाइन अनइंस्टॉलर का उपयोग करें:
Unix/Linux/macOS```shell
curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/uninstall-safe-chain.sh | sh
### Windows (PowerShell)```powershell
iex (iwr "https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/uninstall-safe-chain.ps1" -UseBasicParsing)
❗अपना टर्मिनल पुनः प्रारंभ करें अनइंस्टॉल करने के बाद यह सुनिश्चित करने के लिए कि सभी aliases हटा दिए गए हैं।
कॉन्फ़िगरेशन
लॉगिंग
आप --safe-chain-logging फ़्लैग या SAFE_CHAIN_LOGGING पर्यावरण चर का उपयोग करके Aikido Safe Chain से आउटपुट को नियंत्रित कर सकते हैं।
कॉन्फ़िगरेशन विकल्प
आप लॉगिंग स्तर को कई स्रोतों के माध्यम से सेट कर सकते हैं (प्राथमिकता के क्रम में):
-
CLI आर्गुमेंट (उच्चतम प्राथमिकता):
-
--safe-chain-logging=silent- malware ब्लॉक होने के अलावा सभी Aikido Safe Chain आउटपुट को दबा देता है। पैकेज मैनेजर आउटपुट सामान्य रूप से stdout पर लिखा जाता है, और Safe Chain केवल एक छोटा संदेश लिखता है यदि उसने malware ब्लॉक किया है और प्रक्रिया को exit करने का कारण बनता है।npm install express --safe-chain-logging=silent -
--safe-chain-logging=verbose- Aikido Safe Chain से विस्तृत diagnostic output सक्षम करता है। समस्याओं का निवारण करने या यह समझने के लिए उपयोगी है कि Safe Chain पर्दे के पीछे क्या कर रहा है।npm install express --safe-chain-logging=verbose
-
-
पर्यावरण चर: ```shell export SAFE_CHAIN_LOGGING=verbose npm install express
मान्य मान: silent, normal, verbose
यह आपके टर्मिनल सत्र या CI/CD वातावरण में सभी पैकेज मैनेजर कमांड के लिए डिफ़ॉल्ट लॉगिंग स्तर सेट करने के लिए उपयोगी है।
फ़ाइल लॉगिंग
आप --safe-chain-log-file फ़्लैग या SAFE_CHAIN_LOG_FILE पर्यावरण चर का उपयोग करके Aikido Safe Chain आउटपुट को लॉग फ़ाइल में मिरर कर सकते हैं। फ़ाइल लॉगिंग डिफ़ॉल्ट रूप से अक्षम होती है और पथ सेट करने पर सक्षम हो जाती है। फ़ाइल प्रारूप (--safe-chain-log-file-format) और वर्बोसिटी (--safe-chain-log-file-verbosity) टर्मिनल आउटपुट से स्वतंत्र रूप से नियंत्रित होते हैं।
कॉन्फ़िगरेशन विकल्प
इनमें से किसी के माध्यम से सेट करें (प्राथमिकता के क्रम में):
- CLI आर्गुमेंट (सर्वोच्च प्राथमिकता): ```shell
npm install express
--safe-chain-log-file=~/safe-chain.log
--safe-chain-log-file-format=plain
--safe-chain-log-file-verbosity=normal - पर्यावरण चर: ```shell
export SAFE_CHAIN_LOG_FILE=~/safe-chain.log
export SAFE_CHAIN_LOG_FILE_FORMAT=plain
export SAFE_CHAIN_LOG_FILE_VERBOSITY=normal
- कॉन्फ़िग फ़ाइल (
~/.safe-chain/config.json): ```json { "logFile": "~/safe-chain.log", "logFileFormat": "plain", "logFileVerbosity": "normal" }
logFileFormat — json (डिफ़ॉल्ट) या plain।
logFileVerbosity — silent, normal, या verbose (डिफ़ॉल्ट)। --safe-chain-logging से स्वतंत्र।
न्यूनतम पैकेज आयु
आप कॉन्फ़िगर कर सकते हैं कि Safe Chain को उनकी स्थापना की अनुमति देने से पहले पैकेज कितने समय तक मौजूद रहने चाहिए। डिफ़ॉल्ट रूप से, पैकेज स्थापित होने से पहले कम से कम 48 घंटे पुराने होने चाहिए।
npm-आधारित पैकेज प्रबंधकों के लिए, इस जाँच में वर्तमान में दो प्रवर्तन मोड हैं:
- Safe Chain सामान्य निर्भरता समाधान के दौरान पैकेज मेटाडेटा से बहुत नए संस्करणों को दबा देता है।
- जब वे नए रिलीज़ हुए पैकेजों की कैश की गई सूची से मेल खाते हैं, तो Safe Chain सीधे पैकेज डाउनलोड अनुरोधों को अवरुद्ध कर देता है।
Python पैकेज प्रबंधकों के लिए, इस जाँच में वर्तमान में दो प्रवर्तन मोड हैं:
- Safe Chain निर्भरता समाधान के दौरान PyPI मेटाडेटा से बहुत नई फ़ाइलों और रिलीज़ को दबा देता है।
- जब वे नए रिलीज़ हुए पैकेजों की कैश की गई सूची से मेल खाते हैं, तो Safe Chain सीधे पैकेज डाउनलोड अनुरोधों को अवरुद्ध कर देता है।
कॉन्फ़िगरेशन विकल्प
आप न्यूनतम पैकेज आयु को कई स्रोतों के माध्यम से सेट कर सकते हैं (प्राथमिकता के क्रम में):
- CLI तर्क (उच्चतम प्राथमिकता): ```shell
npm install express --safe-chain-minimum-package-age-hours=48
- पर्यावरण चर: ```shell
export SAFE_CHAIN_MINIMUM_PACKAGE_AGE_HOURS=48
npm install express
- कॉन्फ़िग फ़ाइल (
~/.safe-chain/config.json): ```json { "minimumPackageAgeHours": 48 }
पैकेजों को बाहर करना
पर्यावरण चर या कॉन्फ़िग फ़ाइल के माध्यम से न्यूनतम आयु फ़िल्टरिंग से विश्वसनीय पैकेजों को बाहर करें (दोनों विलय कर दिए जाते हैं)। किसी संगठन के सभी पैकेजों पर भरोसा करने के लिए @scope/* का उपयोग करें:```shell
export SAFE_CHAIN_MINIMUM_PACKAGE_AGE_EXCLUSIONS="@aikidosec/*"
कोई इनपुट सामग्री प्राप्त नहीं हुई। कृपया अनुवाद के लिए चंक 33 की सामग्री प्रदान करें।```json
{
"npm": {
"minimumPackageAgeExclusions": ["@aikidosec/*"]
},
"pip": {
"minimumPackageAgeExclusions": ["requests"]
}
}
कस्टम रजिस्ट्रियाँ
कस्टम या निजी रजिस्ट्रियों से पैकेज स्कैन करने के लिए Safe Chain को कॉन्फ़िगर करें।
समर्थित इकोसिस्टम:
- Node.js
- Python
कॉन्फ़िगरेशन विकल्प
आप पर्यावरण चर या कॉन्फ़िग फ़ाइल के माध्यम से कस्टम रजिस्ट्रियाँ सेट कर सकते हैं। दोनों स्रोतों को एक साथ मर्ज किया जाता है।
- पर्यावरण चर (अल्पविराम से अलग किए गए): ```shell
export SAFE_CHAIN_NPM_CUSTOM_REGISTRIES="npm.company.com,registry.internal.net"
export SAFE_CHAIN_PIP_CUSTOM_REGISTRIES="pip.company.com,registry.internal.net"
- कॉन्फ़िग फ़ाइल (
~/.safe-chain/config.json): ```json { "npm": { "customRegistries": ["npm.company.com", "registry.internal.net"] }, "pip": { "customRegistries": ["pip.company.com", "registry.internal.net"] } }
PYPI कॉन्फ़िगरेशन फ़ाइल
यदि आप pip कॉन्फ़िगरेशन के लिए pip.conf फ़ाइल पर निर्भर हैं, तो आपको PIP_CONFIG_FILE पर्यावरण चर के माध्यम से pip को स्पष्ट रूप से उसकी ओर इंगित करना होगा ताकि Safe Chain इसे मर्ज कर सके।
Safe Chain अपने MITM प्रॉक्सी के पीछे pip चलाता है और अपने प्रमाणपत्र और प्रॉक्सी सेटिंग्स इंजेक्ट करने के लिए एक अस्थायी pip कॉन्फ़िगरेशन फ़ाइल लिखता है। जब PIP_CONFIG_FILE सेट होता है, Safe Chain आपकी फ़ाइल की एक प्रति में अपनी सेटिंग्स मर्ज करता है (आपकी मूल फ़ाइल कभी संशोधित नहीं होती) ताकि आपके index-url, क्रेडेंशियल्स और अन्य विकल्प संरक्षित रहें। जब PIP_CONFIG_FILE सेट नहीं होता, तो pip का उपयोगकर्ता-स्तरीय कॉन्फ़िग (जैसे ~/.config/pip/pip.conf) Safe Chain की अस्थायी फ़ाइल द्वारा अधिलेखित हो सकता है और आपकी सेटिंग्स लागू नहीं होंगी।
मैलवेयर सूची बेस URL
Safe Chain को कस्टम मिरर URL से मैलवेयर डेटाबेस और नए पैकेज सूचियाँ प्राप्त करने के लिए कॉन्फ़िगर करें। यह आपको Aikido मैलवेयर डेटाबेस की अपनी प्रति होस्ट करने की अनुमति देता है।
कॉन्फ़िगरेशन विकल्प
आप मैलवेयर सूची बेस URL को कई स्रोतों के माध्यम से सेट कर सकते हैं (प्राथमिकता के क्रम में):
- CLI तर्क (उच्चतम प्राथमिकता): ```shell
npm install express --safe-chain-malware-list-base-url=https://your-mirror.com
- पर्यावरण चर: ```shell
export SAFE_CHAIN_MALWARE_LIST_BASE_URL=https://your-mirror.com
npm install express
- कॉन्फ़िग फ़ाइल (
~/.safe-chain/config.json): ```json { "malwareListBaseUrl": "https://your-mirror.com" }
बेस URL को ऐसे सर्वर पर इंगित करना चाहिए जो https://malware-list.aikido.dev/ की संरचना को मिरर करता हो, जिसमें निम्नलिखित पथ शामिल हों:
/malware_predictions.json(JavaScript इकोसिस्टम मालवेयर डेटाबेस)/malware_pypi.json(Python इकोसिस्टम मालवेयर डेटाबेस)/releases/npm.json(JavaScript नए पैकेजों की सूची)/releases/pypi.json(Python नए पैकेजों की सूची)
प्रोजेक्ट कॉन्फ़िग फ़ाइल
होम-डायरेक्टरी कॉन्फ़िग फ़ाइल (~/.safe-chain/config.json) के अतिरिक्त, Safe Chain एक प्रोजेक्ट कॉन्फ़िग फ़ाइल का भी समर्थन करता है, ताकि सेटिंग्स को रिपॉज़िटरी में चेक इन किया जा सके और टीम में साझा किया जा सके, बजाय प्रति-मशीन कॉन्फ़िगर करने के।
अपनी रिपॉज़िटरी के रूट में .aikido फ़ाइल में एक safe-chain: सेक्शन जोड़ें (वही फ़ाइल जो अन्य Aikido टूल्स द्वारा उपयोग की जाती है; Safe Chain केवल अपना safe-chain: सेक्शन पढ़ता है और बाकी को अनदेखा करता है)। मिलने पर, इसकी सेटिंग्स आपकी होम-डायरेक्टरी कॉन्फ़िग फ़ाइल के ऊपर मर्ज की जाती हैं: प्रोजेक्ट कॉन्फ़िग में निर्धारित मानों को प्राथमिकता मिलती है, और ऐरे (जैसे customRegistries) दोनों फ़ाइलों से संयुक्त होते हैं, न कि एक दूसरे की जगह लेता है।
किसी प्रोजेक्ट कॉन्फ़िग फ़ाइल से केवल निम्नलिखित सेटिंग्स सेट की जा सकती हैं:```yaml safe-chain: minimumPackageAgeHours: 48 npm: customRegistries: - npm.company.com minimumPackageAgeExclusions: - "@aikidosec/*" pip: customRegistries: - pip.company.com minimumPackageAgeExclusions: - requests
Settings like `scanTimeout`, `malwareListBaseUrl`, और `logFile*` विकल्पों को प्रोजेक्ट कॉन्फ़िग फ़ाइल से सेट नहीं किया जा सकता - वे केवल आपकी होम-डायरेक्टरी कॉन्फ़िग, CLI तर्क, या पर्यावरण चरों से आ सकते हैं।
## कस्टम इंस्टॉल निर्देशिका
डिफ़ॉल्ट रूप से, Safe Chain स्वयं को `~/.safe-chain` में इंस्टॉल करता है। आप इंस्टॉलर को एक स्पष्ट इंस्टॉल निर्देशिका पास करके इसे बदल सकते हैं। यह सिस्टम-व्यापी इंस्टॉलेशन (जैसे Docker इमेज के अंदर) या जब आपको अन्य टूल्स के साथ टकराव से बचने की आवश्यकता हो, के लिए उपयोगी है।
सेट होने पर, सभी Safe Chain डेटा (बाइनरी, शिम्स, स्क्रिप्ट्स, कॉन्फ़िग) कस्टम निर्देशिका के अंतर्गत रखा जाता है बजाय `~/.safe-chain` के।
### Unix/Linux/macOS```shell
curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.sh -o /tmp/install-safe-chain.sh \
&& echo "de0565e3d6346407a604e84e639e95fea8758748063da2216bbfdca5feda5dd2 /tmp/install-safe-chain.sh" | sha256sum -c - \
&& sh /tmp/install-safe-chain.sh --install-dir /usr/local/.safe-chain \
&& rm /tmp/install-safe-chain.sh
Windows```powershell
$installer = Join-Path $env:TEMP "install-safe-chain.ps1" Invoke-WebRequest "https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.ps1" -OutFile $installer -UseBasicParsing $expectedHash = "5FC22EEF74814BEF6828AA07C0EAEC79598F343F98B94A4ACAB823769AD56DA1" if ((Get-FileHash $installer -Algorithm SHA256).Hash -ne $expectedHash) { Remove-Item $installer -ErrorAction SilentlyContinue throw "Checksum verification failed for install-safe-chain.ps1" } & $installer -InstallDir 'C:\ProgramData\safe-chain' Remove-Item $installer
# CI/CD में उपयोग
आप Aikido Safe Chain को अपनी बिल्ड प्रक्रिया में एकीकृत करके अपनी CI/CD पाइपलाइनों को दुर्भावनापूर्ण पैकेजों से सुरक्षित कर सकते हैं। यह सुनिश्चित करता है कि आपके स्वचालित बिल्ड के दौरान स्थापित किए जाने वाले किसी भी पैकेज की स्थापना से पहले मैलवेयर के लिए जाँच की जाती है।
## CI/CD के लिए स्थापना
CI/CD वातावरण के लिए Aikido Safe Chain को स्वचालित रूप से कॉन्फ़िगर करने हेतु `--ci` फ़्लैग का उपयोग करें। यह शेल एलियास के बजाय PATH में एक्ज़ीक्यूटेबल शिम्स सेट करता है।
### Unix/Linux/macOS (GitHub Actions, Azure Pipelines, आदि)```shell
curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.sh -o /tmp/install-safe-chain.sh \
&& echo "de0565e3d6346407a604e84e639e95fea8758748063da2216bbfdca5feda5dd2 /tmp/install-safe-chain.sh" | sha256sum -c - \
&& sh /tmp/install-safe-chain.sh --ci \
&& rm /tmp/install-safe-chain.sh
Windows (Azure Pipelines, आदि)```powershell
$installer = Join-Path $env:TEMP "install-safe-chain.ps1" Invoke-WebRequest "https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.ps1" -OutFile $installer -UseBasicParsing $expectedHash = "5FC22EEF74814BEF6828AA07C0EAEC79598F343F98B94A4ACAB823769AD56DA1" if ((Get-FileHash $installer -Algorithm SHA256).Hash -ne $expectedHash) { Remove-Item $installer -ErrorAction SilentlyContinue throw "Checksum verification failed for install-safe-chain.ps1" } & $installer -ci Remove-Item $installer
## समर्थित प्लेटफ़ॉर्म
- ✅ **GitHub Actions**
- ✅ **Azure Pipelines**
- ✅ **CircleCI**
- ✅ **Jenkins**
- ✅ **Bitbucket Pipelines**
- ✅ **GitLab Pipelines**
## GitHub Actions उदाहरण```yaml
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: "22"
cache: "npm"
- name: Install safe-chain
run: |
curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.sh -o /tmp/install-safe-chain.sh
echo "de0565e3d6346407a604e84e639e95fea8758748063da2216bbfdca5feda5dd2 /tmp/install-safe-chain.sh" | sha256sum -c -
sh /tmp/install-safe-chain.sh --ci
rm /tmp/install-safe-chain.sh
- name: Install dependencies
run: npm ci
Azure DevOps उदाहरण```yaml
-
task: NodeTool@0 inputs: versionSpec: "22.x" displayName: "Install Node.js"
-
script: | curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.sh -o /tmp/install-safe-chain.sh echo "de0565e3d6346407a604e84e639e95fea8758748063da2216bbfdca5feda5dd2 /tmp/install-safe-chain.sh" | sha256sum -c - sh /tmp/install-safe-chain.sh --ci rm /tmp/install-safe-chain.sh displayName: "Install safe-chain"
-
script: npm ci displayName: "Install dependencies"
## CircleCI उदाहरण```yaml
version: 2.1
jobs:
build:
docker:
- image: cimg/node:lts
steps:
- checkout
- run: |
curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.sh -o /tmp/install-safe-chain.sh
echo "de0565e3d6346407a604e84e639e95fea8758748063da2216bbfdca5feda5dd2 /tmp/install-safe-chain.sh" | sha256sum -c -
sh /tmp/install-safe-chain.sh --ci
rm /tmp/install-safe-chain.sh
- run: npm ci
workflows:
build_and_test:
jobs:
- build
Jenkins उदाहरण
नोट: यह मानता है कि Jenkins एजेंट पर Node.js और npm स्थापित हैं।```groovy pipeline { agent any
environment { // Jenkins does not automatically persist PATH updates from setup-ci, // so add the shims + binary directory explicitly for all stages. // If you installed into a custom directory, replace ~/.safe-chain with that path here. PATH = "${env.HOME}/.safe-chain/shims:${env.HOME}/.safe-chain/bin:${env.PATH}" }
stages { stage('Install safe-chain') { steps { sh ''' set -euo pipefail
# Install Safe Chain for CI
curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.sh -o /tmp/install-safe-chain.sh
echo "de0565e3d6346407a604e84e639e95fea8758748063da2216bbfdca5feda5dd2 /tmp/install-safe-chain.sh" | sha256sum -c -
sh /tmp/install-safe-chain.sh --ci
rm /tmp/install-safe-chain.sh
'''
}
}
stage('Install project dependencies etc...') {
steps {
sh '''
set -euo pipefail
npm ci
'''
}
}
} }
## Bitbucket Pipelines उदाहरण```yaml
image: node:22
steps:
- step:
name: Install
script:
- |
curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.sh -o /tmp/install-safe-chain.sh
echo "de0565e3d6346407a604e84e639e95fea8758748063da2216bbfdca5feda5dd2 /tmp/install-safe-chain.sh" | sha256sum -c -
sh /tmp/install-safe-chain.sh --ci
rm /tmp/install-safe-chain.sh
- export PATH=~/.safe-chain/shims:~/.safe-chain/bin:$PATH
- npm ci
सेटअप के बाद, आपकी CI पाइपलाइन में आने वाले सभी पैकेज मैनेजर कमांड स्वचालित रूप से Aikido Safe Chain के मैलवेयर डिटेक्शन द्वारा सुरक्षित रहेंगे।
GitLab पाइपलाइन उदाहरण
GitLab पाइपलाइनों में safe-chain जोड़ने के लिए, आपको इसे पाइपलाइन चलाने वाली इमेज में इंस्टॉल करना होगा। यह निम्न प्रकार से किया जा सकता है:
-
अपना बिल्ड चलाने के लिए एक dockerfile परिभाषित करें ```dockerfile FROM node:lts
Install safe-chain
RUN curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.15/install-safe-chain.sh -o /tmp/install-safe-chain.sh
&& echo "de0565e3d6346407a604e84e639e95fea8758748063da2216bbfdca5feda5dd2 /tmp/install-safe-chain.sh" | sha256sum -c -
&& sh /tmp/install-safe-chain.sh --ci
&& rm /tmp/install-safe-chain.shAdd safe-chain to PATH (update paths if you used a custom install dir)
ENV PATH="/root/.safe-chain/shims:/root/.safe-chain/bin:${PATH}"
-
अपनी CI पाइपलाइन में Docker इमेज बनाएँ ```yaml build-image: stage: build-image image: docker:latest services: - docker:dind script: - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - docker build -t $CI_REGISTRY_IMAGE:latest . - docker push $CI_REGISTRY_IMAGE:latest
-
अपनी pipeline में image का उपयोग करें: ```yaml npm-ci: stage: install image: $CI_REGISTRY_IMAGE:latest script: - npm ci
इस उदाहरण के लिए पूरी पाइपलाइन इस प्रकार दिखती है:```yaml stages:
- build-image
- install
build-image: stage: build-image image: docker:latest services: - docker:dind script: - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY - docker build -t $CI_REGISTRY_IMAGE:latest . - docker push $CI_REGISTRY_IMAGE:latest
npm-ci: stage: install image: $CI_REGISTRY_IMAGE:latest script: - npm ci
# समस्या निवारण
समस्याएँ आ रही हैं? सामान्य समस्याओं में सहायता के लिए [समस्या निवारण गाइड](https://github.com/aikidosec/safe-chain/blob/HEAD/docs/troubleshooting.md) देखें।
# समस्याओं की रिपोर्ट करें
यदि आपको समस्याएँ आती हैं:
1. [GitHub Issues](https://github.com/AikidoSec/safe-chain/issues) पर जाएँ
2. निम्नलिखित शामिल करें:
* ऑपरेटिंग सिस्टम और संस्करण
* शेल प्रकार और संस्करण
* `safe-chain --version` आउटपुट
* सत्यापन कमांड से आउटपुट
* विफल कमांड के विस्तृत लॉग (`--safe-chain-logging=verbose` तर्क जोड़ें)