კონტენტის ნდობა და იმიჯის ხელმოწერა
ისწავლეთ როგორ დანერგოთ Docker-ის კონტენტის ნდობა და იმიჯის ხელმოწერა უსაფრთხო პროგრამული უზრუნველყოფის მიწოდების ჯაჭვებისთვის
Docker-ის კონტენტის ნდობა და იმიჯის ხელმოწერა
Docker-ის კონტენტის ნდობა (DCT) უზრუნველყოფს კონტეინერის იმიჯების მთლიანობისა და გამომცემლის ვერიფიკაციის საშუალებას, რაც უზრუნველყოფს უსაფრთხო პროგრამული უზრუნველყოფის მიწოდების ჯაჭვებს და გარანტიას იძლევა, რომ თქვენს გარემოში მხოლოდ სანდო კონტენტი იმუშავებს. ის ახორციელებს ხელმოწერის სისტემას, რომელიც მომხმარებლებს საშუალებას აძლევს კრიპტოგრაფიულად შეამოწმონ იმიჯების ავთენტურობა მათ გადმოწერამდე ან გაშვებამდე, რაც კრიტიკულად მნიშვნელოვანია უსაფრთხოებაზე-მგრძნობიარე აპლიკაციებისა და გარემოებისთვის.
DCT ქმნის ნდობის ჯაჭვს იმიჯის გამომცემლებიდან მომხმარებლამდე, რაც უზრუნველყოფს, რომ იმიჯები არ შეცვლილა გავრცელების პროცესის არცერთ ეტაპზე. ეს მექანიზმი აგვარებს კრიტიკულ უსაფრთხოების გამოწვევებს კონტეინერების გაშვებისას, ხელს უშლის არაავტორიზებული ან შეცვლილი კონტეინერის იმიჯების გაშვებას თქვენს ინფრასტრუქტურაში.
ძირითადი კონცეფციები
Docker-ის კონტენტის ნდობა
- ამოწმებს იმიჯის მთლიანობას ყველა ფენის კრიპტოგრაფიული ჰეშირების საშუალებით
- ამოწმებს იმიჯის გამომცემლის იდენტობას ციფრული ხელმოწერების გამოყენებით
- ხელს უშლის შეცვლილი იმიჯების გაშვებას ხელმოუწერელი ან არასწორად ხელმოწერილი კონტენტის უარყოფით
- ინტეგრირდება Docker CLI-სთან შიდა ბრძანებებისა და გარემოს ცვლადების საშუალებით
- უზრუნველყოფს ნდობის ჯაჭვს გამომცემლიდან გაშვების გარემომდე
- უზრუნველყოფს იმიჯის გამოქვეყნების ქმედებების უარყოფის შეუძლებლობას
- იცავს მთელ პროგრამული უზრუნველყოფის მიწოდების ჯაჭვს აგებიდან გაშვებამდე
ხელმოწერის სისტემა
- იყენებს Notary პროექტს, ხელმოწერის სისტემის ღია კოდის იმპლემენტაციას
- ახორციელებს The Update Framework-ს (TUF), უსაფრთხოების სპეციფიკაციას უსაფრთხო კონტენტის გავრცელებისთვის
- მართავს root გასაღებებს (უმაღლესი ავტორიტეტი, ინახება ოფლაინ) და დელეგირების გასაღებებს (ყოველდღიური ხელმოწერისთვის)
- ამყარებს ოფლაინ ნდობის საწყისს კრიტიკული გასაღებების გამოვლენის მინიმიზაციისთვის
- ინახავს ონლაინ რეპოზიტორიის მეტამონაცემებს ხელმოწერის ვერიფიკაციისთვის
- ქმნის იერარქიულ ნდობის ურთიერთობებს მოქნილი ხელმოწერის სამუშაო პროცესებისთვის
- მოიცავს დროის ნიშნულის სერვისებს განმეორებითი შეტევების თავიდან ასაცილებლად
კონტენტის ნდობის ჩართვა
Docker-ის კონტენტის ნდობა შეიძლება ჩაირთოს გლობალურად გარემოს ცვლადით ან თითოეული ბრძანებისთვის ფლაგით. ჩართვისას, Docker-ი ავტომატურად ამოწმებს ხელმოწერებს იმიჯების გადმოწერისას და აწერს ხელს იმიჯებს ატვირთვისას:
DCT-ის ჩართვა მოითხოვს ხელმოწერის ვერიფიკაციას ყველა იმიჯის ოპერაციისთვის. DCT-ის ჩართვისას, Docker-ი უარს იტყვის იმ იმიჯების გადმოწერაზე ან გაშვებაზე, რომლებიც სათანადოდ არ არის ხელმოწერილი მათი გამომცემლების მიერ ან შეცვლილია ხელმოწერის შემდეგ.
გასაღებების მართვა
Docker-ი ქმნის ორი ტიპის გასაღებს, როდესაც პირველად ჩართავთ DCT-ს:
- Root გასაღები: თქვენი ყველაზე ღირებული გასაღები, რომელიც უნდა ინახებოდეს ოფლაინ და უსაფრთხოდ
- რეპოზიტორიის გასაღები: გენერირდება თითოეული რეპოზიტორიისთვის, რომელშიც ტვირთავთ, გამოიყენება ყოველდღიური ხელმოწერისთვის
იმიჯების ხელმოწერა
იმიჯის ძირითადი ხელმოწერა
ხელმოწერის ინფორმაციის ნახვა
როდესაც Docker-ის ნდობა ჩართულია, ყოველი იმიჯის გადმოწერის ოპერაცია შეამოწმებს ხელმოწერებს Notary სერვერთან, სანამ იმიჯის გამოყენების უფლებას მისცემს, რაც უზრუნველყოფს მუდმივ დაცვას იმიჯის შეცვლისგან.
იმიჯის ხელმოწერის ავტომატიზაცია
CI/CD პაიპლაინებისთვის, თქვენ უნდა უსაფრთხოდ მართოთ ხელმოწერის გასაღებები სპეციალიზებული უსაფრთხოების ზომებით:
- შეინახეთ გასაღებები უსაფრთხო საცავებში
- გამოიყენეთ სერვისები, როგორიცაა HashiCorp Vault, AWS KMS, ან Azure Key Vault
- არასოდეს შეინახოთ პირადი გასაღებები საწყის კოდში ან დაუცველ CI ცვლადებში
- დანერგეთ წვდომის კონტროლი მინიმალური პრივილეგიის პრინციპებით
- განიხილეთ აპარატურული უსაფრთხოების მოდულები (HSM) კრიტიკული გასაღებებისთვის
- გამოიყენეთ დელეგირების როლები ავტომატიზებული ხელმოწერისთვის
- შექმენით CI-სპეციფიკური ხელმოწერის იდენტობები შეზღუდული მასშტაბით
- დანერგეთ როლებზე დაფუძნებული წვდომის კონტროლი ხელმოწერის ოპერაციებისთვის
- გამოყავით დეველოპმენტის, ტესტირებისა და პროდაქშენის ხელმოწერის უფლებამოსილებები
- გამოიყენეთ სხვადასხვა გასაღებები თქვენი პაიპლაინის სხვადასხვა ეტაპისთვის
- დანერგეთ სათანადო გასაღების როტაციის პოლიტიკა
- დაგეგმეთ რეგულარული გასაღების როტაციები (მაგ., კვარტალურად)
- ავტომატიზირეთ როტაციის პროცესი ადამიანური შეცდომის მინიმიზაციისთვის
- შეინარჩუნეთ წინა გასაღებების უსაფრთხო სარეზერვო ასლი გადასვლის პერიოდში
- დაადოკუმენტირეთ ნათელი პროცედურები საგანგებო გასაღების როტაციებისთვის
- განიხილეთ ზღურბლური ხელმოწერა კრიტიკული იმიჯებისთვის
- მოითხოვეთ მრავალი ხელმომწერი პროდაქშენის იმიჯებისთვის (m-of-n ხელმოწერა)
- დანერგეთ დამტკიცების სამუშაო პროცესები ხელმოწერის გამოყენებამდე
- გამოყავით მოვალეობები ბილდისა და ხელმოწერის ოპერაციებს შორის
- შექმენით უსაფრთხოების კარიბჭეები ბილდსა და გაშვებას შორის
- შეამოწმეთ ხელმოწერის მოვლენები
- დაალოგინეთ ყველა ხელმოწერის ოპერაცია დეტალური მეტამონაცემებით
- აკონტროლეთ უჩვეულო ხელმოწერის შაბლონები ან არაავტორიზებული მცდელობები
- შექმენით შეტყობინებები ხელმოწერის ვერიფიკაციის შეცდომებზე
- შეინარჩუნეთ უცვლელი აუდიტის კვალი შესაბამისობისთვის
- რეგულარულად გადახედეთ ხელმოწერის აქტივობას უსაფრთხოების მმართველობისთვის
Notary-ის არქიტექტურა
Notary-ის კომპონენტები
- Notary სერვერი: ინახავს და ემსახურება ხელმოწერილ მეტამონაცემებს რეპოზიტორიებისთვის
- მოქმედებს როგორც ხელმოწერის ვერიფიკაციის მონაცემების სანდო წყარო
- უზრუნველყოფს ყველა ხელმოწერის მეტამონაცემების უსაფრთხო შენახვას
- ახორციელებს TUF პროტოკოლს უსაფრთხო განახლებისთვის
- აჩენს API-ს კლიენტებისთვის ნდობის მონაცემების მისაღებად და განახლებისთვის
- Notary ხელმომწერი: უსაფრთხოდ ამუშავებს ხელმოწერის ოპერაციებს
- მართავს პირად გასაღებებს ხელმოწერის ოპერაციებისთვის
- უზრუნველყოფს იზოლირებულ გარემოს კრიპტოგრაფიული ოპერაციებისთვის
- გთავაზობთ აპარატურული უსაფრთხოების მოდულის (HSM) ინტეგრაციას
- ინარჩუნებს საზრუნავების გამოყოფას მეტამონაცემების შენახვისგან
- Notary კლიენტი: CLI ხელსაწყო კონტენტის ნდობის სამართავად
- ურთიერთქმედებს როგორც სერვერთან, ისე ხელმომწერთან
- უზრუნველყოფს მომხმარებლის ინტერფეისს ნდობის ოპერაციებისთვის
- მართავს ლოკალურ გასაღების შენახვასა და ხელმოწერის მოთხოვნებს
- ამოწმებს და ანახლებს ნდობის მეტამონაცემებს
- TUF მეტამონაცემები: ხელმოწერილი მეტამონაცემების ფაილების მრავალი ფენა
- ახორციელებს The Update Framework-ის სპეციფიკაციას
- უზრუნველყოფს სიღრმისეულ დაცვას იერარქიული ნდობის საშუალებით
- იცავს სხვადასხვა შეტევებისგან, მათ შორის გაყინვის, დაბრუნებისა და შერევისგან
- უზრუნველყოფს უსაფრთხო მეტამონაცემების განახლებას არასანდო არხებითაც კი
ნდობის მეტამონაცემები
- Root: უმაღლესი დონის გასაღები, ჩვეულებრივ ოფლაინ
- უმაღლესი ავტორიტეტი ნდობის იერარქიაში
- აწერს ხელს და ავტორიზაციას უკეთებს ყველა სხვა უმაღლესი დონის გასაღებს
- ინახება ოფლაინ უსაფრთხოების მაქსიმიზაციისთვის
- ხანგრძლივი ვადის გასვლის დრო (ჩვეულებრივ 1+ წელი)
- გამოიყენება იშვიათად, ძირითადად გასაღების როტაციისთვის
- Targets: აკონტროლებს კონტენტის ჰეშებს
- შეიცავს ფაქტობრივი კონტეინერის იმიჯების ჰეშებს
- ამყარებს კავშირს იმიჯის ტეგებსა და მათ კრიპტოგრაფიულ დაიჯესტებს შორის
- ხელმოწერილია targets გასაღებით ან დელეგირების გასაღებებით
- განსაზღვრავს კონტენტს, რომელიც ოფიციალურად დამტკიცებულია
- შეიძლება გაფართოვდეს მორგებული მეტამონაცემებით
- Snapshot: იწერს მეტამონაცემების მიმდინარე კოლექციას
- ხელს უშლის შერევის შეტევებს
- შეიცავს მითითებებს ყველა მიმდინარე მეტამონაცემების ვერსიაზე
- უზრუნველყოფს თანმიმდევრულობას ყველა ნდობის ინფორმაციაში
- განახლდება, როდესაც რომელიმე მეტამონაცემი იცვლება
- უზრუნველყოფს რეპოზიტორიის მდგომარეობის თანმიმდევრულ ხედს
- Timestamp: მიუთითებს რეპოზიტორიის სიახლეზე
- ხელს უშლის განმეორებით შეტევებს ვადაგასული მეტამონაცემებით
- განახლდება ხშირად (ჩვეულებრივ ყოველდღიურად)
- აქვს ყველა მეტამონაცემიდან უმოკლესი ვადის გასვლის დრო
- ხელმოწერილია ონლაინ გასაღებებით ავტომატიზაციისთვის
- ადასტურებს, რომ რეპოზიტორია აქტიურად შენარჩუნებულია
- Delegations: დამატებითი ხელმოწერის უფლებამოსილებები
- უზრუნველყოფს განაწილებული ნდობის მოდელს
- საშუალებას იძლევა მრავალი ხელმომწერის სხვადასხვა გზისთვის
- აქვს გუნდზე დაფუძნებული ხელმოწერის სამუშაო პროცესების მხარდაჭერა
- შეუძლია შექმნას იერარქიული ხელმოწერის პასუხისმგებლობები
- უზრუნველყოფს დეტალურ წვდომის კონტროლს ხელმოწერისთვის
გაფართოებული ხელმოწერა Notary-ით
Notary CLI უზრუნველყოფს უფრო პირდაპირ და დეტალურ ინტერფეისს ნდობის სისტემასთან, ვიდრე Docker-ის trust ბრძანებები, რაც მას ღირებულს ხდის გაფართოებული ნდობის მართვის სცენარებისა და ავტომატიზაციისთვის.
Cosign-ის ინტეგრაცია
Cosign არის Docker-ის კონტენტის ნდობის თანამედროვე ალტერნატივა, რომელიც გთავაზობთ დამატებით ფუნქციებს Sigstore პროექტის ფარგლებში. ის უზრუნველყოფს უფრო მარტივ ხელსაწყოებს, გასაღების გარეშე ხელმოწერის ოპციებსა და უკეთეს ინტეგრაციას ღრუბლოვან-მშობლიურ ეკოსისტემებთან:
Cosign ინტეგრირდება სხვა Sigstore პროექტებთან, როგორიცაა Fulcio (სერთიფიკატის ავტორიტეტი) და Rekor (გამჭვირვალობის ლოგი), რათა უზრუნველყოს სრული ნდობის ეკოსისტემა გაუმჯობესებული უსაფრთხოებითა და აუდიტირებადობით.
პოლიტიკის აღსრულება
მიღების კონტროლერები
- Kubernetes-ის ვალიდაციის ვებჰუკები, რომლებიც იჭერენ და ამოწმებენ მოთხოვნებს
- მუშაობენ როგორც დამოუკიდებელი სერვისები თქვენს Kubernetes კლასტერში
- იღებენ მიღების მოთხოვნებს ობიექტების შენახვამდე
- შეუძლიათ შემომავალი რესურსების დამტკიცება, უარყოფა ან შეცვლა
- მუშაობენ ასინქრონულად წარმადობის ზემოქმედების მინიმიზაციისთვის
- ხელმოწერის ვერიფიკაციის აღსრულება გაშვების დროს
- შეამოწმეთ იმიჯის ხელმოწერები პოდების გაშვების დაშვებამდე
- შეამოწმეთ ხელმოწერები სანდო საჯარო გასაღებებთან
- მრავალი ვერიფიკაციის პროვაიდერის მხარდაჭერა (DCT, Cosign და ა.შ.)
- დანერგეთ კონფიგურირებადი ვერიფიკაციის პოლიტიკა
- ხელმოუწერელი ან არასანდო იმიჯების გაშვების დაბლოკვა
- უარყავით გაშვებები დაუდასტურებელი იმიჯებით
- მიაწოდეთ დეტალური უარყოფის მიზეზები შეცდომის შეტყობინებებში
- შექმენით გამონაკლისები კონკრეტული სახელების სივრცეებისთვის ან წყაროებისთვის
- საგანგებო გვერდის ავლის მექანიზმების მხარდაჭერა სათანადო ავტორიზაციით
- ორგანიზაციის პოლიტიკის დანერგვა იმიჯის ნდობისთვის
- განსაზღვრეთ დაშვებული ხელმომწერები სხვადასხვა გარემოსთვის
- დააყენეთ მინიმალური ხელმოწერის მოთხოვნები სახელების სივრცის მიხედვით
- შექმენით იარუსიანი ნდობის პოლიტიკა (dev, staging, production)
- აღასრულეთ მიწოდების ჯაჭვის უსაფრთხოების მოთხოვნები
- აუდიტი და შესაბამისობის ანგარიშგება უსაფრთხოების მმართველობისთვის
- დაალოგინეთ ყველა ვერიფიკაციის გადაწყვეტილება დეტალური მეტამონაცემებით
- შექმენით ანგარიშები ხელმოწერის შესაბამისობაზე
- თვალყური ადევნეთ პოლიტიკის გამონაკლისებსა და გვერდის ავლის მოვლენებს
- მიაწოდეთ მტკიცებულებები უსაფრთხოების აუდიტებისა და სერტიფიცირებისთვის
- ინტეგრაცია უსაფრთხოების ინფორმაციისა და მოვლენების მართვის (SIEM) სისტემებთან
მიღების პოლიტიკის მაგალითი
პროგრამული უზრუნველყოფის მიწოდების ჯაჭვის უსაფრთხოება
კერძო რეესტრების დაცვა
კერძო რეესტრები უნდა იყოს კონფიგურირებული კონტენტის ნდობისთვის მრავალი უსაფრთხოების ფენით:
- დააკონფიგურირეთ TLS რეესტრის კავშირებისთვის
- გამოიყენეთ ვალიდური სერთიფიკატები სანდო სერთიფიკატის ავტორიტეტებისგან
- დანერგეთ ძლიერი TLS შიფრები (TLS 1.2+ PFS შიფრებით)
- დააყენეთ შესაბამისი სერთიფიკატის განახლების პროცესები
- განიხილეთ ორმხრივი TLS კლიენტის ავთენტიფიკაციისთვის
- გამოიყენეთ TLS-ის შეწყვეტა სათანადო სერთიფიკატის ვალიდაციით
- ჩართეთ კონტენტის ნდობა რეესტრზე
- დააკონფიგურირეთ Notary სერვერი თქვენს რეესტრთან ერთად
- დააყენეთ სათანადო მონაცემთა ბაზის ბექენდი ნდობის მეტამონაცემებისთვის
- დანერგეთ ცალკე სარეზერვო ასლის პროცედურები ხელმოწერის მონაცემებისთვის
- დააკონფიგურირეთ სათანადო სერთიფიკატის ჯაჭვები Notary სერვისისთვის
- დარწმუნდით თავსებადობაში თქვენს რეესტრის ვერსიასთან
- დანერგეთ მომხმარებლის ავთენტიფიკაცია
- გამოიყენეთ ძლიერი ავთენტიფიკაციის მეთოდები (OIDC, LDAP და ა.შ.)
- დანერგეთ მრავალ-ფაქტორიანი ავთენტიფიკაცია რეესტრზე წვდომისთვის
- შექმენით სერვისის ანგარიშები შეზღუდული მასშტაბით ავტომატიზაციისთვის
- განსაზღვრეთ ნათელი მომხმარებლის უზრუნველყოფისა და გაუქმების პროცედურები
- შეამოწმეთ ავთენტიფიკაციის მოვლენები და წარუმატებელი შესვლის მცდელობები
- გამოიყენეთ ქსელის პოლიტიკა რეესტრზე წვდომის შესაზღუდად
- შეზღუდეთ რეესტრზე წვდომა მხოლოდ ავტორიზებული ქსელებით
- დანერგეთ გამავალი ფილტრაცია პროდაქშენის გარემოში
- შექმენით ცალკე ქსელის სეგმენტები რეესტრის ტრაფიკისთვის
- გამოიყენეთ ფაირვოლის წესები წვდომის პოლიტიკის აღსასრულებლად
- განიხილეთ კერძო კავშირის ოპციები (VPC ენდფოინთები და ა.შ.)
- აკონტროლეთ რეესტრზე წვდომა და ოპერაციები
- ჩართეთ სრული ლოგირება ყველა რეესტრის ოპერაციისთვის
- დანერგეთ რეალურ დროში შეტყობინებები საეჭვო აქტივობებზე
- თვალყური ადევნეთ გადმოწერის, ატვირთვისა და ხელმოწერის ვერიფიკაციის მოვლენებს
- შექმენით დაფები რეესტრის გამოყენების შაბლონებისთვის
- დააყენეთ ანომალიების აღმოჩენა მოულოდნელი წვდომის შაბლონებისთვის
- რეგულარულად გადახედეთ წვდომის ლოგებს უსაფრთხოების მმართველობისთვის
მოწყვლადობის მართვა
სკანირებასთან ინტეგრაცია
- მოაწერეთ ხელი იმიჯებს უსაფრთხოების სკანირების შემდეგ მათი უსაფრთხოების სტატუსის დასადასტურებლად
- გაუშვით სრული მოწყვლადობის სკანირება ხელმოწერამდე
- მოაწერეთ ხელი მხოლოდ იმ იმიჯებს, რომლებიც აკმაყოფილებენ უსაფრთხოების ზღურბლებს
- ჩართეთ სკანირების შედეგები როგორც დადასტურებები ხელმოწერებთან
- შექმენით უსაფრთხო პაიპლაინის ეტაპები სკანირება-შემდეგ-ხელმოწერის სამუშაო პროცესისთვის
- დაადოკუმენტირეთ უსაფრთხოების საბაზისო დონე თითოეული ხელმოწერილი იმიჯისთვის
- გააუქმეთ ხელმოწერები მოწყვლადი იმიჯებისთვის, როდესაც ახალი საფრთხეები გამოჩნდება
- აკონტროლეთ CVE მონაცემთა ბაზები ახალი მოწყვლადობებისთვის
- დანერგეთ ხელმოწერის ავტომატური გაუქმება კრიტიკული საკითხებისთვის
- შეატყობინეთ გუნდებს, როდესაც ხელმოწერები გაუქმდება
- მიაწოდეთ ნათელი გზები გამოსწორებისთვის
- თვალყური ადევნეთ მოწყვლადობიდან-გაუქმებამდე დროის ჩარჩოებს
- დანერგეთ ხელახალი ხელმოწერა პატჩის შემდეგ სანდო სტატუსის შესანარჩუნებლად
- შეამოწმეთ პატჩის ეფექტურობა ხელახლა ხელმოწერამდე
- განაახლეთ დადასტურებები ახალი უსაფრთხოების ინფორმაციით
- შეინარჩუნეთ ხელმოწერის ცვლილებების ვერსიების ისტორია
- დაადოკუმენტირეთ თითოეული ხელახალი ხელმოწერის მოვლენის დასაბუთება
- დანერგეთ სათანადო დამტკიცების სამუშაო პროცესები ხელახალი ხელმოწერისთვის
- ავტომატიზირებული უსაფრთხოების განახლების სამუშაო პროცესი მუდმივი დაცვისთვის
- ავტომატურად აღმოაჩინეთ მოწყვლადი კომპონენტები
- ააგეთ, შეამოწმეთ და მოაწერეთ ხელი დაპატჩულ იმიჯებს
- გაუშვით განახლებები მინიმალური ადამიანური ჩარევით
- შეამოწმეთ განახლების წარმატებული გაშვება
- ავტომატურად დააბრუნეთ, თუ ვერიფიკაცია ვერ მოხერხდა
- პოლიტიკაზე დაფუძნებული ხელმოწერის აღსრულება, რომელიც დაკავშირებულია უსაფრთხოების მოთხოვნებთან
- განსაზღვრეთ უსაფრთხოების დონეები, რომლებიც საჭიროა სხვადასხვა გარემოსთვის
- დანერგეთ უფრო მკაცრი პოლიტიკა პროდაქშენის დატვირთვებისთვის
- შექმენით გამონაკლისების პროცესები საგანგებო სიტუაციებისთვის
- გადახედეთ და განაახლეთ პოლიტიკა საფრთხის ლანდშაფტის მიხედვით
- შეუსაბამეთ პოლიტიკა მარეგულირებელ მოთხოვნებს
უწყვეტი ვალიდაცია
- გაშვებული იმიჯების რეგულარული ვერიფიკაცია საწყისი გაშვების შემდეგ
- გაშვებული კონტეინერების პერიოდული ხელმოწერის ვალიდაცია
- გაშვებული იმიჯების შედარება სანდო ხელმოწერებთან
- კონტეინერის დრიფტის ან შეცვლის აღმოჩენა
- დანერგეთ ვერიფიკაცია როგორც ჯანმრთელობის შემოწმების ნაწილი
- შექმენით შერიგების ციკლები უწყვეტი შესაბამისობისთვის
- კომპრომეტირებული ხელმოწერებისა და ნდობის საკითხების მონიტორინგი
- თვალყური ადევნეთ გაუქმებულ სერთიფიკატებს ან კომპრომეტირებულ გასაღებებს
- შეატყობინეთ მოულოდნელ ხელმოწერის ცვლილებებზე
- დანერგეთ მკვდარი კაცის გადამრთველი დროის ნიშნულის ვალიდაციისთვის
- თვალყური ადევნეთ ხელმოწერის ვადის გასვლას ნდობის ხარვეზების თავიდან ასაცილებლად
- აკონტროლეთ Notary სერვერის ჯანმრთელობა და უსაფრთხოება
- პოლიტიკის დარღვევების ავტომატური გამოსწორება
- განსაზღვრეთ ნათელი სამოქმედო გეგმები სხვადასხვა დარღვევის ტიპებისთვის
- დანერგეთ გრადუირებული რეაგირება სიმძიმის მიხედვით
- შექმენით ავტომატური კარანტინის პროცედურები საეჭვო კონტეინერებისთვის
- შექმენით თვით-აღდგენის შესაძლებლობები ნდობის დარღვევებისთვის
- დაადოკუმენტირეთ გამოსწორების ქმედებები შესაბამისობისთვის
- იმიჯის წარმოშობის აუდიტის კვალი მთელი სასიცოცხლო ციკლის განმავლობაში
- ჩაიწერეთ ყველა ხელმოწერის მოვლენა სრული მეტამონაცემებით
- თვალყური ადევნეთ იმიჯის ისტორიას აგებიდან პენსიაზე გასვლამდე
- დანერგეთ უცვლელი ლოგირება ხელმოწერის ოპერაციებისთვის
- შექმენით ვერიფიცირებადი მტკიცებულებების ჯაჭვები სასამართლო ანალიზისთვის
- შეინარჩუნეთ ისტორიული ჩანაწერები შესაბამისობის მოთხოვნებისთვის
- მიწოდების ჯაჭვის გამჭვირვალობა ყველა დაინტერესებული მხარისთვის
- მიაწოდეთ ხილვადობა ხელმოწერის უფლებამოსილებებსა და პროცესებში
- დაადოკუმენტირეთ ნდობის ურთიერთობები ადამიანისთვის წაკითხვად ფორმატში
- შექმენით დაფები, რომლებიც აჩვენებენ იმიჯის ნდობის სტატუსს
- უზრუნველყავით მიწოდების ჯაჭვის მთლიანობის ვერიფიკაცია
- მესამე მხარის აუდიტების მხარდაჭერა ნდობის ინფრასტრუქტურაში
საუკეთესო პრაქტიკები
გასაღების მართვა
- შეინახეთ root გასაღებები ოფლაინ (აპარატურული ტოკენები)
- გამოიყენეთ აპარატურული უსაფრთხოების მოდულები (HSM) ან სმარტ ბარათები
- შეინახეთ root გასაღებები ჰაერით-იზოლირებულ სისტემებში
- დანერგეთ ფიზიკური უსაფრთხოების კონტროლი ოფლაინ გასაღებებისთვის
- განიხილეთ შეცვლის-აშკარა საცავი კრიტიკული გასაღებებისთვის
- შექმენით ცერემონიები root გასაღების ოპერაციებისთვის
- გამოიყენეთ ცალკე გასაღებები სხვადასხვა გარემოსთვის
- შეინარჩუნეთ მკაცრი გამიჯვნა დეველოპმენტისა და პროდაქშენის გასაღებებს შორის
- შექმენით გარემოს-სპეციფიკური ნდობის იერარქიები
- დანერგეთ სხვადასხვა უსაფრთხოების დონეები სხვადასხვა გასაღების ტიპებისთვის
- გამოიყენეთ ცალკე დელეგაციები სხვადასხვა გუნდებისთვის ან სერვისებისთვის
- არასოდეს გააზიაროთ გასაღებები უსაფრთხოების საზღვრებს შორის
- დანერგეთ უსაფრთხო გასაღების როტაციის პროცედურები
- დაგეგმეთ რეგულარული როტაცია გასაღების მგრძნობელობის მიხედვით
- შექმენით ნათელი პროცედურები დაგეგმილი და საგანგებო როტაციებისთვის
- შეამოწმეთ როტაციის პროცედურები დანერგვამდე
- შეინარჩუნეთ უკუთავსებადობა გადასვლის პერიოდში
- დაადოკუმენტირეთ თითოეული როტაციის მოვლენა აუდიტისთვის
- განსაზღვრეთ ნათელი გასაღების მფლობელის პასუხისმგებლობები
- მიანიჭეთ კონკრეტული როლები გასაღების მართვისთვის
- დანერგეთ მოვალეობების გამიჯვნა კრიტიკული ოპერაციებისთვის
- შექმენით სარეზერვო მფლობელის დავალებები
- გაწვრთნეთ მფლობელები უსაფრთხოების პროცედურებში
- დანერგეთ მრავალ-პიროვნული კონტროლი უმაღლესი ღირებულების გასაღებებისთვის
- დაადოკუმენტირეთ გასაღების აღდგენის პროცესები
- შექმენით დეტალური აღდგენის პროცედურები გასაღების დაკარგვის სცენარებისთვის
- რეგულარულად შეამოწმეთ აღდგენის პროცესები
- შეინახეთ აღდგენის მასალები უსაფრთხოდ შესაბამისი წვდომის კონტროლით
- დანერგეთ საგანგებო წვდომის პროცედურები
- განიხილეთ აღდგენის სამართლებრივი და შესაბამისობის შედეგები
ოპერაციული უსაფრთხოება
- აღასრულეთ კონტენტის ნდობა პროდაქშენის გარემოში
- გახადეთ ხელმოწერის ვერიფიკაცია სავალდებულო პროდაქშენის დატვირთვებისთვის
- დანერგეთ ტექნიკური კონტროლი გვერდის ავლის თავიდან ასაცილებლად
- შექმენით ნათელი გამონაკლისების პროცესები საგანგებო სცენარებისთვის
- რეგულარულად შეამოწმეთ აღსრულების მექანიზმები
- დაადოკუმენტირეთ ნდობის მოთხოვნებთან შესაბამისობა
- გაწვრთნეთ დეველოპერები ხელმოწერის სამუშაო პროცესსა და უსაფრთხოების შედეგებზე
- შექმენით საგანმანათლებლო მასალები კონტენტის ნდობის კონცეფციებზე
- მიაწოდეთ პრაქტიკული ტრენინგი ხელმოწერის პროცედურებზე
- ჩართეთ კონტენტის ნდობა უსაფრთხოების ცნობიერების ამაღლების პროგრამებში
- გაწვრთნეთ ინციდენტებზე რეაგირების ჯგუფები ნდობასთან დაკავშირებულ საკითხებზე
- გახადეთ უსაფრთხოება გაზიარებული პასუხისმგებლობა გუნდებში
- ავტომატიზირეთ ხელმოწერა CI/CD პაიპლაინებში თანმიმდევრულობისთვის
- დააპროექტეთ უსაფრთხო ხელმოწერის ეტაპები ბილდის პაიპლაინებში
- დანერგეთ სათანადო საიდუმლოების მართვა ხელმოწერის გასაღებებისთვის
- შექმენით დამტკიცების კარიბჭეები ხელმოწერის ოპერაციებამდე
- დაალოგინეთ და აკონტროლეთ ყველა ავტომატიზირებული ხელმოწერის აქტივობა
- რეგულარულად შეამოწმეთ ხელმოწერის ავტომატიზაცია
- რეგულარულად შეამოწმეთ ხელმოწერის პოლიტიკა და იმპლემენტაცია
- ჩაატარეთ ნდობის კონფიგურაციის პერიოდული მიმოხილვები
- შეამოწმეთ ხელმოწერის პოლიტიკასთან შესაბამისობა
- შეამოწმეთ ხელმოწერის ვერიფიკაცია შემთხვევით ნიმუშებზე
- განაახლეთ პოლიტიკა ახალი საფრთხეების მიხედვით
- ჩართეთ ნდობის სისტემები უსაფრთხოების შეფასებებში
- აკონტროლეთ არაავტორიზებული იმიჯის გამოყენება ან ნდობის დარღვევები
- დანერგეთ რეალურ დროში შეტყობინებები ნდობის შეცდომებზე
- შექმენით დაფები ნდობის სტატუსისთვის გარემოებში
- გამოიყენეთ ანომალიების აღმოჩენა უჩვეულო ხელმოწერის შაბლონებისთვის
- თვალყური ადევნეთ ხელმოუწერელი იმიჯების გამოყენების მცდელობებს
- ჩართეთ ნდობის დარღვევები უსაფრთხოების ინციდენტების პროცედურებში
პრობლემების მოგვარება
ხშირი პრობლემები და გადაწყვეტილებები:
- დაკარგული ხელმოწერები: შეამოწმეთ, იყო თუ არა DCT ჩართული ატვირთვისას
- შეამოწმეთ, იყო თუ არა DOCKER_CONTENT_TRUST=1 დაყენებული ატვირთვისას
- დაადასტურეთ, რომ ატვირთვის ოპერაცია წარმატებით დასრულდა
- სცადეთ აშკარად ხელმოწერა
docker trust sign-ით - შეამოწმეთ, აქვს თუ არა მომხმარებელს ხელმოწერის ნებართვები რეპოზიტორიისთვის
- შეამოწმეთ შეცდომები Docker-ის დემონის ლოგებში
- შეამოწმეთ, არსებობს თუ არა იმიჯი რეესტრში ხელმოწერის მცდელობამდე
- გასაღებზე წვდომის პრობლემები: შეამოწმეთ გასაღების ნებართვები და პაროლები
- შეამოწმეთ, რომ გასაღების ფაილებს აქვთ სწორი ნებართვები (600 პირადი გასაღებებისთვის)
- დაადასტურეთ, რომ სწორი პაროლი გამოიყენება
- შეამოწმეთ გასაღების შენახვის მდებარეობა (~/.docker/trust)
- შეამოწმეთ ნდობის დირექტორიის მფლობელობა და ნებართვები
- მოძებნეთ აპარატურული ტოკენის კავშირის პრობლემები
- განიხილეთ გასაღების აღდგენა, თუ პაროლი დაკარგულია
- ნდობის სერვერის კავშირი: შეამოწმეთ ქსელური კავშირი Notary სერვერთან
- შეამოწმეთ კავშირი Notary სერვერის ენდფოინთებთან
- შეამოწმეთ ფაირვოლის წესები და ქსელის პოლიტიკა
- შეამოწმეთ, რომ TLS სერთიფიკატები ვალიდური და სანდოა
- შეამოწმეთ DNS რეზოლუცია Notary სერვერისთვის
- მოძებნეთ პროქსის კონფიგურაციის პრობლემები
- შეამოწმეთ ავთენტიფიკაციის რწმუნებათა სიგელები Notary სერვერისთვის
- ვადაგასული ხელმოწერები: განაახლეთ დროის ნიშნულის მეტამონაცემები
- გაუშვით
notary publishდროის ნიშნულის განახლებისთვის - შეამოწმეთ სისტემის საათის სინქრონიზაცია
- შეამოწმეთ, რომ Notary სერვერის დროის ნიშნულის გასაღები ვალიდურია
- მოძებნეთ ვადის გასვლის თარიღები ნდობის მეტამონაცემებში
- განიხილეთ დროის ნიშნულის ავტომატური განახლების მექანიზმები
- დანერგეთ მონიტორინგი მოახლოებული ვადის გასვლისთვის
- გაუშვით
- CI/CD ინტეგრაციის პრობლემები: შეამოწმეთ საიდუმლოების მართვა და გარემოს ცვლადები
- შეამოწმეთ ხელმოწერის გასაღებების უსაფრთხო დამუშავება CI/CD-ში
- შეამოწმეთ, რომ გარემოს ცვლადები სწორად არის დაყენებული
- დარწმუნდით, რომ პაროლი სათანადოდ არის მიწოდებული ხელმოწერის პროცესში
- მოძებნეთ ნებართვების პრობლემები CI/CD გარემოში
- შეამოწმეთ ხელსაწყოების თავსებადობა CI/CD runner-ებში
- დანერგეთ სათანადო შეცდომების დამუშავება ბილდის სკრიპტებში
- კლიენტის/სერვერის ვერსიების შეუსაბამობა: დარწმუნდით თავსებად ვერსიებში
- შეამოწმეთ Docker-ის კლიენტისა და დემონის ვერსიები
- შეამოწმეთ Notary-ის კლიენტისა და სერვერის თავსებადობა
- მოძებნეთ API ვერსიების შეუსაბამობა
- განაახლეთ კომპონენტები თავსებად ვერსიებზე
- შეამოწმეთ TUF ფორმატის ცვლილებები ვერსიებს შორის
- გადახედეთ გამოშვების შენიშვნებს ცვლილებების შესახებ
- განიხილეთ ვერსიების დაფიქსირება სტაბილური გარემოებისთვის
თანამედროვე მიდგომები და ხელსაწყოები
Sigstore და Cosign
- გასაღების გარეშე ხელმოწერის ოპციები, რომლებიც აქრობენ პირადი გასაღების მართვის საჭიროებას
- იყენებს ხანმოკლე სერთიფიკატებს, რომლებიც დაკავშირებულია იდენტობასთან
- იყენებს OpenID Connect-ს (OIDC) ავთენტიფიკაციისთვის
- უზრუნველყოფს უარყოფის შეუძლებლობას გასაღების შენახვის საზრუნავის გარეშე
- გასცემს ეფემერულ სერთიფიკატებს Fulcio CA-დან
- ამცირებს გასაღების კომპრომეტაციის რისკს
- გამჭვირვალობის ლოგები საჯარო ვერიფიკაციისა და აუდიტირებადობისთვის
- იწერს ყველა ხელმოწერას შეცვლის-აშკარა ლოგში (Rekor)
- საშუალებას იძლევა მესამე მხარის მიერ ხელმოწერის მოვლენების ვერიფიკაციას
- ქმნის ხელმოწერის აქტივობების უცვლელ აუდიტის კვალს
- აქვს ჩართვის მტკიცებულებების მხარდაჭერა ხელმოწერის ვერიფიკაციისთვის
- ხდის მიწოდების ჯაჭვის აქტივობებს საჯაროდ ვერიფიცირებადს
- OIDC იდენტობის ინტეგრაცია ადამიანისა და სამუშაო დატვირთვის ავთენტიფიკაციისთვის
- იყენებს არსებულ იდენტობის პროვაიდერებს (GitHub, Google და ა.შ.)
- აქვს როგორც ადამიანის, ისე სერვისის ანგარიშის იდენტობების მხარდაჭერა
- აკავშირებს ხელმოწერებს პირდაპირ ავთენტიფიცირებულ იდენტობებთან
- უზრუნველყოფს იდენტობაზე დაფუძნებული ვერიფიკაციის პოლიტიკას
- ამარტივებს წვდომის მართვას ხელმოწერის ოპერაციებისთვის
- გამარტივებული დეველოპერის გამოცდილება თანამედროვე ხელსაწყოებით
- ამცირებს სირთულეს ტრადიციულ PKI-სთან შედარებით
- უზრუნველყოფს ნათელ, მომხმარებელზე-მეგობრულ ბრძანებებსა და ინტერფეისებს
- ინტეგრირდება არსებულ დეველოპმენტის სამუშაო პროცესებთან
- აქვს მრავალი ხელმოწერის ფორმატისა და ვერიფიკაციის მეთოდის მხარდაჭერა
- ამცირებს ხახუნს მიწოდების ჯაჭვის უსაფრთხოების დანერგვისას
- Kubernetes-ის ინტეგრაცია მიღების კონტროლერებისა და პოლიტიკის საშუალებით
- მუშაობს Policy Controller-თან და OPA Gatekeeper-თან
- უზრუნველყოფს CRD-ებს Kubernetes-მშობლიური პოლიტიკის განსაზღვრისთვის
- ინტეგრირდება Kubernetes RBAC-თან ავტორიზაციისთვის
- აქვს სახელების სივრცის დონის პოლიტიკის კონფიგურაციის მხარდაჭერა
- უზრუნველყოფს კლასტერის მასშტაბით ხელმოწერის აღსრულებას
In-toto დადასტურებები
- აღბეჭდეთ მთელი ბილდის წარმოშობა დეტალური მეტამონაცემებით
- იწერს ყველა ნაბიჯს ბილდისა და გამოშვების პროცესში
- ადოკუმენტირებს შეყვანებს, გამოტანებსა და გარემოს თითოეული ნაბიჯისთვის
- ქმნის ბილდის პროცესის მთლიანობის ვერიფიცირებად მტკიცებულებას
- აქვს განმეორებადი ბილდების ვერიფიკაციის მხარდაჭერა
- უზრუნველყოფს პროგრამული უზრუნველყოფის მასალების სრული სიის გენერირებას
- დააკავშირეთ ნაბიჯები ბილდის პროცესში კრიპტოგრაფიული გარანტიებით
- ქმნის ოპერაციების ვერიფიცირებად ჯაჭვს
- უზრუნველყოფს, რომ თითოეული ნაბიჯი შესრულდა როგორც მოსალოდნელი იყო
- აღმოაჩენს შეცვლას ან არაავტორიზებულ მოდიფიკაციებს
- უზრუნველყოფს ტრანზიტულ ნდობას პაიპლაინის მასშტაბით
- აღასრულებს წესრიგსა და დამოკიდებულებებს ნაბიჯებს შორის
- შეამოწმეთ სრული მიწოდების ჯაჭვი წყაროდან გაშვებამდე
- ამოწმებს ყველა ტრანსფორმაციას პროგრამული უზრუნველყოფის სასიცოცხლო ციკლში
- უზრუნველყოფს, რომ არაავტორიზებული ნაბიჯები არ დამატებულა
- ამოწმებს, რომ ყველა კომპონენტი აკმაყოფილებს უსაფრთხოების მოთხოვნებს
- ქმნის პროგრამული უზრუნველყოფის წარმოშობის თავიდან ბოლომდე ვერიფიკაციას
- აქვს რთული მიწოდების ჯაჭვის ტოპოლოგიების მხარდაჭერა
- დამატებითი მეტამონაცემები ხელმოწერების მიღმა მდიდარი ვერიფიკაციისთვის
- მოიცავს მოწყვლადობის სკანირების შედეგებს
- ადოკუმენტირებს პოლიტიკის შესაბამისობის სტატუსს
- იწერს ბილდის გარემოს კონფიგურაციას
- აღბეჭდავს ტესტის შედეგებსა და ხარისხის მეტრიკებს
- უზრუნველყოფს ლიცენზირებისა და შესაბამისობის ინფორმაციას
- ფრეიმვორქი მორგებული დადასტურებებისთვის, რომლებიც მორგებულია კონკრეტულ საჭიროებებზე
- აქვს დომენ-სპეციფიკური დადასტურების ტიპების მხარდაჭერა
- საშუალებას იძლევა მორგებული ვერიფიკაციის წესების შექმნას
- საშუალებას იძლევა გაფართოებას ორგანიზაცია-სპეციფიკური მოთხოვნებისთვის
- უზრუნველყოფს სტანდარტიზებულ ფორმატს მრავალფეროვანი მეტამონაცემებისთვის
- ინტეგრირდება არსებულ უსაფრთხოებისა და შესაბამისობის სისტემებთან
მომავალი მიმართულებები
იმიჯის ხელმოწერის ეკოსისტემა სწრაფად ვითარდება რამდენიმე მნიშვნელოვანი ტენდენციის გამოვლენით:
- SBOM-ის ინტეგრაცია: ხელმოწერების დაკავშირება პროგრამული უზრუნველყოფის მასალების სიასთან
- SBOM მონაცემების პირდაპირ ჩაშენება ხელმოწერის დადასტურებებში
- პროგრამული უზრუნველყოფის კომპონენტების შესახებ ვერიფიცირებადი პრეტენზიების შექმნა
- მოწყვლადობის ავტომატური კორელაციის უზრუნველყოფა პაკეტის მონაცემებთან
- შესაბამისობის მოთხოვნების მხარდაჭერა, როგორიცაა აშშ-ს აღმასრულებელი ბრძანება 14028
- რისკის შეფასების ხელშეწყობა კომპონენტების ინვენტარიზაციის საფუძველზე
- დამოკიდებულების ანალიზის უზრუნველყოფა უსაფრთხოებისა და ლიცენზირებისთვის
- მანქანით-წაკითხვადი კომპონენტების გამჭვირვალობის შექმნა
- ნულოვანი ნდობის მიწოდების ჯაჭვები: უწყვეტი ვერიფიკაცია ყველა ეტაპზე
- ვერიფიკაციის დანერგვა პროგრამული უზრუნველყოფის სასიცოცხლო ციკლის ყველა ეტაპზე
- იმპლიციტური ნდობის მოხსნა პაიპლაინის ეტაპებს შორის
- თითოეული ტრანსფორმაციისთვის ვერიფიცირებადი მტკიცებულებების შექმნა
- გაშვებული დატვირთვების უწყვეტი ხელახალი ვალიდაციის უზრუნველყოფა
- მინიმალური პრივილეგიის პრინციპების დანერგვა ბილდის სისტემებისთვის
- დინამიური ნდობის გადაწყვეტილებების მხარდაჭერა მიმდინარე კონტექსტის საფუძველზე
- უსაფრთხო ბილდის გარემოს შექმნა მინიმალური შეტევის ზედაპირით
- სტანდარტიზებული დადასტურებები: უფრო ფართო ეკოსისტემის მხარდაჭერა წარმოშობისთვის
- ინდუსტრიის სტანდარტების შემუშავება დადასტურების ფორმატებისთვის
- ურთიერთთავსებადი ვერიფიკაციის მექანიზმების შექმნა
- გამყიდველებს შორის დადასტურებების გაცვლის მხარდაჭერა
- აუდიტისა და შესაბამისობის უზრუნველყოფა ჰეტეროგენულ გარემოში
- საზოგადოების მიერ დადასტურების სტანდარტების მიღების ხელშეწყობა
- ხელსაწყოების ეკოსისტემის გაუმჯობესება დადასტურების შექმნისა და ვერიფიკაციისთვის
- მარეგულირებელ შესაბამისობასთან მხარდაჭერა სტანდარტიზებული მტკიცებულებებით
- იდენტობაზე დაფუძნებული ნდობა: გასაღებზე დაფუძნებულიდან იდენტობაზე დაფუძნებულ ნდობაზე გადასვლა
- არსებული იდენტობის პროვაიდერების გამოყენება (OIDC, SAML)
- ხელმოწერების დაკავშირება რეალურ იდენტობებთან
- როლებზე დაფუძნებული ხელმოწერის ვერიფიკაციის მხარდაჭერა
- დეტალური წვდომის კონტროლის დანერგვა ხელმოწერის ოპერაციებისთვის
- აუდიტის კვალის შექმნა, რომელიც დაკავშირებულია ავთენტიფიცირებულ იდენტობებთან
- ფედერაციის მხარდაჭერა ორგანიზაციულ საზღვრებს შორის
- გასაღების მართვის გამარტივება იდენტობის ფედერაციის საშუალებით
- პოლიტიკა როგორც კოდი: დეკლარაციული ხელმოწერის მოთხოვნები
- ნდობის მოთხოვნების განსაზღვრა მანქანით-წაკითხვად ფორმატებში
- პოლიტიკის აღსრულების ავტომატიზაცია გარემოებში
- რთული ვერიფიკაციის წესებისა და გამონაკლისების მხარდაჭერა
- პროგრამული ნდობის გადაწყვეტილებების უზრუნველყოფა კონტექსტის საფუძველზე
- იერარქიული პოლიტიკის შექმნა სხვადასხვა უსაფრთხოების დონეებისთვის
- უწყვეტი ვალიდაციის დანერგვა განვითარებადი პოლიტიკის მიმართ
- პოლიტიკის სიმულაციისა და გავლენის ანალიზის მხარდაჭერა