Dmitriy Kononov
ვისაუბროთკონტაქტი

სიახლეები და ანალიზი

გასაღები ერთი გაშვებისთვის მუდმივის ნაცვლად: Vercel, Postman, Pulumi და Auth0 ერთსა და იმავეზე

Vercel-მა, Postman-მა, Pulumi-მ და Auth0-მ ერთ კვირაში ერთი რამ დაწერეს: გრძელვადიანი API გასაღებები მოკლე ტოკენებით უნდა შეიცვალოს. რა გამოდგება აქედან საკუთარ სერვერზე.

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

ოთხი ტექსტი ერთსა და იმავეზე

Vercel-მა 22 ოქტომბერს გრძელვადიან გასაღებებს ომი გამოუცხადა. შედარება HTTPS-თან მოჰყავთ: მანქანურ აუთენტიფიკაციაში ახლა იქ ვართ, სადაც HTTPS იყო 2010 წელს, სანამ ის ყველგან ნორმად იქცეოდა. Vercel-მა 1000-ზე მეტი SaaS-ვენდორი გამოკითხა, და მათგან მხოლოდ 8,4 % უჭერს მხარს შესვლის უსაფრთხო ხერხებს. თავად Vercel წერს, რომ გასაღებების მტკივნეულ როტაციაზე ათასობით საინჟინრო საათი დახარჯა და ამის გაგრძელება აღარ სურს. მათი პასუხი: OIDC-ფედერაცია, რომელიც მათთან 2024 წლიდან მუშაობს, OIDC UI ფორმების ნაკრები API-ის პროვაიდერებისთვის და Vercel Connect, სადაც აპლიკაცია ტოკენს კონკრეტული მომხმარებლისთვის და საჭირო scopes-ით მოთხოვნის მომენტში იღებს, ცვლადებში გასაღების გარეშე.

Postman-მა 20 ოქტომბერს აჩვენა, როგორ ვიმუშაოთ საიდუმლოებებთან ბრძანების ხაზიდან. Postman CLI-ში 1.69.0 ვერსიიდან საიდუმლო ბრძანებით postman secret create იქმნება, გარემოს ცვლადს იდენტიფიკატორით უკავშირდება, მოთხოვნებში კი ჩვეულებრივ {{PAYMENT_API_TOKEN}} იწერება. კოლექციასა და გარემოს ფაილში საცავის ბმული დევს, მნიშვნელობა იქ არ არის. თავად მნიშვნელობა ბრაუზერში ერთჯერადი ფორმით ან ტერმინალში დამალული შეყვანით შეჰყავთ. ასე ტერმინალის ასისტენტს პროცესის დაწყება შეუძლია, გასაღებს კი ადამიანი შეიყვანს. ეს ჩემთვის ახლობელია: AI რუტინულ სამუშაოსა და დებაგში მეხმარება, და არ მინდა, რომ მისი ბრძანებების ისტორიაში გასაღებები ეწყოს.

Auth0-მ 22 ოქტომბერს Terraform-მოდულები გამოუშვა, და პირველი მათგანი, b2b-saas-starter, უკვე Terraform Registry-შია. მოდულის ერთი ბლოკი ქმნის აპლიკაციას, API-ს, ტენანტის პარამეტრებს, შეტევებისგან დაცვასა და MFA-ს. შიგნით უკვე ჩართულია API-ზე უფლებების შემოწმება, PKCE და refresh-ტოკენების როტაცია სამწამიანი ფანჯრით პარალელური მოთხოვნებისთვის. ჩემთვის აქ მთავარი ისაა, რომ როტაცია ნაგულისხმევად ჩართულია.

Pulumi-მ 15 ოქტომბერს Pulumi ESC-ში OIDC-ტოკენების გაცემა ნებისმიერი სერვისისთვის დაამატა. პროვაიდერი fn::open::oidc გარემოს გახსნის მომენტში საჭირო აუდიტორიით მოკლე ტოკენს ხელს აწერს, სერვისი ხელმოწერას ამოწმებს და საკუთარ წვდომას გასცემს. სიცოცხლის ვადა წუთიდან საათამდეა, ნაგულისხმევად საათი, და ESC არაფერს ინახავს. შენახულ გასაღებზე მათი ფორმულირება ზუსტია: ის მუშაობს ნებისმიერისთვის, ვინც წაიკითხა, ნებისმიერი მანქანიდან, სანამ არსებობს.

