გარემოს ცვლადების შეყვანა შექმნის პროცესში არის standard პრაქტიკა თანამედროვე სტილში CI/CD pipelineგუნდები გარემოს ცვლადებს შეჰყავთ შექმნის პროცესში, რათა საიდუმლოებები, ტოკენები და გაშვების კონფიგურაცია გადასცენ აწყობას მყარი კოდირების გარეშე. ერთი შეხედვით, ეს მარტივ და უსაფრთხო ნიმუშს ჰგავს.
თუმცა, პრაქტიკაში, ეს ხშირად პროგრამული უზრუნველყოფის მიწოდების ჯაჭვში ერთ-ერთ ყველაზე ნაკლებად შეფასებულ რისკად იქცევა.
რადგან როგორც კი გუნდები გარემოს ცვლადებს შეიყვანენ შექმნის პროცესში, ეს მნიშვნელობები აღარ იქნება იზოლირებული. ისინი ხელმისაწვდომი ხდება ყველაფრისთვის, რაც ამ პროცესში მუშაობს. pipelineმათი წაკითხვა შესაძლებელია სკრიპტების, CLI ინსტრუმენტების, მესამე მხარის მოქმედებების და დამოკიდებულებების გამოყენებითაც კი.
სწორედ აქ იწყება ნივთების ჩაშლა.
ამ სახელმძღვანელოში ჩვენ განვიხილავთ, თუ როგორ შეჰყავთ გუნდები გარემოს ცვლადებს რეალურ ცხოვრებაში შექმნის პროცესში. pipelines, სად ხდება რეალურად გაჟონვა და როგორ უზრუნველვყოთ მშენებლობის პროცესი განვითარების შენელების გარეშე.
რას ნიშნავს გარემოს ცვლადების შეყვანა შექმნის პროცესში
არსებითად, გარემოს ცვლადების ინექცია ნიშნავს მნიშვნელობების გადაცემას pipeline გაშვების დროს, რათა დავალებებმა მათზე წვდომა შესრულების დროს შეძლონ.
ეს მნიშვნელობები, როგორც წესი, მოიცავს API გასაღებებს, მონაცემთა ბაზის ავტორიზაციის მონაცემებს, ტოკენებს ან გარემოსთვის დამახასიათებელ კონფიგურაციას. მათი პირდაპირ კოდში შენახვის ნაცვლად, CI/CD სისტემა მათ დინამიურად იტვირთავს შექმნის დაწყებისას.
ეს რეალურ პრობლემას აგვარებს. ის კოდს სისუფთავეს ინარჩუნებს, დუბლირებას თავიდან აგაცილებთ და იმავეს საშუალებას იძლევა pipeline სცენირების, ტესტირებისა და წარმოების გარემოში გასაშვებად.
თუმცა, ეს მოდელი ეყრდნობა ვარაუდს, რომელიც აღარ არის მართებული: რომ შექმნის გარემო კონტროლირებადი და პროგნოზირებადია.
თანამედროვე pipelines არც ერთი და არც მეორე არ არის. ისინი მოიცავს მრავალ ნაბიჯს, გარე ინტეგრაციებს და დამოკიდებულებებს, რომლებიც კოდს დინამიურად ასრულებენ. შედეგად, ცვლადის ინექციის შემდეგ, ის აღარ არის მხოლოდ კონფიგურაცია. ის შესრულების კონტექსტის ნაწილი ხდება.
გარემოს ცვლადების გაჟონვის ადგილი შექმნის პროცესში
ინფორმაციის გაჟონვის უმეტესობა არ ხდება იმიტომ, რომ ვინმე აშკარად ამხელს საიდუმლოს. ეს ხდება იმიტომ, რომ pipelineისე იქცევიან, როგორც დეველოპერები სრულად არ ითვალისწინებენ.
მაგალითად, დეველოპერმა შეიძლება ჩართოს დეტალური ჟურნალირება წარუმატებელი აწყობის გამართვისთვის. CLI ინსტრუმენტმა შეიძლება დაბეჭდოს გარემოს ცვლადები, როგორც მისი გამომავალი ნაწილი. დამოკიდებულებას შეუძლია ჩუმად ჰქონდეს წვდომა პროცესის ცვლადებზე მისი შესრულების ნაწილად.
არცერთი ეს ქმედება თავისთავად საეჭვოდ არ გამოიყურება. თუმცა, ერთად ისინი გაჟონვის რამდენიმე გზას ქმნიან.
საიდუმლოებები შეიძლება შემდეგნაირად გადაიზარდოს:
- შექმენით ჟურნალები, რომლებიც ინახება და ინდექსირდება
- გამართვის შედეგი გაზიარებულია გუნდებს შორის
- მესამე მხარის CI მოქმედებები, რომლებიც გარე კოდს ამუშავებენ
- დამოკიდებულებები, რომლებიც სრულდება ინსტალაციის ან გაშვების დროს
- მშენებლობის დროს წარმოქმნილი დროებითი არტეფაქტები
როგორც კი საიდუმლო ჟურნალებში გამოჩნდება, ის იშვიათად რჩება შენახული. ჟურნალები კოპირდება, ინახება და ინახება მრავალ სისტემაში. ამ ეტაპზე, გამჟღავნება გაცილებით სცილდება ორიგინალს. pipeline.
სწორედ ამიტომ, გარემოს ცვლადების გაჟონვა ხშირად გვიან აღმოჩენილია და მას შემდეგ, რაც ზიანი უკვე მიყენებულია.
რატომ ათავსებენ გუნდები გარემოს ცვლადებს შექმნის პროცესში
ამ რისკების მიუხედავად, გუნდები დიდად არიან დამოკიდებულნი გარემოს ცვლადების ინექციაზე. და საფუძვლიანი მიზეზით.
ეს საშუალებას იძლევა pipelineმოქნილობის შესანარჩუნებლად. ერთი სამუშაო პროცესი შეიძლება ადაპტირდეს სხვადასხვა გარემოსთან, ავტორიზაცია განხორციელდეს რამდენიმე სერვისთან და დინამიურად შეიცვალოს ქცევა კოდის შეცვლის გარეშე.
სწრაფად ცვალებად DevOps გარემოში ეს მოქნილობა აუცილებელია. თუმცა, მოქნილობას ყოველთვის თან ახლავს კომპრომისები. რაც უფრო დინამიურია pipeline რაც უფრო ხდება, მით უფრო რთულია მის შიგნით მიმდინარე მოვლენების კონტროლი. ყოველი დამატებითი ნაბიჯი, ინტეგრაცია ან დამოკიდებულება ზრდის იმ ადგილების რაოდენობას, სადაც მგრძნობიარე მონაცემებზე წვდომაა შესაძლებელი.
შედეგად, გარემოს ცვლადის ინექცია კონფიგურაციის დეტალიდან უსაფრთხოების პრობლემად გადაიქცევა.
გარემოს ცვლადების შექმნის პროცესში ინექციის საერთო რისკები
რისკები თეორიული არ არის. ისინი რეალურ ცხოვრებაში ვლინდება. pipelineს ყოველდღე.
საიდუმლოებების გაჟონვა ჟურნალებში
ლოგები ერთ-ერთია ექსპოზიციის ყველაზე გავრცელებული წყაროებიგამართვის ფლაგები, CLI ინსტრუმენტები და სტეკის ტრასები ხშირად ავლენენ მგრძნობიარე მნიშვნელობებს დეველოპერების მიერ შეუმჩნევლად.
გამოვლენის შემდეგ, ეს მნიშვნელობები სწრაფად ვრცელდება სისტემებში.
ზედმეტად დაშვებული წვდომა
ბევრი pipelineყველა სამუშაოზე ყველა ცვლადია დამოკიდებული. ეს ზედმეტ რისკს ქმნის.
თუ ერთი ნაბიჯი კომპრომეტირებული გახდება, მას შეუძლია წვდომა ჰქონდეს იმ რწმუნებათა სიგელებზე, რომლებიც სინამდვილეში არ სჭირდება.
დამოკიდებულება და მოქმედების ბოროტად გამოყენება
თანამედროვე pipelines მნიშვნელოვნად არის დამოკიდებული მესამე მხარის ინსტრუმენტებსა და ინტეგრაციებზე. ეს კომპონენტები მუშაობს იმავე გარემოში, რომელშიც თქვენი საიდუმლოებები.
თუ რომელიმე მათგანი ბოროტად იქცევა, მას შეუძლია ჩუმად წვდომა ჰქონდეს ინექციურ ცვლადებზე.
მიხედვით OWASPმიწოდების ჯაჭვის შეტევები ხშირად იყენებს სანდო კომპონენტებს შექმნის პროცესში. გარემოს ცვლადები ხშირად ყველაზე მარტივი სამიზნე ხდება.
კოდში სარეზერვო საიდუმლოებები
როდესაც აწყობა ვერ ხერხდება ცვლადების ნაკლებობის გამო, გუნდები ზოგჯერ უმატებენ სარეზერვო მნიშვნელობებს შესანარჩუნებლად. pipelineგარბის.
დროთა განმავლობაში, ეს მნიშვნელობები ყალიბდება commitგამოყენებული ან განლაგებული, რაც გრძელვადიან ზემოქმედებას ქმნის.
გარემოს ცვლადების შექმნის პროცესში უსაფრთხოდ შეყვანის საუკეთესო პრაქტიკა
| კატეგორია | საუკეთესო პრაქტიკა | რატომ აქვს მნიშვნელობა |
|---|---|---|
| საიდუმლოებების შენახვა | გამოიყენეთ სარდაფი ან CI საიდუმლოებების მენეჯერი | ხელს უშლის კოდში ექსპოზიციას |
| წვდომის კონტროლის | შეზღუდეთ წვდომა თითოეულ სამუშაოზე | ამცირებს შეტევის ზედაპირს |
| ხე | ნიღბის მგრძნობიარე მნიშვნელობები | ხელს უშლის გაჟონვას |
| მოქმედების სფერო და სიცოცხლის ხანგრძლივობა | გამოიყენეთ ხანმოკლე სერთიფიკატები | ზღუდავს აფეთქების რადიუსს |
| Validation | ცვლადების არარსებობის შემთხვევაში, აწყობა წარუმატებელია | თავიდან აიცილებს სახიფათო სარეზერვო გზებს |
რატომ ბევრი CI/CD უსაფრთხოების ინსტრუმენტები, მის გარემოს პარამეტრების გაჟონვა
უსაფრთხოების ხელსაწყოების უმეტესობა ფოკუსირებულია კოდის ან დამოკიდებულებების სკანირებაზე შექმნის დასრულების შემდეგ.
თუმცა, შესრულების დროს ხდება გარემოს ცვლადის გაჟონვა.
A pipeline შეუძლია საიდუმლოებების სწორად შეყვანა და მაინც მათი გამოაშკარავება ჟურნალების ან გაშვების დროს ქცევის მეშვეობით. როდესაც სკანერი პრობლემას აღმოაჩენს, შესაძლოა, საიდუმლო უკვე კომპრომეტირებული იყოს.
ეს ქმნის უფსკრულს გამოვლენასა და პრევენციას შორის.
გუნდებს სჭირდებათ კონტროლი, რომელიც მოქმედებს მაშინ, როდესაც pipeline გადის და არა დასრულების შემდეგ.
როგორ გირჩევთ გარემოს ცვლადის ინექციის დაცვას
პრაქტიკაში, ეფექტური დაცვა რამდენიმე თანმიმდევრულ პრინციპს ეფუძნება.
საიდუმლოებების შენახვა გარეთ pipeline. მათი ინექცია მხოლოდ გაშვების დროს მოახდინეთ. შეზღუდეთ წვდომა მინიმალურ საჭირო არეალამდე. გამოიყენეთ ხანმოკლე ავტორიზაციის მონაცემები, როდესაც ეს შესაძლებელია.
ამავდროულად, აკონტროლეთ, თუ როგორ pipelineმგრძნობიარე მნიშვნელობებზე წვდომა. მოულოდნელი წვდომის ნიმუშები ხშირად რისკზე მიუთითებს გაჟონვის ხილვადობის დაწყებამდე.
ეს მიდგომა უსაფრთხოებას რეაქტიული აღმოჩენიდან პროაქტიულ კონტროლზე გადააქვს.
როგორ ეხმარება Xygeni დაცვას CI/CD საიდუმლო ინექცია
მხოლოდ შექმნის შემდგომ სკანირებაზე დაყრდნობის ნაცვლად, Xygeni აანალიზებს, თუ როგორ pipelineგაშვებისას ისინი გარემოს ცვლადებს იყენებენ. ეს მოიცავს იმას, თუ როგორ გადაადგილდება საიდუმლოებები დავალებებს შორის, როგორ ხდება მათზე წვდომა აწყობის ეტაპებზე და როგორ ურთიერთქმედებენ დამოკიდებულებები შესრულების გარემოსთან.
მაგალითად, Xygeni-ს შეუძლია აღმოაჩინოს, როდის pipeline ცვლადებს ძალიან ფართოდ ავლენს, როდესაც ნაბიჯი რისკავს მგრძნობიარე მნიშვნელობების ჟურნალებში დაბეჭდვას, ან როდესაც დამოკიდებულება მოულოდნელად ცდილობს რწმუნებათა სიგელების წვდომას.
ამავე დროს, guardrails პოლიტიკის პირდაპირ აღსრულება pipelineგუნდებს შეუძლიათ დაბლოკონ სახიფათო აწყობები, შეზღუდონ კონკრეტულ დავალებებზე საიდუმლო წვდომა და თავიდან აიცილონ სარისკო კონფიგურაციები წარმოებაში მოხვედრამდე.
რადგან ეს ხდება შიგნით CI/CD სამუშაო პროცესის დროს, დეველოპერებს არ სჭირდებათ მუშაობის წესის შეცვლა. უსაფრთხოება ხდება მისი ნაწილი. pipeline, არა ცალკეული ნაბიჯი.
შედეგად, გუნდები იძენენ ხილვადობას იმის შესახებ, თუ როგორ გამოიყენება საიდუმლოებები, აკონტროლებენ მათ გამჟღავნებას და ამცირებენ გაჟონვის რისკს მიწოდების შენელების გარეშე.
საბოლოო ფიქრები
თუმცა, ეს ასევე ქმნის რისკის ფენას, რომელიც ხშირად შეუმჩნეველი რჩება.
გამოწვევა არ არის გარემოს ცვლადების გამოყენება თუ არა, არამედ მათი ექსპოზიციის კონტროლი შესრულების დროს.
თანამედროვე DevOps გარემოში, შექმნის პროცესში გაჟონვის თავიდან აცილება გაცილებით მნიშვნელოვანია, ვიდრე მათი შემდგომი აღმოჩენა.




