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

Terrascan इन्फ्रास्ट्रक्चर ऐज़ कोड के लिए एक स्थैतिक कोड विश्लेषक है। Terrascan आपको अनुमति देता है:
अपने ब्राउज़र में Terrascan आज़माने के लिए, Terrascan Sandbox देखें https://www.tenable.com/terrascan
Terrascan की सुविधाओं और क्षमताओं के बारे में अधिक जानने के लिए, दस्तावेज़ीकरण पोर्टल देखें: https://runterrascan.io
Terrascan स्थापित करने के कई तरीकों का समर्थन करता है और एक डॉकर इमेज के रूप में भी उपलब्ध है। सभी समर्थित प्लेटफार्मों पर निर्माण के नवीनतम संस्करण के लिए Terrascan का releases पृष्ठ देखें। अपने प्लेटफॉर्म के लिए सही बाइनरी चुनें।
curl -L "$(curl -s https://api.github.com/repos/tenable/terrascan/releases/latest | grep -o -E "https://.+?_Linux_x86_64.tar.gz")" > terrascan.tar.gz
tar -xf terrascan.tar.gz terrascan && rm terrascan.tar.gz
sudo install terrascan /usr/local/bin && rm terrascan
terrascan
AUR के माध्यम से ArchLinux / Manjaro पर स्थापित करेंArchLinux और Manjaro उपयोगकर्ता इस प्रकार स्थापित कर सकते हैं:
yay -S terrascan
brew के माध्यम से स्थापित करेंHomebrew उपयोगकर्ता इस प्रकार स्थापित कर सकते हैं:
$ brew install terrascan
Terrascan एक डॉकर इमेज के रूप में भी उपलब्ध है और इसका उपयोग इस प्रकार किया जा सकता है
$ docker run tenable/terrascan
जानकारी के लिए दस्तावेज़ीकरण देखें।
अपने कोड में सुरक्षा मुद्दों के लिए स्कैन करने के लिए आप निम्नलिखित चला सकते हैं (डिफ़ॉल्ट रूप से Terraform स्कैन करता है)।
$ terrascan scan
नोट: स्कैन के दौरान कोई त्रुटि या उल्लंघन पाया जाने पर Terrascan एक त्रुटि कोड के साथ बाहर निकलेगा।
| परिदृश्य | निकास कोड |
|---|---|
| स्कैन सारांश में त्रुटियां और उल्लंघन हैं | 5 |
| स्कैन सारांश में त्रुटियां हैं लेकिन कोई उल्लंघन नहीं |
Terrascan को CI/CD पाइपलाइनों में एकीकृत किया जा सकता है ताकि सुरक्षा सर्वोत्तम प्रथाओं को लागू किया जा सके। कृपया अपनी पाइपलाइन के साथ एकीकरण के लिए हमारे दस्तावेज़ीकरण देखें।
आप निम्नलिखित विकल्पों के साथ terrascan कमांड का उपयोग कर सकते हैं:
$ terrascan
Terrascan
Usage:
terrascan [command]
Available Commands:
help Help about any command
init Initialize Terrascan
scan Detect compliance and security violations across Infrastructure as Code.
server Run Terrascan as an API server
version Terrascan version
Flags:
-c, --config-path string config file path
-h, --help help for terrascan
-l, --log-level string log level (debug, info, warn, error, panic, fatal) (default "info")
-x, --log-type string log output type (console, json) (default "console")
-o, --output string output type (human, json, yaml, xml) (default "human")
Use "terrascan [command] --help" for more information about a command.
Terrascan नीतियां Rego नीति भाषा का उपयोग करके लिखी जाती हैं। प्रत्येक rego में एक JSON "rule" फ़ाइल शामिल होती है जो नीति के लिए मेटाडेटा को परिभाषित करती है। डिफ़ॉल्ट रूप से, Terrascan पहली बार स्कैन करते समय Terrascan रिपॉजिटरी से नीतियां डाउनलोड करता है। हालांकि, यदि आप नवीनतम नीतियां डाउनलोड करना चाहते हैं, तो आपको आरंभीकरण प्रक्रिया चलानी होगी। आरंभीकरण प्रक्रिया के बारे में जानकारी के लिए उपयोग देखें।
नोट: यदि कोई नीति नहीं मिलती है तो स्कैन कमांड अंतर्निहित रूप से आरंभीकरण प्रक्रिया चलाएगा।
आप --find-vuln फ़्लैग का उपयोग करके Terrascan के आउटपुट के भाग के रूप में उसके रजिस्ट्री में रिपोर्ट की गई कमजोरियों को एकत्र कर सकते हैं। वर्तमान में Terrascan Elastic Container Registry (ECR), Azure Container Registry, Google Container Registry, और Google Artifact Registry का समर्थन करता है।
--find-vuln फ़्लैग का उपयोग IaC फ़ाइलों को स्कैन करते समय निम्नानुसार किया जा सकता है:
$ terrascan scan -i <IaC provider> --find-vuln
अधिक जानकारी और रजिस्ट्री के API के साथ प्रमाणीकरण के लिए अपने वातावरण को सेटअप करने के तरीके के स्पष्टीकरण के लिए उपयोग दस्तावेज़ीकरण देखें।
डिफ़ॉल्ट रूप से, Terrascan आपके पूरे कॉन्फ़िगरेशन को सभी नीतियों के विरुद्ध स्कैन करता है। हालांकि, Terrascan नीतियों और संसाधनों के दानेदार कॉन्फ़िगरेशन का समर्थन करता है।
हमारी दस्तावेज़ीकरण साइट पर in-file instrumentation और कॉन्फ़िग फ़ाइल के बारे में और पढ़ें।
अभी के लिए, कुछ त्वरित सुझाव:
आप Terrascan को किसी संसाधन को स्कैन करते समय किसी विशेष नीति (नियम) को छोड़ने के लिए कॉन्फ़िगर कर सकते हैं। अपने प्लेटफॉर्म के अनुसार इन चरणों का पालन करें:
Terraform स्क्रिप्ट का उपयोग करके Terrascan को "ts:skip=<RULENAME><SKIP_REASON>" वाक्यांश के साथ एक टिप्पणी सम्मिलित करके नियमों को छोड़ने के लिए कॉन्फ़िगर करें। टिप्पणी को नीचे दिए गए उदाहरण में दिखाए अनुसार संसाधन के अंदर शामिल किया जाना चाहिए।

