მყარი კოდირება, ღარიბი საიდუმლოებების მართვადა ისეთი ხელსაწყოების ნაკლებობა, როგორიცაა HashiCorp სარდაფით აპლიკაციების სერიოზული რისკის ქვეშ დაყენება კვლავაც გრძელდება. ყოველ ჯერზე, როდესაც დეველოპერი GitHub-ს API გასაღებს ან პაროლს აგზავნის, ისინი რისკის ქვეშ აყენებენ უსაფრთხოების დარღვევას. სინამდვილეში, თავდამსხმელები აქტიურად სკანირებენ საჯარო და კერძო საცავებს გამჟღავნებული საიდუმლოებების მოსაძებნად, იქნება ეს კოდში, კონფიგურაციის ფაილებში თუ Docker-ის სურათებში.
რეალური შედეგები აჩვენებს, თუ რა დევს სასწორზე. 2022 წელს თავდამსხმელებმა Uber-ის AWS გასაღებები GitHub-ის საცავში აღმოაჩინეს და კრიტიკული სისტემების შეღწევისთვის გამოიყენეს. Toyota-მ კერძო მომხმარებლის ინფრასტრუქტურა გამოავლინა მას შემდეგ, რაც დეველოპერებმა საიდუმლოებები საჯარო GitHub-ის საცავში გადასცეს. ორივე შემთხვევაში, გუნდებმა საიდუმლოებები კოდში დატოვეს და თავდამსხმელებმა სრულად ისარგებლეს ამით. ყველაფრის თავიდან აცილება შესაძლებელი იყო.
ამ სახელმძღვანელოში თქვენ შეისწავლით, თუ როგორ დაიცვათ თქვენი აპლიკაცია HashiCorp სარდაფით ცენტრალიზებული საიდუმლოებების მართვისთვის, შერწყმული Xygeni-ს ავტომატური აღმოჩენა და გამოსწორება ფუნქციები. ერთად, ეს ინსტრუმენტები დაგეხმარებათ:
- ამოიღეთ მყარი კოდირებული საიდუმლოებები თქვენი კოდის ბაზიდან
- საიდუმლოებების Git-ის ისტორიაში შეღწევის თავიდან აცილება
- გაჟონვის ავტომატურად აღმოჩენა და გამოსწორება, სანამ ისინი ექსპლუატაციისთვის ვარგისი გახდება
მოდით განვიხილოთ, თუ როგორ უნდა დააყენოთ ის ეტაპობრივად.
2. რა ითვლება საიდუმლოდ (და როგორ ხდება მათი გაჟონვა)
უპირველეს ყოვლისა, ა საიდუმლო ეს მხოლოდ პაროლი არ არის. ის მოიცავს API ტოკენებს, OAuth რწმუნებათა სიგელებს, მონაცემთა ბაზის კავშირის სტრიქონებს, SSH გასაღებებს, დაშიფვრის გასაღებებს და JWT-ებსაც კი. ყველაფერი, რაც სისტემაზე, რესურსზე ან იდენტობაზე წვდომას იძლევა, საიდუმლოდ ითვლება.
იმის გამო, რომ მყარი კოდირება ამ ავტორიზაციის მონაცემების წყაროს კოდში შეყვანა ჯერ კიდევ გავრცელებულია, ბევრი გუნდი უნებლიედ ნერგავს დაუცველობებს. ლოკალური შემუშავების დროს, ადვილია სწრაფი API გასაღების ჩასმა .env ფაილი — ან უარესი, პირდაპირ კოდში. შემდეგ, ერთი git commit შეუძლია სამუდამოდ გამოავლინოს ეს საიდუმლო.
მაშინაც კი, როდესაც საიდუმლოებები მოგვიანებით მოიხსნება commitს, ისინი ხშირად რჩებიან გიტის ისტორია, Docker-ის ფენები ან კომპილირებული არტეფაქტები. მაგალითად, ბევრი გაჟონვა შეუმჩნეველი რჩება მანამ, სანამ ვინმე არ გაუშვებს git log ან იღებს მეტამონაცემებს კონტეინერის გამოსახულებიდან.
სწორედ ამიტომ საიდუმლოებების მართვა უნდა იყოს პროაქტიული, უწყვეტი და ავტომატიზირებული. ტრადიციულ სკანერებს შეუძლიათ გამოტოვონ ტოტებში, სურათებში ან შეკუმშულ ფაილებში დამალული საიდუმლოებები. სწორედ აქ ხვდება ისეთი ინსტრუმენტები, როგორიცაა HashiCorp სარდაფით მდე ქსიგენი შემოდიხარ
გარდა ამისა, გახსოვდეთ, რომ საიდუმლოებები მხოლოდ დეველოპერებისგან არ გაჟონავს. CI/CD pipelines, სატესტო სკრიპტები და წარმოების გარემოში კონფიგურაციის ფაილებიც კი შეიძლება იყოს ზემოქმედების წყარო.
ამიტომ, საიდუმლოებების დაცვა მხოლოდ ინსტრუმენტებს არ ეხება, ეს ჩვევებს, ხილვადობასა და ავტომატიზაციას ეხება.
გსურთ უფრო ღრმად ჩაწვდეთ საიდუმლო გაჟონვას?
თუ გსურთ გაიგოთ, თუ რატომ ხდება საიდუმლოებების გაჟონვა და როგორ იყენებენ თავდამსხმელები მათ, არ გამოტოვოთ ეს დეტალური ინფორმაცია:
3. რატომ არის საიდუმლოებების მყარი კოდირება რისკის შემცველი, თუნდაც კერძო საცავებში
API გასაღებების, ავტორიზაციის მონაცემებისა და ტოკენების მსგავსი საიდუმლოებების მყარი კოდირება შესაძლოა მოსახერხებელი ჩანდეს შემუშავების პროცესში. თუმცა, ეს პრაქტიკა სერიოზულ რისკებს შეიცავს, განსაკუთრებით მაშინ, როდესაც საიდუმლოებები... commitვერსიის კონტროლზეა დამოკიდებული.
მაგალითად, 2022 წელს Uber-ის სისტემაში შეღწევის დროს, თავდამსხმელებმა წვდომა მოიპოვეს შემდეგი გზით: მყარი კოდირებული AWS გასაღებები საჯარო GitHub საცავში აღმოჩნდა. ანალოგიურად, Toyota-მ GitHub პროექტში კრიტიკული ავტორიზაციის მონაცემები გაამჟღავნა, რამაც მათი მომხმარებლის მონაცემებზე გავლენა მოახდინა.
რადგან დაშიფრული საიდუმლოებები ხშირად ინახება .env ფაილები, სკრიპტები ან საწყისი კოდის კომენტარები, მათი უგულებელყოფა ადვილია. მათზე წვდომა ბოტებსა და ინსაიდერებსაც კი შეუძლიათ კერძო საცავებში. უარესი ის არის, რომ Git-ის ისტორია ინახავს ყველა გაჟონვას, მას შემდეგაც კი, რაც მას „წაშლით“.
გარდა ამისა, თანამედროვე თავდამსხმელები განუწყვეტლივ სკანირებენ GitHub-ისა და კონტეინერების რეესტრებს გაჟონილი ტოკენების აღმოსაჩენად. მყარი კოდირებული საიდუმლოს ერთი შეხებით შესაძლებელია შემდეგი გზების გამოყენება:
- ინფრასტრუქტურის კომპრომეტირება (ღრუბელზე წვდომა)
- საწყისი კოდის გაყალბება (მიწოდების ჯაჭვის შეტევები)
- საიდუმლო ხელახალი გამოყენება სხვადასხვა სისტემებში (პრივილეგიების ესკალაცია)
ამიტომ, მყარი კოდირების ჩანაცვლება სათანადოთი საიდუმლოებების მართვა ეს არჩევითი არ არის, ის განვითარების უზრუნველყოფის საფუძველია.
4. როგორ იცავს HashiCorp Vault საიდუმლოებებს (და რატომ არის ის უკეთესი, ვიდრე მყარი კოდირება)
ისეთი საიდუმლოებების მყარი კოდირება, როგორიცაა API გასაღებები ან მონაცემთა ბაზის ავტორიზაციის მონაცემები, პირდაპირ საწყის კოდში სერიოზულ უსაფრთხოების რისკებს ქმნის. HashiCorp Vault გამორიცხავს ამ რისკს ცენტრალიზებული, დაშიფრული და წვდომით კონტროლირებადი საიდუმლო საცავის შეთავაზებით.
გარემოს ცვლადებში ან .env ფაილები, აპლიკაციებს შეუძლიათ უსაფრთხოდ მიიღონ ისინი მოთხოვნისამებრ Vault-ის API-ის მეშვეობით. ეს მიდგომა სტატიკურ საიდუმლო დამუშავებას დინამიური, პოლიტიკაზე დაფუძნებული წვდომით ცვლის.
HashiCorp Vault-ის მეშვეობით საიდუმლოებების მართვას მყარი კოდირების გამოყენებასთან შედარებით რამდენიმე მნიშვნელოვანი უპირატესობა აქვს:
- საიდუმლოებები დაშიფრული რჩება როგორც დასვენების, ასევე გადაადგილების დროს.
- წვდომა მკაცრად არის დაცული იდენტობაზე დაფუძნებული პოლიტიკის გამოყენებით.
- Vault დინამიურად წარმოქმნის საიდუმლოებებს, რაც მათ ავტომატურად ვადას გასცდება.
- ყველა მოთხოვნა აღირიცხება, რომელიც სრულ მიკვლევადობას და აუდიტის შესაძლებლობას სთავაზობს.
Vault ასევე შეუფერხებლად ინტეგრირდება CI/CD pipelines, კონტეინერიზებული გარემო, ღრუბლოვანი ინფრასტრუქტურა და სერვისული ბადე, რაც მას მასშტაბირებად და წარმოებისთვის მზა გადაწყვეტად აქცევს თანამედროვე DevSecOps გუნდებისთვის.
რეალური სამყაროს მაგალითი:
In 2022, რათა Toyota GitHub-ის საცავი შემთხვევით საჯაროდ გაჟონა ავტორიზაციის მონაცემები, რამაც შიდა სერვისები გამოავლინა. Vault-ის მსგავსი ინსტრუმენტი, მკაცრი ფუნქციით შერწყმული commit პოლიტიკას შეეძლო ამის თავიდან აცილება.
ამ დროისთვის ყველაფერი ნათელი უნდა იყოს: მყარი კოდირებისგან თავის დაღწევა და უსაფრთხო პროგრამირების გამოყენება. საიდუმლოებების მართვა მსგავსი საშუალებები HashiCorp სარდაფით ეს არ არის მხოლოდ საუკეთესო პრაქტიკა, ეს აუცილებელია.
5. როგორ გავაერთიანოთ Git, HashiCorp Vault და Xygeni საიდუმლოებების უსაფრთხო მართვისთვის
სრულად თავიდან ასაცილებლად მყარი კოდირება საიდუმლოებები, დეველოპერებმა უნდა გადადგან პროაქტიული ნაბიჯები ადგილობრივი განვითარების დროს და CI/CD. კარგი ამბავი ის არის HashiCorp სარდაფით მდე ქსიგენი ერთად ვიმუშაოთ უსაფრთხოების უზრუნველსაყოფად საიდუმლოებების მართვა workflows.
ნაბიჯი 1: გამოიყენეთ Vault საიდუმლოებების უსაფრთხოდ მოსაძიებლად
პირველ რიგში, დააკონფიგურირეთ თქვენი აპლიკაცია საიდუმლოებების ჩასატვირთად HashiCorp სარდაფით გაშვების დროს. მაგალითად, Node.js-ში:
const vault = require("node-vault")({
endpoint: process.env.VAULT_URL,
token: process.env.VAULT_TOKEN,
});
const secret = await vault.read("secret/production/db-password");
console.log("DB password:", secret.data.data.value);
ეს უზრუნველყოფს, რომ საიდუმლოებები არასდროს შეინახება კოდში ან კონფიგურაციის ფაილებში.
ნაბიჯი 2: მყარი კოდირების თავიდან აცილება Git Hook-ისა და Xygeni-ს გამოყენებით
შემთხვევითი გაჟონვის თავიდან ასაცილებლად, შეგიძლიათ დაამატოთ pre-commit Hook Xygeni-ს CLI-ის გამოყენებით:
#!/bin/sh
# .git/hooks/pre-commit
xygeni secrets --staged-files --no-upload
if [ $? -ne 0 ]; then
echo "❌ Commit blocked due to hardcoded secret. Fix and try again."
exit 1
fi
ეს ჰუკი სკანირებს მხოლოდ მოდიფიცირებულ ფაილებს, რომლებიც ეტაპობრივად არის დალაგებული. commitთუ ის აღმოაჩენს მყარი კოდით საიდუმლოებები, როგორიცაა ტოკენები ან პაროლები, ის ბლოკავს commit, სანამ რამე საცავში მოხვდება.
ნაბიჯი 3: Vault-ისა და Xygeni-ს ინტეგრირება CI/CD
CI-ში pipelineს, თქვენ შეგიძლიათ:
- გაშვების საიდუმლოებების მოძიება Vault
- გასაშვებად
xygeni scan --run="secrets"დასადასტურებლად, საიდუმლოებები არ იყო წარმოდგენილი - ავტომატური გამოსწორება Xygeni-ით, თუ რამე გაჟონავს
დეველოპერები საიდუმლოებებს ყოველ ნაბიჯზე იცავენ, ადგილობრივიდან დაწყებული commitგანლაგებისთვის, მადლობა მენეჯმენტს ამ მჭიდრო უკუკავშირის მარყუჟისთვის.
6. მყარი კოდირებიდან Vault + Xygeni-ის გამოყენებით საიდუმლოებების უსაფრთხო მართვამდე
მყარი კოდირების საიდუმლოებები კვლავ ერთ-ერთი ყველაზე გავრცელებული გზაა, რომლითაც დეველოპერები შემთხვევით ამჟღავნებენ მგრძნობიარე მონაცემებს. სწორედ ამიტომ, დაწყვილება HashiCorp სარდაფით Xygeni-დან რეალურ დროში სკანირებით ქმნის სრულ საიდუმლოებების მართვა არქიტექტურა: აღმოჩენა, პრევენცია და ავტომატური აღდგენა, პირდაპირ თქვენს სამუშაო პროცესშია ჩაშენებული.
| ნაბიჯი | როგორ მუშაობს საიდუმლოებების მართვა HashiCorp Vault-თან და Xygeni-სთან ერთად |
|---|---|
| ნაბიჯი 1: განსაზღვრეთ საიდუმლოებები Vault-ში | შეინახეთ საიდუმლოებები, როგორიცაა API გასაღებები, ავტორიზაციის მონაცემები ან ტოკენები, უსაფრთხოდ HashiCorp Vault-ში მკაცრი წვდომის კონტროლისა და დაშიფვრის ქვეშ, უმოქმედო მდგომარეობაში. |
| ნაბიჯი 2: საიდუმლოებების ინექცია CI/CD | გამოიყენეთ გარემოს ცვლადები ან დინამიური ინექცია თქვენი კონსტრუქციისთვის საიდუმლოებების მისაწოდებლად. pipelines ან აპლიკაციები, რაც თავიდან აიცილებს საწყის კოდში მყარი კოდირებას. |
| ნაბიჯი 3: შეამოწმეთ მყარი კოდირებული საიდუმლოებები | Xygeni სკანირებს ყველაფერს pull request, Docker-ის სურათი და git ისტორია გაჟონილი საიდუმლოებების რეალურ დროში აღმოსაჩენად და დასადასტურებლად. |
| ნაბიჯი 4: საიდუმლოებების დადასტურება | Xygeni ამოწმებს, არის თუ არა საიდუმლო აქტიური და გამოსაყენებელი. დადასტურებული საიდუმლოებები მონიშნულია დაუყოვნებლივი მოქმედებისთვის მისი ვერიფიკატორის ძრავის გამოყენებით. |
| ნაბიჯი 5: ავტომატური აღდგენის გააქტიურება | თუ დადასტურებული საიდუმლო აღმოჩნდება, Xygeni-ს შეუძლია მისი გაუქმება ან შეცვლა, კონტექსტით PR/MR-ში გამოქვეყნება და გამოსწორების სამუშაო პროცესების წარმართვა. |
7. სამუდამოდ შეწყვიტეთ საიდუმლოებების მყარი კოდირება ავტომატური აღდგენისა და საიდუმლოებების მართვის საშუალებით
HashiCorp Vault-ის არსებობის შემთხვევაშიც კი, შეცდომები მაინც ხდება. დეველოპერებმა შეიძლება ლოკალური ტესტირების დროს ტოკენი დააკოდირონ ან კონფიგურაცია დაავიწყდეთ. .gitignore სწორად. სწორედ ამიტომ არის აუცილებელი საიდუმლოებების მართვის უწყვეტ სკანირებასთან და ავტომატურ გამოსწორებასთან შერწყმა.
ერთად Xygeni-ს საიდუმლოებების მართვა, თქვენ არა მხოლოდ აღმოაჩენთ დაშიფრულ ავტორიზაციის მონაცემებს, არამედ ავტომატურად ასწორებთ მათ, სანამ ისინი ინციდენტებად იქცევიან.
აი, როგორ მუშაობს Xygeni AutoFix საიდუმლოებებისთვის:
- Xygeni სკანირებს ყველაფერს pull request გახსნისთანავე, ვეძებ კოდში, კონფიგურაციებში, Git ისტორიასა და Docker-ის ფენებში ჩაწერილ საიდუმლოებებს.
- ის ადასტურებს ნებისმიერ აღმოჩენილ საიდუმლოს მისი სამიზნე სერვისის წინააღმდეგ და აბნევს ლოგებში არსებულ მნიშვნელობას.
- Xygeni საიდუმლოს პირდაპირ PR-ში ამხელს, კონტექსტური კომენტარების დამატებით, სიმძიმისა და ტიპის მითითებით.
- AutoFix ქმნის უსაფრთხო პატჩს, რომელიც შეიძლება:
- კომენტარი გააკეთეთ გამჟღავნებულ საიდუმლოზე
- შეცვალეთ იგი Vault-ით ან გარემოს ცვლადის მითითებით
- გთავაზობთ ეტაპობრივად გამოსწორების ინსტრუქციებს
- თუ დამცავი ღობე აქტიურია, Xygeni ავტომატურად ბლოკავს PR-ს პრობლემის მოგვარებამდე.
გარდა ამისა, ქსიგენი მხარს უჭერს აღსრულებას GitHub Actions-ის, GitLab-ის, Jenkins-ისა და Bitbucket-ის მეშვეობით. ამიტომ, საიდუმლოებები არასდროს აღწევს წარმოებაში, მაშინაც კი, თუ ისინი განხილვის დროს გამოგრჩათ.
ეს მხოლოდ საიდუმლოებების აღმოჩენა არ არის. ეს საიდუმლოებების დაცვაა, რომელიც მასშტაბდება.







