DevOps va DevSecOps: u bitta bankda qanday ko'rinishga ega edi

DevOps va DevSecOps: u bitta bankda qanday ko'rinishga ega edi

Bank o'z loyihalarini ko'plab pudratchilarga topshiradi. "Tashqi" kodni yozadi, so'ngra natijalarni unchalik qulay bo'lmagan shaklda yuboradi. Aniqrog‘i, jarayon shunday ko‘rinish oldi: ular o‘zlari bilan funksional testlardan o‘tgan loyihani topshirdilar, so‘ngra bank perimetri ichida integratsiya, yuklanish va hokazolar uchun sinovdan o‘tkazildi. Ko'pincha sinovlar muvaffaqiyatsizlikka uchraganligi aniqlandi. Keyin hamma narsa tashqi ishlab chiquvchiga qaytdi. Siz taxmin qilganingizdek, bu xatolarni tuzatish uchun uzoq vaqt talab qilgan.

Bank o'z qanoti ostidagi quvur liniyasini majburiyatdan tortib to ozod qilishgacha sudrab borish mumkin va zarur deb qaror qildi. Shunday qilib, hamma narsa bir xil va bankdagi mahsulot uchun mas'ul bo'lgan guruhlarning nazorati ostida. Ya'ni, go'yo tashqi pudratchi ofisning keyingi xonasida biron bir joyda ishlayotgandek. Korporativ to'plamda. Bu oddiy devops.

Sek qayerdan kelgan? Bank xavfsizligi tashqi pudratchi tarmoq segmentida qanday ishlashi mumkinligi, kimningdir ruxsati borligi, kod bilan qanday va kim ishlashi haqida yuqori talablarni qo‘ydi. Shunchaki, IB pudratchilar tashqarida ishlaganda bir nechta bank standartlariga rioya qilishini hali bilmas edi. Va keyin bir necha kundan keyin hamma ularni kuzatishni boshlashi kerak.

Pudratchi mahsulot kodiga to'liq kirish huquqiga ega ekanligi haqidagi oddiy vahiy allaqachon ularning dunyosini ostin-ustun qilib yuborgan.

Ayni paytda men sizga aytib bermoqchi bo'lgan DevSecOps hikoyasi boshlandi.

Ushbu vaziyatdan bank qanday amaliy xulosalar chiqardi?

Hamma narsa noto'g'ri qilinayotgani haqida ko'p bahs-munozaralar bo'ldi. Ishlab chiquvchilarning ta'kidlashicha, xavfsizlik faqat rivojlanishga xalaqit berish bilan band va ular ham qo'riqchilar kabi o'ylamasdan taqiqlashga harakat qilishadi. O'z navbatida, xavfsizlik bo'yicha mutaxassislar "ishlab chiquvchilar bizning davramizda zaifliklarni yaratadilar" va "ishlab chiquvchilar zaifliklarni yaratmaydilar, lekin ularning o'zlari" degan nuqtai nazarlarni tanlashda ikkilanishdi. Agar yangi bozor talablari va DevSecOps paradigmasi paydo bo'lmaganda, bahs uzoq vaqt davom etgan bo'lar edi. Axborot xavfsizligi talablarini "qutidan tashqarida" hisobga olgan holda jarayonlarni avtomatlashtirish barchaga baxtli bo'lishga yordam berishini tushuntirish mumkin edi. Qoidalar darhol yoziladi va o'yin davomida o'zgarmaydi (axborot xavfsizligi kutilmaganda biror narsani taqiqlamaydi) va ishlab chiquvchilar axborot xavfsizligini sodir bo'layotgan barcha narsalar haqida xabardor qiladilar (axborot xavfsizligi to'satdan biror narsaga duch kelmaydi). . Har bir jamoa, shuningdek, ba'zi mavhum katta birodarlar emas, balki yakuniy xavfsizlik uchun javobgardir.

  1. Tashqi xodimlar allaqachon kod va bir qator ichki tizimlardan foydalanish imkoniyatiga ega bo'lganligi sababli, hujjatlardan "ishlab chiqish butunlay bank infratuzilmasi asosida amalga oshirilishi kerak" degan talabni olib tashlash mumkin.
  2. Boshqa tomondan, biz sodir bo'layotgan voqealar ustidan nazoratni kuchaytirishimiz kerak.
  3. Murosa o'zaro faoliyat guruhlarini yaratish edi, bu erda xodimlar tashqi odamlar bilan yaqindan ishlaydi. Bunday holda, siz jamoaning bank serverlaridagi asboblarda ishlashiga ishonch hosil qilishingiz kerak. Boshidan oxirigacha.