Kubernetes yamls में, आप नीचे दिए गए स्निपेट में देखे अनुसार एक एनोटेशन जोड़कर Terrascan को नीतियों को छोड़ने के लिए कॉन्फ़िगर कर सकते हैं।

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

Terrascan का डिफ़ॉल्ट आउटपुट स्कैन किए गए IaC में मौजूद उल्लंघनों की एक सूची है। एक नमूना आउटपुट:

Terrascan को स्थानीय रूप से बनाया जा सकता है। यह सहायक है यदि आप नवीनतम संस्करण पर रहना चाहते हैं या Terrascan विकसित करते समय। gcc और Go 1.19 या उससे ऊपर आवश्यक हैं।
$ git clone [email protected]:tenable/terrascan.git
$ cd terrascan
$ make build
$ ./bin/terrascan
FROM golang:alpine AS build-env
RUN apk add --update git
RUN git clone https://github.com/tenable/terrascan && cd terrascan \
&& CGO_ENABLED=0 GO111MODULE=on go build -o /go/bin/terrascan cmd/terrascan/main.go
Terrascan के विकास और योगदान के बारे में अधिक जानने के लिए, योगदान गाइड देखें।
हम मानते हैं कि एक खुला और समावेशी समुदाय हम सभी को लाभान्वित करता है। कृपया ध्यान दें कि यह प्रोजेक्ट योगदानकर्ता आचार संहिता के साथ जारी किया गया है। इस प्रोजेक्ट में भाग लेने से आप इसकी शर्तों का पालन करने के लिए सहमत होते हैं।
Terrascan Apache 2.0 लाइसेंस के तहत लाइसेंस प्राप्त है।
| 4 |
| स्कैन सारांश में उल्लंघन हैं लेकिन कोई त्रुटि नहीं | 3 |
| स्कैन सारांश में कोई उल्लंघन या त्रुटि नहीं | 0 |
| अमान्य इनपुट के कारण स्कैन कमांड त्रुटि देता है | 1 |