
safe-chain v1.5.16
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 extensions, 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.20/install-safe-chain.sh -o /tmp/install-safe-chain.sh
&& echo "0ad25efe15d1fa56105157a454d647223e78eb0c53d1f85e3d10afcd722e7bfd /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.20/install-safe-chain.ps1" -OutFile $installer -UseBasicParsing
$expectedHash = "468C342C5AABB71200B0BD19950984EDD5C4B39811B653B13A5AD15E0FBA4DFA"
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
ऊपर दिए गए install commands हमेशा एक विशिष्ट release को संदर्भित करते हैं। किसी भिन्न version को install करने के लिए, version को अपने इच्छित version number से बदलें। सभी उपलब्ध versions releases page पर हैं।
Download integrity
Install scripts एक versioned release URL (releases/download/1.5.20/...) से serve किए जाते हैं। GitHub releases immutable होते हैं — एक बार किसी artifact को versioned URL पर publish कर दिए जाने के बाद उसे संशोधित या प्रतिस्थापित नहीं किया जा सकता, इसलिए आपके द्वारा download की गई file बिल्कुल वही होने की गारंटी है जो release की गई थी।
Verify the installation
-
❗अपना terminal restart करें ताकि Aikido Safe Chain का उपयोग शुरू किया जा सके।
- यह step महत्वपूर्ण है क्योंकि यह सुनिश्चित करता है कि npm, npx, yarn, pnpm, pnpx, rush, rushx, bun, bunx, pip, pip3, poetry, uv, uvx, pipx और pdm के लिए shell aliases सही ढंग से load हो गए हैं। यदि आप अपना terminal restart नहीं करते हैं, तो aliases उपलब्ध नहीं होंगे।
-
Installation verify करें verification command चलाकर: ```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 घंटे है। यह उस महत्वपूर्ण अवधि के दौरान एक अतिरिक्त सुरक्षा परत प्रदान करता है जब नए प्रकाशित पैकेजों में अज्ञात खतरों के होने की सबसे अधिक संभावना होती है। आप इस थ्रेशोल्ड को कॉन्फ़िगर कर सकते हैं या इस सुरक्षा को पूरी तरह से बायपास कर सकते हैं - नीचे Minimum Package Age Configuration अनुभाग देखें।
शेल एकीकरण
Aikido Safe Chain npm, npx, yarn, pnpm, pnpx, rush, rushx, bun, bunx, और Python पैकेज मैनेजर (pip, uv, uvx, poetry, pipx, pdm) का उपयोग करते समय एक सहज अनुभव प्रदान करने के लिए आपके शेल के साथ एकीकृत होता है। यह इन कमांडों के लिए एलियास सेट करता है ताकि वे Aikido Safe Chain कमांडों द्वारा रैप किए जाएँ, जो मूल कमांडों को निष्पादित करने से पहले प्रॉक्सी सर्वर को प्रबंधित करते हैं। हम वर्तमान में समर्थन करते हैं:
- ✅ Bash
- ✅ Zsh
- ✅ Fish
- ✅ PowerShell
- ✅ PowerShell Core
शेल एकीकरण के बारे में अधिक जानकारी shell integration documentation में पाई जा सकती है।
अनइंस्टॉलेशन
Aikido Safe Chain को अनइंस्टॉल करने के लिए, हमारे one-line uninstaller का उपयोग करें:
Unix/Linux/macOS```shell
curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.20/uninstall-safe-chain.sh | sh
### विंडोज़ (PowerShell)```powershell
iex (iwr "https://github.com/AikidoSec/safe-chain/releases/download/1.5.20/uninstall-safe-chain.ps1" -UseBasicParsing)
❗टर्मिनल को पुनः आरंभ करें अनइंस्टॉल करने के बाद यह सुनिश्चित करने के लिए कि सभी aliases हटा दिए गए हैं।
कॉन्फ़िगरेशन
लॉगिंग
आप --safe-chain-logging फ़्लैग या SAFE_CHAIN_LOGGING environment variable का उपयोग करके Aikido Safe Chain से आउटपुट को नियंत्रित कर सकते हैं।
कॉन्फ़िगरेशन विकल्प
आप कई स्रोतों के माध्यम से लॉगिंग स्तर सेट कर सकते हैं (प्राथमिकता के क्रम में):
-
CLI Argument (उच्चतम प्राथमिकता):
-
--safe-chain-logging=silent- malware ब्लॉक होने के अलावा सभी Aikido Safe Chain आउटपुट को दबा देता है। package manager आउटपुट सामान्य रूप से stdout पर लिखा जाता है, और Safe Chain केवल एक छोटा संदेश लिखता है यदि उसने malware ब्लॉक किया है और प्रक्रिया को बाहर निकलने का कारण बनता है।npm install express --safe-chain-logging=silent -
--safe-chain-logging=verbose- Aikido Safe Chain से विस्तृत diagnostic आउटपुट सक्षम करता है। समस्याओं के troubleshooting या यह समझने के लिए उपयोगी है कि Safe Chain पर्दे के पीछे क्या कर रहा है।npm install express --safe-chain-logging=verbose
-
-
Environment Variable: ```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 Argument (उच्चतम प्राथमिकता): ```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/*"
Please provide the Markdown content to translate.```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 environment variable के माध्यम से pip को स्पष्ट रूप से उस पर इंगित करना होगा ताकि Safe Chain इसे merge कर सके।
Safe Chain pip को अपने MITM proxy के पीछे चलाता है और अपना certificate तथा proxy settings inject करने के लिए एक अस्थायी pip configuration फ़ाइल लिखता है। जब PIP_CONFIG_FILE सेट होता है, तो Safe Chain अपनी settings को आपकी फ़ाइल की एक प्रति में merge करता है (आपकी मूल फ़ाइल कभी संशोधित नहीं की जाती) ताकि आपका index-url, credentials, और अन्य विकल्प संरक्षित रहें। जब PIP_CONFIG_FILE सेट नहीं होता है, तो pip का user-level config (जैसे ~/.config/pip/pip.conf) Safe Chain की अस्थायी फ़ाइल द्वारा override हो सकता है और आपकी settings नहीं उठाई जाएँगी।
Malware List Base URL
Safe Chain को कस्टम mirror URL से malware databases और new packages lists fetch करने के लिए configure करें। यह आपको Aikido malware database की अपनी प्रति host करने की अनुमति देता है।
Configuration Options
आप malware list base URL को कई स्रोतों के माध्यम से सेट कर सकते हैं (प्राथमिकता के क्रम में):
- CLI Argument (उच्चतम प्राथमिकता): ```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
`scanTimeout`, `malwareListBaseUrl`, और `logFile*` जैसी सेटिंग्स को प्रोजेक्ट कॉन्फ़िग फ़ाइल से सेट नहीं किया जा सकता - ये केवल आपकी होम-डायरेक्टरी कॉन्फ़िग, CLI आर्गुमेंट्स, या एनवायरनमेंट वेरिएबल्स से ही आ सकती हैं।
## कस्टम इंस्टॉल डायरेक्टरी
डिफ़ॉल्ट रूप से, Safe Chain स्वयं को `~/.safe-chain` में इंस्टॉल करता है। आप इंस्टॉलर को एक स्पष्ट इंस्टॉल डायरेक्टरी पास करके इसे बदल सकते हैं। यह सिस्टम-व्यापी इंस्टॉलेशन (जैसे किसी Docker इमेज के अंदर) के लिए उपयोगी है या जब आपको अन्य टूल्स के साथ टकराव से बचना हो।
सेट होने पर, सभी Safe Chain डेटा (बाइनरी, shims, स्क्रिप्ट्स, कॉन्फ़िग) `~/.safe-chain` के बजाय कस्टम डायरेक्टरी के अंतर्गत रखा जाता है।
### Unix/Linux/macOS```shell
curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.20/install-safe-chain.sh -o /tmp/install-safe-chain.sh \
&& echo "0ad25efe15d1fa56105157a454d647223e78eb0c53d1f85e3d10afcd722e7bfd /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
विंडोज़```powershell
$installer = Join-Path $env:TEMP "install-safe-chain.ps1" Invoke-WebRequest "https://github.com/AikidoSec/safe-chain/releases/download/1.5.20/install-safe-chain.ps1" -OutFile $installer -UseBasicParsing $expectedHash = "468C342C5AABB71200B0BD19950984EDD5C4B39811B653B13A5AD15E0FBA4DFA" 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.20/install-safe-chain.sh -o /tmp/install-safe-chain.sh \
&& echo "0ad25efe15d1fa56105157a454d647223e78eb0c53d1f85e3d10afcd722e7bfd /tmp/install-safe-chain.sh" | sha256sum -c - \
&& sh /tmp/install-safe-chain.sh --ci \
&& rm /tmp/install-safe-chain.sh
विंडोज़ (Azure Pipelines, आदि)```powershell
$installer = Join-Path $env:TEMP "install-safe-chain.ps1" Invoke-WebRequest "https://github.com/AikidoSec/safe-chain/releases/download/1.5.20/install-safe-chain.ps1" -OutFile $installer -UseBasicParsing $expectedHash = "468C342C5AABB71200B0BD19950984EDD5C4B39811B653B13A5AD15E0FBA4DFA" 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.20/install-safe-chain.sh -o /tmp/install-safe-chain.sh
echo "0ad25efe15d1fa56105157a454d647223e78eb0c53d1f85e3d10afcd722e7bfd /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.20/install-safe-chain.sh -o /tmp/install-safe-chain.sh echo "0ad25efe15d1fa56105157a454d647223e78eb0c53d1f85e3d10afcd722e7bfd /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.20/install-safe-chain.sh -o /tmp/install-safe-chain.sh
echo "0ad25efe15d1fa56105157a454d647223e78eb0c53d1f85e3d10afcd722e7bfd /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 उदाहरण
नोट: यह मानता है कि Node.js और npm Jenkins एजेंट पर इंस्टॉल हैं।```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.20/install-safe-chain.sh -o /tmp/install-safe-chain.sh
echo "0ad25efe15d1fa56105157a454d647223e78eb0c53d1f85e3d10afcd722e7bfd /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.20/install-safe-chain.sh -o /tmp/install-safe-chain.sh
echo "0ad25efe15d1fa56105157a454d647223e78eb0c53d1f85e3d10afcd722e7bfd /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 Pipelines उदाहरण
GitLab पाइपलाइनों में safe-chain जोड़ने के लिए, आपको इसे पाइपलाइन चलाने वाली इमेज में इंस्टॉल करना होगा। यह निम्नलिखित तरीकों से किया जा सकता है:
-
अपने बिल्ड को चलाने के लिए एक dockerfile परिभाषित करें ```dockerfile FROM node:lts
Install safe-chain
RUN curl -fsSL https://github.com/AikidoSec/safe-chain/releases/download/1.5.20/install-safe-chain.sh -o /tmp/install-safe-chain.sh
&& echo "0ad25efe15d1fa56105157a454d647223e78eb0c53d1f85e3d10afcd722e7bfd /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
-
अपनी पाइपलाइन में इमेज का उपयोग करें: ```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/main/docs/troubleshooting.md) देखें।
# समस्याएँ रिपोर्ट करें
यदि आपको समस्याएँ आती हैं:
1. [GitHub Issues](https://github.com/AikidoSec/safe-chain/issues) पर जाएँ
2. इन्हें शामिल करें:
* ऑपरेटिंग सिस्टम और संस्करण
* शेल प्रकार और संस्करण
* `safe-chain --version` का आउटपुट
* सत्यापन कमांड का आउटपुट
* विफल कमांड के वर्बोज़ लॉग (`--safe-chain-logging=verbose` आर्ग्युमेंट जोड़ें)