დავუშვათ, კარიბჭის ჰოსტი გატეხილია მაშინ, როცა მისი სერტიფიკატი ჯერ კიდევ მოქმედია. ყველა წესი, რომელიც განსაზღვრავდა, რომელ გვერდებს შეიძლება მოითხოვოს ვიზიტორმა, ძალაში რჩება და არცერთი ეს წესი არ ზღუდავს იმ კავშირს, რომელსაც თავდამსხმელი ახლა ხსნის ამ ჰოსტიდან მონაცემთა ბაზის ქვექსელისკენ. სწორედ ეს ნაპრალია მიზეზი, რომ მხოლოდ ვებ-შესასვლელი წერტილი არ არის იგივე მტკიცება, რაც სეგმენტირებული ქსელი. ორივე მტკიცებას სჭირდება ცალკე მიმოხილვა, სხვადასხვა საწყისი წერტილიდან, სანამ რომელიმეს პატიოსნად წარმოდგენა შეიძლება.

ორი მტკიცება და მათგან მხოლოდ ერთი იწყება ვიზიტორთან

პირველი მტკიცება ადამიანს ეხება: ბრაუზერისა და მოქმედი სესიის მქონე ვიზიტორს შეუძლია ერთი აპლიკაცია გახსნას და მეტი არაფერი. მხოლოდ ვებ-შესასვლელი წერტილი კარგად პასუხობს ამ მტკიცებას, რადგან ვიზიტორი იღებს გვერდს და არა მარშრუტს. ეს პასუხი ღირს შენარჩუნებად და ესეც ერთადერთი მტკიცებაა, რომელსაც დიაგრამების უმეტესობა აფიქსირებს.

მეორე მტკიცება კომპონენტს ეხება: ვარაუდობენ, რომ კარიბჭე ან მის უკან არსებული აპლიკაციის პროცესი სხვის კონტროლქვეშაა. ამ ვარაუდიდან კითხვა იცვლება: რომელი URL-ებია დაშვებული — დარჩება რომელი დანიშნულებებისა და იდენტობების მიღწევა შეუძლია პროცესს.

ორივე მტკიცებას განსხვავებული მფლობელები ჰყავს, განსხვავებულ მტკიცებულებას იძლევა და დამოუკიდებლად მარცხდება. იდენტობის გუნდს შეუძლია პირველი აჩვენოს სესიის ტესტით; მეორეს სჭირდება ქსელური პოლიტიკა, სერვისის ანგარიშის მიმოხილვა და ჰოსტის კონტროლი. დიზაინი, რომელიც მხოლოდ ვიზიტორის ნახევარს აფიქსირებს, მიმოხილვის სლაიდზე სრულად გამოიყურება, ხოლო ინციდენტის დროს — თხლად, რადგან გატეხვის შემდეგ მნიშვნელოვანი კონტროლები არასოდეს ყოფილა მოცვის ფარგლებში. დაასახელეთ, რომელ მტკიცებას უჭერს მხარს თითოეული კონტროლი, თორემ ერთი კარიბჭის წესი ორივეს ჩაეთვლება.

დამუშავებული ხარჯების სერვისი და მისი წაგების ორი გზა

ავიღოთ ხარჯების სერვისი: 10.60.4.10-ზე საჯარო კარიბჭე ამოწმებს პერსონალს და ამტკიცებულ მოთხოვნებს გადასცემს 8443 პორტის აპლიკაციის მსმენელს, და ეს აპლიკაცია აღწევს ერთ PostgreSQL მსმენელს 10.60.4.20:5432-ზე expenses_app როლის სახით. თანამშრომლებმა არ უნდა მიიღონ ზოგადი შიდა წვდომა. ნორმალური მუშაობისას დიზაინი ნამდვილად იძლევა აპლიკაციისთვის სპეციფიკურ შესასვლელს მონაცემთა ბაზის მსმენელის არსად გამოქვეყნების გარეშე. მისამართები მნიშვნელოვანია, რადგან ამ სტატიის ყოველი შემდგომი შემოწმება მათ ასახელებს.

ახლა ამოიღეთ კარიბჭე ნდობილი სიმრავლიდან. რომელ დანიშნულებებს შეუძლია 10.60.4.10-ს მიაღწიოს, როცა მისი პროცესი თავდამსხმელს ეკუთვნის? URL ფილტრი, რომელიც ვიზიტორებს ზღუდავდა, არაფერს ამბობს იმ კავშირზე, რომელსაც კარიბჭის ჰოსტი ხსნის მონაცემთა ბაზის ქვექსელისკენ.

ამის ნაცვლად ამოიღეთ აპლიკაციის პროცესი და უფლებამოსილება ფორმას იცვლის: expenses_app როლი, სერვისები, რომლებზეც ამ სერვერს შეუძლია მიაღწიოს, და ფაილები, რომლებიც ამ ანგარიშს შეუძლია წაიკითხოს. ორივე შემთხვევაში წინა კარი შეიძლება დარჩეს მხოლოდ ვები, მაშინ როცა ბექენდის საზღვარი არ არსებობს. ამიტომ წინა კარზე არსებული ეტიკეტი ორი კითხვიდან არც ერთის პასუხი არ არის.

ააგეთ რუკა, თუ რა უფლებამოსილება აქვს თითოეულ მხარეს სინამდვილეში