Ya'ni, pudratchilarga ruxsat berilishi mumkin, ammo ularga alohida segmentlar berilishi kerak. Ular bank infratuzilmasiga tashqaridan qandaydir infektsiyani olib kelmasliklari va zarur bo'lganidan ko'proq narsani ko'rmasliklari uchun. Xo'sh, ularning harakatlari qayd etilishi uchun. Oqishlardan himoya qilish uchun DLP, bularning barchasi kiritilgan.

Aslida, barcha banklar ertami-kechmi bunga kelishadi. Bu erda biz kaltaklangan yo'lga tushdik va "tashqi" ishlaydigan bunday muhitlarga qo'yiladigan talablarni kelishib oldik. Kirishni boshqarish vositalarining maksimal assortimenti, zaifliklarni tekshirish vositalari, sxemalar, yig'ilishlar va testlarda virusga qarshi tahlillar paydo bo'ldi. Bu DevSecOps deb ataladi.

To'satdan ma'lum bo'ldiki, agar ilgari DevSecOps bank xavfsizligi ishlab chiquvchi tomonida nima sodir bo'lishini nazorat qilmasa, yangi paradigmada xavfsizlik infratuzilmadagi oddiy hodisalar kabi boshqariladi. Faqat hozir yig'ilishlar, kutubxonalarni boshqarish va hokazolar haqida ogohlantirishlar mavjud.

Faqat jamoalarni yangi modelga o'tkazish qoldi. Xo'sh, infratuzilmani yarating. Ammo bu arzimas narsalar, bu boyqush chizishga o'xshaydi. Aslida biz infratuzilma bilan yordam berdik va o'sha paytda rivojlanish jarayonlari o'zgarayotgan edi.

Nima o'zgardi

Biz buni kichik bosqichlarda amalga oshirishga qaror qildik, chunki biz ko'p jarayonlarning parchalanishini tushundik va ko'plab "tashqilar" hammaning nazorati ostida yangi ish sharoitlariga dosh bera olmasligi mumkin.

