
चयनित फ़ाइलों को नियमों में बताए गए पैटर्न के लिए स्कैन करता है। इसका उपयोग उन रहस्यों को खोजने के लिए किया जाता है जो आपने गलती से किसी फ़ाइल में लिख दिए हों। यह स्कैनर दिखाने के लिए उपयोग किया जाता है कि कैसे GitLab [vulnerability report](https://docs.gitlab.com/ee/user/application_security/vulnerability_report/) को एक कस्टम स्कैनर द्वारा भरा जा सकता है। आप [Secret List](https://gitlab.com/gitlab-de/tutorials/security-and-governance/custom-scanner-integration/secret-list) प्रोजेक्ट में दस्तावेज़ीकरण का पालन करके इसका एक डेमो देख सकते हैं।
Fern के पैटर्न स्कैनर में आपका स्वागत है। यह स्कैनर आपके सुझाए गए फ़ाइलों को स्कैन करता है और rules/rules.yaml में बताए गए किसी भी पैटर्न को regex का उपयोग करके ढूंढता है। फिर सभी निष्कर्षों के साथ एक रिपोर्ट तैयार की जाती है। यह प्रोजेक्ट यह दिखाने के लिए उपयोग किया जाता है कि कैसे एक कस्टम सुरक्षा स्कैनर को GitLab में एकीकृत किया जा सकता है और पाइपलाइन सुरक्षा टैब, भेद्यता रिपोर्ट और मर्ज रिक्वेस्ट विजेट को भरने के लिए उपयोग किया जा सकता है।
नोट: भेद्यता रिपोर्ट तक पहुँचने के लिए GitLab Ultimate सब्सक्रिप्शन आवश्यक है।
आप निम्नलिखित को अपने .gitlab-ci.yml में जोड़कर इस सुरक्षा स्कैनर को सक्रिय कर सकते हैं:
include:
- remote: "https://gitlab.com/gitlab-de/tutorials/security-and-governance/custom-scanner-integration/fern-pattern-scanner/-/blob/main/jobs/.fern-pattern-scanner.gitlab-ci.yml"
आप स्कैनर को Secret List प्रोजेक्ट पर चलते हुए देख सकते हैं। स्कैनर पूरा होने के बाद, यह gl-secret-detection-report.json नामक एक रिपोर्ट उत्पन्न करता है। उस रिपोर्ट को मान्य किया जाता है और भेद्यता रिपोर्ट और मर्ज रिक्वेस्ट विजेट में लोड किया जाता है।
यदि आप स्कैनर चलाने वाले प्रोजेक्ट में कुछ पथों की स्कैनिंग को अनदेखा करना चाहते हैं, तो आप निम्नलिखित वेरिएबल को अल्पविराम से अलग किए गए मानों के साथ सेट कर सकते हैं:
variables:
FERN_ANALYZER_EXCLUDED_PATHS: "docs, tests"
यदि आप GitLab में रेगेक्स पैटर्न का अपना स्वयं का नियम सेट चलाना चाहते हैं, तो आपको निम्नलिखित करना होगा:
patterns:
- name: 'PATTERN NAME 1'
pattern: 'REGEX 1'
- name: 'PATTERN NAME 2'
pattern: 'REGEX 2'
fern_secret_detection:
script:
- /app/fern-pattern-scanner scan --rules "/path/to/rules.yaml" --report
अपने कोड को चेक इन करें और स्कैनर को नए नियम सेट के साथ चलना शुरू कर देना चाहिए। यह स्कैनर कमिट डिफ़्स को स्कैन नहीं करता है। यह पूरे प्रोजेक्ट में पैटर्न खोजता है।
जब पाइपलाइन पूरी हो जाती है, तो आप सभी पहचाने गए मुद्दों को देखने के लिए सुरक्षा टैब पर क्लिक कर सकते हैं। यदि आपके पास GitLab Ultimate है, तो ये मुद्दे भेद्यता रिपोर्ट में भी देखे जा सकते हैं।
आप इस स्कैनर का उपयोग अपनी स्थानीय मशीन पर चयनित फ़ाइल प्रकारों के लिए पैटर्न का पता लगाने के लिए कर सकते हैं। इस स्कैनर को अपनी स्थानीय मशीन पर चलाने के लिए नीचे दिए गए चरणों का पालन करें:
$ go install gitlab.com/gitlab-de/tutorials/security-and-governance/custom-scanner-integration/fern-pattern-scanner
नोट: यह फ़ाइल को आपके $GOBIN पर डाउनलोड करेगा। यदि आप Go में नए हैं, तो यह प्लेग्राउंड Go स्थापना के बारे में बताता है।
$ wget https://gitlab.com/gitlab-de/tutorials/security-and-governance/custom-scanner-integration/fern-pattern-scanner/-/raw/main/rules/rules.yaml
...
Resolving gitlab.com (gitlab.com)... 2606:4700:90:0:f22e:fbec:5bed:a9b9, 172.65.251.78
Connecting to gitlab.com (gitlab.com)|2606:4700:90:0:f22e:fbec:5bed:a9b9|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 283 [text/plain]
Saving to: ‘rules.yaml’
rules.yaml 100%[===================>] 283 --.-KB/s in 0s
2023-05-20 16:02:46 (22.5 MB/s) - ‘rules.yaml’ saved [283/283]
नोट: आप फ़ाइल को सीधे प्रोजेक्ट से भी डाउनलोड कर सकते हैं।
$ fern-pattern-scanner scan --rules path/to/rules.yaml
INFO[0000] The scanner is starting
INFO[0000] Skipping the following directories: []
INFO[0000] Possible Vulnerability Detected: {Id:139999 Name:password variation 1 Message:The pattern in rule: password variation 1 was found in a file Description:The pattern in rule: password variation 1 was found in a file. Examine the file, remove and rotate your secret. Location:/Users/fern/Desktop/secret-list/.git/index Line:3}
...
INFO[0000] The scanner completed successfully
Fern🌿 द्वारा निर्मित और अनुरक्षित