მიზნობრივ ნებართვებად დაწერილი ხელშეკრულება ჩვეულებრივ გიმეორებთ დიზაინს. დაწერეთ ის როგორც ფლობილი უფლებამოსილება, გადამეტების უარმყოფელი შემოწმება და ამ შემოწმების მფლობელი, და ყოველი სტრიქონი გახდება შემოწმებადი. ეს ცხრილი ზემოთ მოცემული მაგალითის წინადადებაა და არა პროდუქტის მტკიცება:

ComponentAuthority it actually holdsCheck that proves the denialOwner of the check
Identity providerIssues assertions and session cookies, and holds no network path of its ownA request to the application URL without a session is redirected to the login pageIdentity team
Public gateway hostTCP reachability to whatever its routing table and egress rules permitAn egress rule drops 10.60.4.20:5432 and the probe reports the port filteredNetwork platform team
Application roleSQL privileges granted to expenses_app inside the expenses databaseA privilege query shows no ownership or create right on any other schemaApplication team
Database listenerAccepts connections only from the source ranges named in its host-based rulesA connection from an unlisted address is refused before authenticationDatabase administrator
Management pathAdministrative access reserved for patching, monitoring and recoveryA staff workstation cannot reach the administrative port or jump through itPlatform owner

საკუთრება უფლებამოსილებას მიჰყვება. იდენტობის გუნდი ფლობს მტკიცებებს, ქსელური პლატფორმის გუნდი — მარშრუტებს, აპლიკაციის გუნდი — მონაცემთა ბაზის როლს, მონაცემთა ბაზის ადმინისტრატორი — მსმენელს და მის ჰოსტზე დაფუძნებულ წესებს, ხოლო პლატფორმის მფლობელი — მართვის სიბრტყეს. მფლობელის გარეშე უარი დოკუმენტში წინადადებაა და არა კონტროლი.

დაყოფა ორმაგ დათვლასაც ხელს უშლის. პორტის შეზღუდვა ვერ გამოხატავს ცხრილის უფლებას, და მონაცემთა ბაზის როლი ვერ შეუშლის ჰოსტს უკავშირო ქვექსელისკენ სოკეტის გახსნას.

ჩამოთვალეთ, რას შეიძლება მიაღწიოს კარიბჭემ, ნაცვლად იმისა რომ ამტკიცოთ

საზღვრის მტკიცება იმდენად კარგია, რამდენადაც მის უკან არსებული ჩამონათვალი. კარიბჭის ჰოსტზე სამი ბრძანება ფარავს მარშრუტის არჩევას, ცოცხალ შემოწმებას და გასვლის პოლიტიკას:

ip route get 10.60.4.20
nc -zv 10.60.4.20 5432
sudo nft list chain inet filter output

წაიკითხეთ გამოსავალი ამ თანმიმდევრობით. მარშრუტი ამბობს, საერთოდ არჩეულია თუ არა 10.60.4.20 ამ ჰოსტიდან; შემოწმება ამბობს, პასუხობს თუ არა მსმენელი; წესების სია აჩვენებს, აჩერებს თუ არა პოლიტიკა პაკეტს, თუ მის გზაზე არასოდეს ყოფილა არაფერი.

გაიმეორეთ ჩამონათვალი აპლიკაციის ჰოსტიდან. იქიდან მონაცემთა ბაზის მხარე ერთი მოთხოვნაა, რომელიც აპლიკაციის როლით სრულდება:

psql -h 10.60.4.20 -U expenses_app -d expenses -c 'select rolname, rolsuper, rolcreatedb from pg_roles'

წარმატებული კავშირი როლით, რომელსაც სხვა სქემის წაკითხვა არ შეუძლია, განსხვავებული შედეგია, ვიდრე წარმატებული კავშირი მფლობელის როლით. მხოლოდ მეორეა აღმოჩენა.

ჩაწერეთ უარები, შემდეგ მიმოხილვას თარიღი მიანიჭეთ

მიღება იწერება შედეგებად და არა განზრახვებად: თანამშრომლის სესია ვერ მიაღწევს მსმენელს, კარიბჭის ჰოსტი ვერ მიაღწევს უკავშირო ქვექსელს, და აპლიკაციის როლი ვერ შექმნის მონაცემთა ბაზას. თითოეული ცალკე შემოწმებაა დასახელებული მფლობელითა და თარიღით.

შეინარჩუნეთ მონიტორინგი, პაჩირება და აღდგენა ხელმისაწვდომი მათთვის შექმნილი მართვის გზით. საზღვარი, რომელიც საკუთარ მფლობელსაც ბლოკავს, შეფერხებად იქცევა, და ამ შეფერხებაზე ჩვეულებრივი პირველი რეაქცია წესის კვლავ გაფართოებაა. CISA-ს პერიმეტრის გაიდლაინი ითხოვს შემომავალი და გამავალი წვდომის შეზღუდვას გამართლებული პორტებითა და პროტოკოლებით, მათ შორის შიდა ქსელებს შორის ტრაფიკისა, რაც ბექენდიდან დაწყებული მიმართულებაა და რომელსაც დიაგრამების უმეტესობა გამოტოვებს.

მიანიჭეთ თარიღი მიმოხილვას და დაასახელეთ მისი მფლობელი. ხელახლა გაუშვით ჩამონათვალი და უფლებების მოთხოვნა კარიბჭის იმიჯის, მარშრუტიზაციის ცხრილის ან აპლიკაციის როლის ყოველი ცვლილების შემდეგ.

დაკავშირებული სტატიები