Birinchidan, biz o'zaro faoliyat guruhlarini yaratdik va yangi talablarni hisobga olgan holda loyihalarni tashkil qilishni o'rgandik. Tashkiliy ma'noda biz qanday jarayonlarni muhokama qildik. Natijada barcha mas'ul shaxslar bilan yig'ish quvurining diagrammasi paydo bo'ldi.

  • TUSHUNARLI: Git, Jenkins, Maven, Roslyn, Gradle, jUnit, Jira, MF Fortify, CA Harvest, GitlabCI.
  • CD: Ansible, Puppet, TeamCity, Gitlab TFS, Liquidbase.
  • Viktorina: Sonarqube, SoapUI, jMeter, Selenium: MF Fortify, Performance Center, MF UFT, Ataccama.
  • Taqdimot (hisobot, aloqa): Grafana, Kibana, Jira, Confluence, RocketChat.
  • operatsiyalar (xizmat ko'rsatish, boshqarish): Ansible, Zabbix, Prometey, Elastic + Logstash, MF Service Manager, Jira, Confluence, MS Project.

Tanlangan to'plam:

  • Bilimlar bazasi - Atlassiya qoʻshilishi;
  • Vazifa kuzatuvchisi - Atlassian Jira;
  • Artifaktlar ombori - "Nexus";
  • Uzluksiz integratsiya tizimi - "Gitlab CI";
  • Uzluksiz tahlil tizimi - "SonarQube";
  • Ilova xavfsizligini tahlil qilish tizimi - "Micro Focus Fortify";
  • Aloqa tizimi - "GitLab Mattermost";
  • Konfiguratsiyani boshqarish tizimi - "Ansible";
  • Monitoring tizimi - "ELK", "TICK Stack" ("InfluxData").

Ular pudratchilarni ichkariga tortishga tayyor bo'lgan jamoani yaratishni boshladilar. Bir nechta muhim narsalar borligini anglash mavjud:

  • Hech bo'lmaganda kodni uzatishda hamma narsa birlashtirilgan bo'lishi kerak. Chunki o'ziga xos xususiyatlarga ega bo'lgan turli xil rivojlanish jarayonlari qancha pudratchilar bor edi. Har kimni taxminan bittasiga sig'dirish kerak edi, lekin variantlar bilan.
  • Ko'plab pudratchilar bor va infratuzilmani qo'lda yaratish mos emas. Har qanday yangi vazifa juda tez boshlanishi kerak - ya'ni ishlab chiquvchilar o'z quvurlarini boshqarish uchun bir qator echimlarga ega bo'lishi uchun misol deyarli bir zumda joylashtirilishi kerak.

Birinchi qadamni qo'yish uchun nima qilinayotganini tushunish kerak edi. Va u erga qanday borishni aniqlashimiz kerak edi. Biz infratuzilmada ham, CI/CD avtomatizatsiyasida ham maqsadli yechim arxitekturasini chizishga yordam berishdan boshladik. Keyin biz ushbu konveyerni yig'ishni boshladik. Bizga hamma uchun bir xil, bir xil konveyerlar ishlaydigan bitta infratuzilma kerak edi. Biz hisob-kitoblar bilan variantlarni taklif qildik, bank o'yladi, keyin nima va qanday mablag'lar bilan qurilishi haqida qaror qildi.

Keyinchalik sxemani yaratish - dasturiy ta'minotni o'rnatish, konfiguratsiya. Infratuzilmani joylashtirish va boshqarish uchun skriptlarni ishlab chiqish. Keyinchalik konveyerni qo'llab-quvvatlashga o'tish keladi.

Biz hamma narsani uchuvchida sinab ko'rishga qaror qildik. Qizig'i shundaki, sinov paytida bankda birinchi marta ma'lum bir stek paydo bo'ldi. Boshqa narsalar qatorida, echimlardan birining mahalliy sotuvchisi tezkor ishga tushirish uchun uchuvchi doirasi uchun taklif qilindi. Xavfsizlik xodimlari u bilan uchish paytida tanishdi va bu unutilmas taassurot qoldirdi. Biz o'tishga qaror qilganimizda, xayriyatki, infratuzilma qatlami ilgari bankda bo'lgan Nutanix yechimi bilan almashtirildi. Bundan tashqari, bundan oldin bu VDI uchun edi, lekin biz uni infratuzilma xizmatlari uchun qayta ishlatdik. Kichik hajmlarda u iqtisodiyotga mos kelmadi, lekin katta hajmlarda u ishlab chiqish va sinov uchun ajoyib muhitga aylandi.

To'plamning qolgan qismi hamma uchun ko'proq yoki kamroq tanish. Ansible-da avtomatlashtirish vositalaridan foydalanilgan va xavfsizlik bo'yicha mutaxassislar ular bilan yaqindan ishlagan. Atlassin stekini bank loyihadan oldin ishlatgan. Fortinet xavfsizlik vositalari - bu xavfsizlik xodimlari tomonidan taklif qilingan. Test tizimi bank tomonidan yaratilgan, hech qanday savol berilmagan. Ombor tizimi savollar tug'dirdi, men bunga ko'nikishim kerak edi.

Pudratchilarga yangi stek berildi. Ular bizga GitlabCI uchun uni qayta yozish va Jira-ni bank segmentiga ko'chirish va hokazolar uchun vaqt berishdi.

qadam ba qadam

Stend 1. Birinchidan, biz mahalliy sotuvchining yechimidan foydalandik, mahsulot yangi yaratilgan DSO tarmoq segmentiga ulandi. Platforma yetkazib berish muddati, masshtabning moslashuvchanligi va to‘liq avtomatlashtirish imkoniyati uchun tanlangan. O'tkazilgan testlar:

  • Virtualizatsiya platformasi infratuzilmasini (tarmoq, disk quyi tizimi, hisoblash resurslari quyi tizimi) moslashuvchan va to'liq avtomatlashtirilgan boshqarish imkoniyati.
  • Virtual mashinaning hayot aylanishini boshqarishni avtomatlashtirish (shablonlar, suratlar, zaxiralar).

Platformani o'rnatish va asosiy konfiguratsiyadan so'ng, u ikkinchi bosqich quyi tizimlarini joylashtirish nuqtasi sifatida ishlatilgan (DSO vositalari, chakana tizimlarni ishlab chiqish sxemalari). Kerakli quvurlar to'plamlari yaratildi - virtual mashinalarni yaratish, o'chirish, o'zgartirish, zaxiralash. Bu quvurlarni joylashtirish jarayonining birinchi bosqichi sifatida foydalanilgan.

Natijada, taqdim etilgan uskunalar bankning ishlash va nosozliklarga chidamlilik talablariga javob bermaydi. Bank DIT Nutanix dasturiy majmuasi asosida kompleks yaratishga qaror qildi.

Stend 2. Biz aniqlangan stekni oldik va barcha quyi tizimlar uchun avtomatlashtirilgan o'rnatish va konfiguratsiyadan keyingi skriptlarni yozdik, shunda hamma narsa imkon qadar tezroq uchuvchidan maqsadli sxemaga o'tkazildi. Barcha tizimlar nosozliklarga chidamli konfiguratsiyada joylashtirilgan (bu imkoniyat sotuvchining litsenziyalash siyosati bilan cheklanmagan) va ko'rsatkichlar va hodisalarni yig'ish quyi tizimlariga ulangan. IB uning talablariga muvofiqligini tahlil qildi va yashil chiroq yondi.

Stend 3. Barcha quyi tizimlar va ularning sozlamalarini yangi PACga o'tkazish. Infratuzilmani avtomatlashtirish skriptlari qayta yozildi va DSO quyi tizimlarini migratsiyasi to‘liq avtomatlashtirilgan rejimda yakunlandi. IPni rivojlantirish konturlari ishlab chiqish guruhlari quvurlari tomonidan qayta yaratildi.

Stend 4. Amaliy dasturlarni o'rnatishni avtomatlashtirish. Bu vazifalar yangi jamoalarning jamoa rahbarlari tomonidan belgilandi.

Stend 5. Ekspluatatsiya.

Masofaviy kirish

Ishlab chiqish guruhlari sxema bilan ishlashda maksimal moslashuvchanlikni so'rashdi va shaxsiy noutbuklardan masofadan kirish talabi loyihaning boshida ko'tarildi. Bank allaqachon masofaviy kirish huquqiga ega edi, ammo u ishlab chiquvchilar uchun mos emas edi. Gap shundaki, sxema foydalanuvchining himoyalangan VDI ga ulanishidan foydalangan. Bu ish joyida faqat pochta va ofis paketiga muhtoj bo'lganlar uchun mos edi. Ishlab chiquvchilarga juda ko'p resurslarga ega og'ir mijozlar, yuqori unumdorlik kerak bo'ladi. Va, albatta, ular statik bo'lishi kerak edi, chunki VStudio (masalan) yoki boshqa SDK bilan ishlaydiganlar uchun foydalanuvchi seansini yo'qotish qabul qilinishi mumkin emas. Barcha ishlab chiqish guruhlari uchun ko'p sonli qalin statik VDIlarni tashkil qilish mavjud VDI yechimining narxini sezilarli darajada oshirdi.

Biz rivojlanish segmenti resurslariga to'g'ridan-to'g'ri masofadan kirish ustida ishlashga qaror qildik. Jira, Wiki, Gitlab, Nexus, skameykalarni qurish va sinovdan o'tkazish, virtual infratuzilma. Xavfsizlik xodimlari kirishni faqat quyidagi shartlar bilan ta'minlashni talab qilishdi:

  1. Bankda allaqachon mavjud bo'lgan texnologiyalardan foydalanish.
  2. Infratuzilma samarali hisob ob'ektlari yozuvlarini saqlaydigan mavjud domen kontrollerlaridan foydalanmasligi kerak.
  3. Kirish faqat ma'lum bir jamoa tomonidan talab qilinadigan resurslar bilan cheklanishi kerak (bir mahsulot jamoasi boshqa jamoaning resurslariga kira olmasligi uchun).
  4. Tizimlarda RBAC ustidan maksimal nazorat.

Natijada ushbu segment uchun alohida domen yaratildi. Bu domen barcha rivojlanish segmenti resurslarini, ham foydalanuvchi hisob ma'lumotlarini, ham infratuzilmani o'z ichiga olgan. Ushbu domendagi yozuvlarning hayot aylanishi bankda mavjud IdM yordamida boshqariladi.

Bankning mavjud uskunalari asosida to'g'ridan-to'g'ri masofadan kirish tashkil etildi. Kirish nazorati kontekstdagi qoidalarga mos keladigan AD guruhlariga bo'lingan (bitta mahsulot guruhi = bitta qoidalar guruhi).

VM shablonlarini boshqarish

Yig'ish va sinov tsiklini yaratish tezligi ishlab chiqish bo'limi boshlig'i tomonidan belgilanadigan asosiy KPIlardan biridir, chunki atrof-muhitni tayyorlash tezligi quvur liniyasining umumiy bajarilish vaqtiga bevosita ta'sir qiladi. Asosiy VM tasvirlarini tayyorlashning ikkita varianti ko'rib chiqildi. Birinchisi, rasmning minimal o'lchamlari, barcha tizim mahsulotlari uchun standart, sozlamalar bo'yicha bank siyosatiga maksimal muvofiqligi. Ikkinchisi - asosiy tasvir, unda og'ir yuk POPPO o'rnatilgan bo'lib, uni o'rnatish vaqti quvur liniyasining ishlash tezligiga katta ta'sir ko'rsatishi mumkin.

Ishlab chiqish jarayonida infratuzilma va xavfsizlik talablari ham hisobga olindi - tasvirlarni yangilab turish (yamoqlar va boshqalar), SIEM bilan integratsiya, bank standartlariga muvofiq xavfsizlik sozlamalari.

Natijada, ularni yangilab turish xarajatlarini minimallashtirish uchun minimal tasvirlardan foydalanishga qaror qilindi. POPPO-ning yangi versiyalari uchun har bir tasvirni tuzatishdan ko'ra, asosiy operatsion tizimni yangilash ancha oson.

Natijalar asosida operatsion tizimlarning minimal talab qilinadigan to'plami ro'yxati shakllantirildi, ularni yangilash operatsion guruh tomonidan amalga oshiriladi va quvur liniyasidagi skriptlar dasturiy ta'minotni yangilash uchun to'liq javobgardir va kerak bo'lganda versiyani o'zgartiradi. o'rnatilgan dasturiy ta'minotdan - faqat kerakli tegni quvur liniyasiga o'tkazing. Ha, bu devops mahsulot jamoasidan yanada murakkabroq joylashtirish stsenariylariga ega bo'lishini talab qiladi, lekin bu asosiy tasvirlarni qo'llab-quvvatlash uchun zarur bo'lgan ish vaqtini sezilarli darajada qisqartiradi, aks holda uni saqlash uchun yuzdan ortiq asosiy VM tasvirlari talab qilinishi mumkin.

Internetga ulanish

Bank xavfsizligi bilan bog'liq yana bir to'siq rivojlanish muhitidan Internet resurslariga kirish edi. Bundan tashqari, ushbu kirishni ikki toifaga bo'lish mumkin:

  1. Infratuzilmaga kirish.
  2. Ishlab chiquvchiga kirish.

Infratuzilmaga kirish Nexus bilan tashqi omborlarni proksi-server qilish orqali tashkil etilgan. Ya'ni virtual mashinalardan to'g'ridan-to'g'ri kirish ta'minlanmagan. Bu axborot xavfsizligi bo'yicha murosaga erishishga imkon berdi, bu esa rivojlanish segmentidan tashqi dunyoga har qanday kirishni ta'minlashga mutlaqo qarshi edi.

Ishlab chiquvchilarga aniq sabablarga ko'ra Internetga kirish kerak edi (stackoverflow). Yuqorida aytib o'tilganidek, barcha buyruqlar kontaktlarning zanglashiga olib kirishiga ega bo'lsa-da, IDE-dagi bankdagi ishlab chiquvchining ish joyidan ctrl+v tugmalarini bajara olmaganingizda, bu har doim ham qulay emas.

IS bilan dastlab sinov bosqichida oq roʻyxat asosidagi bank proksi-server orqali kirish taʼminlanishi haqida kelishuvga erishildi. Loyiha tugagandan so'ng, kirish qora ro'yxatga o'tkaziladi. Loyihaning boshida kirish zarur bo'lgan asosiy manbalar va omborlarni ko'rsatadigan katta kirish jadvallari tayyorlandi. Ushbu kirishlarni muvofiqlashtirish juda ko'p vaqtni talab qildi, bu esa qora ro'yxatlarga tezroq o'tishni talab qilish imkonini berdi.

Natijalar

Loyiha bir yildan kamroq vaqt oldin yakunlandi. Ajabo, barcha pudratchilar yangi stekga o'z vaqtida o'tishdi va yangi avtomatlashtirish tufayli hech kim chiqmadi. IB ijobiy fikr-mulohazalarni baham ko'rishga shoshilmayapti, lekin shikoyat qilmaydi, shundan biz ularga yoqadi degan xulosaga kelishimiz mumkin. Mojarolar pasaydi, chunki axborot xavfsizligi yana o'zini nazorat ostida his qiladi, lekin rivojlanish jarayonlariga xalaqit bermaydi. Jamoalarga mas'uliyat yuksaldi, axborot xavfsizligiga umumiy munosabat yaxshilandi. Bank DevSecOps-ga o'tish deyarli muqarrar ekanligini tushundi va buni, menimcha, eng yumshoq va to'g'ri yo'l bilan qildi.

Aleksandr Shubin, tizim arxitektori.

Manba: www.habr.com

a Izoh qo'shish