რას ნიშნავს ეს გაქირავებისთვის

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

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

როგორ მაქვს ეს მოწყობილი

შიდა სერვისში „ყავა ერთად“, რომელიც 2026 წლის სექტემბერ-ოქტომბერში გავაკეთე, ყველაზე ძვირფასი საიდუმლო Tasty Coffee-ს საბითუმო კაბინეტის ლოგინია. ის სერვერის დახურულ ცვლადებში ინახება, მომწოდებლის ტოკენი კი მხოლოდ პროცესის მეხსიერებაში ცოცხლობს. ყველა გარე მოთხოვნა Nginx-ითა და Node.js-ზე აწყობილი gateway-ით გადის: ის კლიენტის გამოგზავნილ იდენტობის სათაურებს შლის და მომხმარებელს თავად განსაზღვრავს ხელმოწერილი HttpOnly cookie-ით. ადმინისტრატორის სესია 8 საათი ცოცხლობს. ერთი მისამართიდან შესვლის ხუთი წარუმატებელი მცდელობის შემდეგ შესვლა 15 წუთით იბლოკება. მოთხოვნები მომწოდებელთან და Google Sheets-ის ცხრილთან შიდა პროქსებით გადის, რომლებიც საჯარო ქსელიდან მიუწვდომელია. ეს იგივე პრინციპია, რაც Vercel-სა და Pulumi-სთან, ოღონდ საერთო სერვერზე 2 GB მეხსიერებით და ფასიანი სერვისების გარეშე.

აშშ-ის PDR-კომპანიაში, რომელთანაც 2021 წლიდან ვმუშაობ, სერვერს მიმართავენ საიტი, სუპერაპი, ტელეფონია და დოკუმენტების პარსერები, შიდა API კი მესამე ვერსიამდე მივიყვანე. რომელ კავშირს კონკრეტულად რა წვდომა აქვს, არ ვამხელ. მხოლოდ იმას ვიტყვი, რომ კომპანიაში უსაფრთხოების საკითხები ჩემთან მოდის, სერვერს, VPN-სა და ქსელურ აპარატურას კი თავად ვემსახურები.

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

რას გავაკეთებდი

შევადგენდი ყველა გასაღებისა და ტოკენის სიას: CRM-ზე, გადახდის სერვისზე, SMS-ზე, ფოსტაზე, რუკებზე, AI-სერვისებზე. სად დევს, რა შეუძლია, როდის შეიცვალა.

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

სადაც სერვისი OIDC-ს ან მოკლე ტოკენებს უჭერს მხარს, მათზე გადავიდოდი. დანარჩენებში, Vercel-ის გამოკითხვით კი ისინი 90 %-ზე მეტია, გასაღებს უფლებებით შევზღუდავდი და განრიგით შევცვლიდი.

გადავწყვეტდი, რას ხედავს AI-ასისტენტი ტერმინალსა და კოდში. ჩემთან ის კოდთან მუშაობს, გასაღებების მნიშვნელობები კი თავად შემყავს.

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

სერვერზე, როგორც საერთო ცენტრზე, რომელიც უფლებებს ამოწმებს: სტატია სერვერი: მონაცემები, წვდომა და პროცესის შესრულება. მიმართულებები: API-ინტეგრაციები მონაცემების გადაცემის გასაგები წესებით და ინფრასტრუქტურა, რომლის გამოშვება და აღდგენა შეიძლება. სერვისის „ყავა ერთად“ სერვერი აღწერილია ქეისში ყავის საერთო შეკვეთების სერვისი, PDR-კომპანიის შიდა API კი გვერდზე საკუთარი API რამდენიმე აპლიკაციისთვის. იმავე თემაზე: კომპრომეტირებული სერტიფიცირების ცენტრი, AI-აგენტი პროდაქშენ სერვერზე და sandbox-ები აგენტებისთვის და ახალი Git; ადრე ვწერდი დეველოპმენტის საიდუმლოებებზე, როგორც კონტრაქტზე და API გასაღებებსა და გაჟონვებზე. თუ არ იცით, რამდენი გასაღები გაქვთ და სად დევს, ამ სიით დაიწყეთ, შემდეგ კი შეგვიძლია ერთად განვიხილოთ. ამოცანის განხილვა.