
आपको गुप्त जानकारी और क्रेडेंशियल्स को git रिपॉजिटरी में कमिट करने से रोकता है
.. contents:: :depth: 2
::
git secrets --scan [-r|--recursive] [--cached] [--no-index] [--untracked] [<files>...]
git secrets --scan-history
git secrets --install [-f|--force] [<target-directory>]
git secrets --list [--global]
git secrets --add [-a|--allowed] [-l|--literal] [--global] <pattern>
git secrets --add-provider [--global] <command> [arguments...]
git secrets --register-aws [--global]
git secrets --aws-provider [<credentials-file>]
git-secrets कमिट, कमिट संदेश और --no-ff मर्ज को स्कैन करता है ताकि आपके git रिपॉजिटरी में गुप्त जानकारी जुड़ने से रोका जा सके। यदि कोई कमिट, कमिट संदेश, या --no-ff मर्ज हिस्ट्री में कोई कमिट आपके कॉन्फ़िगर किए गए निषिद्ध रेगुलर एक्सप्रेशन पैटर्न से मेल खाता है, तो कमिट अस्वीकार कर दिया जाता है।
git-secrets को आपके PATH में कहीं रखा जाना चाहिए ताकि git secrets चलाने पर git द्वारा इसे पहचाना जा सके।
*nix (Linux/macOS)
आप दिए गए Makefile के ``install`` लक्ष्य का उपयोग करके ``git secrets`` और मैन पेज को स्थापित कर सकते हैं।
आप PREFIX और MANPREFIX वेरिएबल का उपयोग करके स्थापना पथ को अनुकूलित कर सकते हैं।
::
make install
Windows
~~~~~~~
दिए गए ``install.ps1`` पॉवरशेल स्क्रिप्ट को चलाएँ। यह आवश्यक फ़ाइलों को एक स्थापना निर्देशिका (डिफ़ॉल्ट रूप से ``%USERPROFILE%/.git-secrets``) में कॉपी करेगा और वर्तमान उपयोगकर्ता ``PATH`` में निर्देशिका जोड़ेगा।
::
PS > ./install.ps1
Homebrew (macOS उपयोगकर्ताओं के लिए)
::
brew install git-secrets
.. warning::
**आपने अभी तक काम पूरा नहीं किया है! आपको प्रत्येक रिपॉजिटरी के लिए git हुक स्थापित करने होंगे जिसके लिए आप** ``git secrets --install`` **का उपयोग करना चाहते हैं।**
यहाँ एक त्वरित उदाहरण दिया गया है कि कैसे सुनिश्चित करें कि प्रत्येक कमिट पर एक git रिपॉजिटरी को गुप्त जानकारी के लिए स्कैन किया जाए::
cd /path/to/my/repo
git secrets --install
git secrets --register-aws
यदि आप भविष्य में आरंभ या क्लोन किए जाने वाले सभी रिपॉजिटरी में हुक जोड़ना चाहते हैं तो एक कॉन्फ़िगरेशन टेम्पलेट जोड़ें।
::
git secrets --register-aws --global
अपने सभी स्थानीय रिपॉजिटरी में हुक जोड़ें।
::
git secrets --install ~/.git-templates/git-secrets
git config --global init.templateDir ~/.git-templates/git-secrets
सुरक्षा क्रेडेंशियल्स को स्कैन करने के लिए कस्टम प्रदाता जोड़ें।
::
git secrets --add-provider -- cat /path/to/secret/file/patterns
git-secrets के साथ सभी संशोधनों सहित किसी रिपॉजिटरी को स्कैन करना भी संभव है:
::
git secrets --scan-history
संचालन मोड
इनमें से प्रत्येक विकल्प कमांड लाइन पर सबसे पहले आना चाहिए।
``--install``
किसी रिपॉजिटरी के लिए git हुक स्थापित करता है। एक git रिपॉजिटरी के लिए हुक स्थापित होने के बाद, उस रिपॉजिटरी के लिए कमिट और नॉन-फास्ट-फॉरवर्ड मर्ज को गुप्त जानकारी कमिट करने से रोका जाएगा।
``--scan``
एक या अधिक फ़ाइलों को गुप्त जानकारी के लिए स्कैन करता है। जब किसी फ़ाइल में कोई गुप्त जानकारी होती है, तो स्कैन की जा रही फ़ाइल से मेल खाने वाला टेक्स्ट stdout पर लिखा जाएगा और स्क्रिप्ट गैर-शून्य स्थिति के साथ बाहर निकलेगी। प्रत्येक मेल खाने वाली पंक्ति को मेल खाने वाली फ़ाइल के नाम, एक कोलन, मेल खाने वाली पंक्ति संख्या, एक कोलन, और फिर मेल खाने वाली टेक्स्ट की पंक्ति के साथ लिखा जाएगा। यदि कोई फ़ाइल प्रदान नहीं की गई है, तो ``git ls-files`` द्वारा लौटाई गई सभी फ़ाइलों को स्कैन किया जाता है।
``--scan-history``
सभी संशोधनों सहित रिपॉजिटरी को स्कैन करता है। जब किसी फ़ाइल में कोई गुप्त जानकारी होती है, तो स्कैन की जा रही फ़ाइल से मेल खाने वाला टेक्स्ट stdout पर लिखा जाएगा और स्क्रिप्ट गैर-शून्य स्थिति के साथ बाहर निकलेगी। प्रत्येक मेल खाने वाली पंक्ति को मेल खाने वाली फ़ाइल के नाम, एक कोलन, मेल खाने वाली पंक्ति संख्या, एक कोलन, और फिर मेल खाने वाली टेक्स्ट की पंक्ति के साथ लिखा जाएगा।
``--list``
वर्तमान रिपॉजिटरी या वैश्विक git कॉन्फ़िगरेशन के लिए ``git-secrets`` कॉन्फ़िगरेशन को सूचीबद्ध करता है।
``--add``
एक निषिद्ध या अनुमत पैटर्न जोड़ता है।
``--add-provider``
एक गुप्त प्रदाता पंजीकृत करता है। गुप्त प्रदाता ऐसे निष्पादन योग्य होते हैं जो चलाए जाने पर निषिद्ध पैटर्न आउटपुट करते हैं जिन्हें ``git-secrets`` को निषिद्ध मानना चाहिए।
``--register-aws``
git कॉन्फ़िगरेशन में सामान्य AWS पैटर्न जोड़ता है और सुनिश्चित करता है कि ``~/.aws/credentials`` में मौजूद कुंजियाँ किसी भी कमिट में न मिलें। निम्नलिखित जाँचें जोड़ी गई हैं:
- ``(A3T[A-Z0-9]|AKIA|AGPA|AIDA|AROA|AIPA|ANPA|ANVA|ASIA)[A-Z0-9]{16}`` के माध्यम से AWS एक्सेस कुंजी आईडी
- Amazon Bedrock API कुंजियाँ। लंबी अवधि वाली ``ABSK[A-Za-z0-9+/]{109,}=*`` और अल्पकालिक ``bedrock-api-key-YmVkcm9jay5hbWF6b25hd3MuY29t``
- वैकल्पिक उद्धरणों से घिरे ":" या "=" के माध्यम से AWS गुप्त एक्सेस कुंजी असाइनमेंट
- वैकल्पिक उद्धरणों से घिरे ":" या "=" के माध्यम से AWS खाता आईडी असाइनमेंट
- उदाहरण AWS कुंजियों के लिए अनुमत पैटर्न (``AKIAIOSFODNN7EXAMPLE`` और ``wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY``)
- ``~/.aws/credentials`` से ज्ञात क्रेडेंशियल्स
.. note::
जबकि इस कमांड द्वारा पंजीकृत पैटर्न को अधिकांश AWS क्रेडेंशियल उदाहरणों को पकड़ना चाहिए, ये पैटर्न **सभी** को पकड़ने की **गारंटी** नहीं हैं। ``git-secrets`` का उपयोग बीमा के अतिरिक्त साधन के रूप में किया जाना चाहिए - आपको अभी भी यह सुनिश्चित करने के लिए अपना उचित परिश्रम करना होगा कि आप किसी रिपॉजिटरी में क्रेडेंशियल्स कमिट न करें।
``--aws-provider``
गुप्त प्रदाता जो एक INI फ़ाइल में पाए गए क्रेडेंशियल्स को आउटपुट करता है। आप वैकल्पिक रूप से एक INI फ़ाइल का पथ प्रदान कर सकते हैं।
``--install`` के लिए विकल्प
-f, --force
यदि मौजूद हैं तो मौजूदा हुक को अधिलेखित करता है।
<target-directory>
जब प्रदान किया जाता है, तो दी गई निर्देशिका में git हुक स्थापित करता है। यदि <target-directory> प्रदान नहीं किया गया है तो वर्तमान निर्देशिका मान ली जाती है।
यदि प्रदान की गई ``<target-directory>`` किसी git रिपॉजिटरी में नहीं है, तो निर्देशिका बनाई जाएगी और हुक ``<target-directory>/hooks`` में रखे जाएंगे। यह ``git init --template <target-directory>`` के साथ उपयोग करने के लिए git टेम्पलेट निर्देशिका बनाने में उपयोगी हो सकता है।
आप पहले से आरंभित रिपॉजिटरी पर ``git init`` चला सकते हैं। `git init दस्तावेज़ <https://git-scm.com/docs/git-init>`_ से:
git दस्तावेज़ से: मौजूदा रिपॉजिटरी में ``git init`` चलाना सुरक्षित है। यह पहले से मौजूद चीजों को अधिलेखित नहीं करेगा। ``git init`` को पुनः चलाने का प्राथमिक कारण नव जोड़े गए टेम्पलेट को प्राप्त करना है (या यदि ``--separate-git-dir`` दिया गया है तो रिपॉजिटरी को किसी अन्य स्थान पर ले जाना)।
निम्नलिखित git हुक स्थापित किए गए हैं:
1. ``pre-commit``: यह जाँचने के लिए उपयोग किया जाता है कि कमिट में बदली गई कोई भी फ़ाइल निषिद्ध पैटर्न का उपयोग करती है या नहीं।
2. ``commit-msg``: यह निर्धारित करने के लिए उपयोग किया जाता है कि क्या कमिट संदेश में कोई निषिद्ध पैटर्न है।
3. ``prepare-commit-msg``: यह निर्धारित करने के लिए उपयोग किया जाता है कि क्या मर्ज कमिट किसी भी बिंदु पर एक निषिद्ध पैटर्न वाला इतिहास पेश करेगा। कृपया ध्यान दें कि यह हुक केवल गैर-फास्ट-फॉरवर्ड मर्ज के लिए लागू किया जाता है।
.. note::
Git प्रति हुक केवल एक स्क्रिप्ट निष्पादित करने की अनुमति देता है। यदि रिपॉजिटरी में Debian-शैली की उपनिर्देशिकाएँ जैसे ``pre-commit.d`` और ``commit-msg.d`` हैं, तो git हुक इन निर्देशिकाओं में स्थापित किए जाएंगे, यह मानते हुए कि आपने संबंधित हुक को इन निर्देशिकाओं में पाई जाने वाली सभी स्क्रिप्ट को निष्पादित करने के लिए कॉन्फ़िगर किया है। यदि ये git उपनिर्देशिकाएँ मौजूद नहीं हैं, तो git हुक git रिपॉजिटरी की ``.git/hooks`` निर्देशिका में स्थापित किए जाएंगे।
उदाहरण ^^^^^^^^