Дар пости қаблии мо дар бораи CI/CD Pipelines, мо дидем чӣ тавр хакерӣ кардан мумкин аст CI/CD сенарияе, ки эҳтимолан ҳифз карда шуд.
Биёед нуктаи худро дар пости қаблӣ ба ёд орем: мо бо баъзе аз онҳо оғоз кардем pipeline ки ба он осебпазир буд Заҳролудшавии ғайримустақим Pipeline Иҷро (I-PPE) ва барои ислоҳи он, мо тасмим гирифтем, ки онро тақсим кунем pipeline ба ду:
- 1 pipeline (Сохтани CI), ки барои D-PPE ва I-PPE бехатар аст, рамзи PR-ро тафтиш мекунад, сохтанро месозад ва артефакт тавлид мекунад
- 2-ум pipeline (Санҷиши CI), ки барои D-PPE ва I-PPE низ бехатар аст, рамзи асосӣ (барои пешгирӣ аз тағир додани скрипти shell)-ро тафтиш мекунад ва скриптҳои аслиро бар зидди артефакт иҷро мекунад.
- Барои ҳамоҳангсозии CI-и санҷишӣ pipeline барои иҷро кардан БАЪД аз сохтани CI pipeline, истифода бурдем workflow_run триггер.
Мо инро Сенарияи №3 номгузорӣ кардем.
Гарчанде ки, тавре ки мо дар он паём қайд кардем, роҳҳои ҳалли дигар низ мавҷуданд, мо тасмим гирифтем, ки ин "ҳалли"-ро бо сабабҳои педагогӣ амалӣ кунем, то мо тавонем ба осебпазириҳои онҳо амиқтар назар кунем. CI/CD pipelines.
Баъдтар, мо дидем, ки чӣ тавр ин сенарияро бо роҳи ҳакерӣ кардан мумкин аст заҳролуд кардани артефактИнро мо меномем Заҳролудшавӣ аз артефакт, яъне қобилияти тағир додан (ҳакерӣ кардан) pipeline мантиқ бо тағир додани а pipeline артефакт.
Мушкили ин равиш чист? Мо дидем, ки мушкилот вақте ба миён меояд, ки ягон корбар чизи наверо "эҷод" мекунад. pipeline.
Агар корбар PR-ро кушояд, ки дорои як паёми нав аст pipeline, GitHub инро иҷро хоҳад кард pipeline (бо назардошти баъзе шартҳо, тавре ки мо дидем дар пост).
Пас аз он корбар метавонад нусхаи нав эҷод кунад pipeline бо ҳамон ном бо Build CI!! Бале, ин ҳайратовар аст, аммо GitHub ба шумо имкон медиҳад, ки дуто эҷод кунед pipelineбо ҳамон ном!!
Вақте ки корбар PR-ро бо ин тағйирот мекушояд, «нав» pipeline иҷро карда мешавад (бор кардани артефакти заҳролудшуда) ва CI-и ҷойгиркунӣ pipeline баъд аз он иҷро карда мешавад, ки дар натиҷа скрипти пӯсти "тағйирёфта"-и он, ки дар он скрипти пӯсти "аслӣ"-и ҷойгир аст, аз нав менависад. pipeline фазои корӣ. Пас, ин «ҳалли» осебпазирии I-PPE-ро пешгирӣ намекунад (чунон ки мо дар зер мебинем)
Мушкилот чист? Ҳадди ақал, якчанд масъала вуҷуд дорад:
- Якум, Чӣ гуна бояд боварӣ ҳосил кард, ки раванди сохтмон халалдор нашудааст? Дар ин сенария, корбари зараровар тавонист раванди сохтмони пешбинишударо бо истифода аз худ тағйир диҳад pipeline барои эҷоди як асари заҳролудшуда.
- Дуввум, Чӣ тавр мо метавонем пайдоиши як ашёро арзёбӣ кунем?
Ин саволҳо моро ба оғӯши Сертификатсияҳои нармафзор домен!!
Сертификатсияҳои нармафзор
An аттестатсия як пора аст маълумот намояндагӣ мекунанд далели як ҳодисаДар ҷаҳони воқеӣ, мо одатан инро меномем. сертификатсия.
Масалан, вақте ки озмоишгоҳ хуни шуморо месанҷад, маълумот дар бораи санҷиш сабт ва тасдиқ карда мешавад. Натиҷаҳои санҷиши хун инҳоянд: тасдиқшаванда ва пайгирӣ.
Агар ба соҳаи IT-и мо наздиктар бошед, шумо метавонед тахмин кунед, ки тарҷумаи ин раванд, масалан, ба раванди тартибдиҳӣ чӣ гуна хоҳад буд.
Маълумот дар бораи муҳити сервери компилятсионӣ ва абзорҳо, маводҳо (рамзи сарчашма) ва маҳсулот/артефактҳо (рамзи дуӣ) қисми чунин тасдиқот хоҳанд буд.
Албатта, барои таъмини эътимоднокӣ, шаҳодатнома бояд аз ҷониби шахси ваколатдор (тасдиқшуда ва раднашаванда) таҳия карда шавад.
Эҳтимол, баъзеи шумо фикр мекунед... ва ин чист? фарқи байни имзоҳо ва шаҳодатномаҳо?
Имзоҳо ва шаҳодатномаҳои код
Дар сатҳи баланд, а соядаст бо истифода аз ҷуфти калидҳо ва артефакт сохта мешавад. Ҷуфти калидҳо аз калиди оммавӣ ва калиди махфӣ иборат аст.
Истифодабаранда бо истифода аз калиди махфӣ артефактро имзо мекунад ва дигарон метавонанд имзоро бо истифода аз калиди оммавӣ тасдиқ кунанд. Калиди махфӣ бояд махфӣ нигоҳ дошта шавад, аммо калиди оммавӣ ба таври васеъ паҳн карда мешавад.
Имзоҳоро истифода бурдан мумкин аст барои исбот кардани он, ки дорандаи калиди махфӣ аз калиди махфӣ барои имзои ашё истифода кардааст.
Имзоҳо исбот накун
- Истифодабаранда ният имзо кардани артефакт (шояд онҳоро фиреб дода бошанд), ё
- Нияти корбар барои анҷом додани ҳама гуна даъвои мушаххас дар бораи артефакт
Бо Аттестатсияҳо, ба ҷои имзои мустақими артефакт, корбарон ягон навъ эҷод мекунанд ҳуҷҷат он нияти онҳоро дарк мекунад паси имзои артефакт ва ҳар гуна даъвоҳои мушаххас ҳамчун як қисми ин имзо сохта мешавад.
Чаҳорчӯбаи сертификатсияи дохилӣ
Чаҳорчӯбаи маъмултарин ин аст Чаҳорчӯбаи сертификатсияи дохилӣ
- муайян мекунад а standard шакли шаҳодатномаҳо ки субъектҳоро, артефактҳои тавсифшударо, ба метамаълумоти тасдиқшуда дар бораи артефакт мепайвандад
- маҷмӯи онро пешниҳод мекунад предикатҳои пешакӣ муайяншуда барои мубодилаи метамаълумоти тасдиқшуда дар тамоми занҷирҳои таъминоти нармафзор
Биёед дар бораи шакли тасдиқнома каме муфассалтар сӯҳбат кунем.
An Аттестатсия аст ҳуҷҷати имзои рақамӣ ки дорои Изҳорот.
Дар Изҳороти қабати миёнаи тасдиқнома аст, ки онро ба як чизи мушаххас пайваст мекунад фан ва ба таври возеҳ муайян кардани намудҳои Пешгӯӣ:
- фан: а истиноди аз ҷиҳати криптографӣ бехатар ба артефакт (одатан тавассути хэш), ва
- Пешгӯиҳо: маҷмӯи мушаххас даъво дар бораи он артефакт ҳамчун Изҳорот номида мешавад. Ин иддаоҳо метавонанд барои ифодаи (ва баъдтар исботи) ҳар чизе, ки шумо метавонед дар бораи он фикр кунед, истифода шаванд! Онҳо метавонанд тасдиқи дастӣ, пайдоиши артефакт, натиҷаҳои автоматии санҷиш, пайгирии аудит ё ғайраро ифода кунанд!
Вақте ки ин Изҳорот ба таври криптографӣ имзо карда мешавад, он гоҳ он ҳамчун ... номида мешавад. Аттестатсия
Бо ин роҳ, ҳамчун мисол, Алис Изҳорот дар бораи артефакт эҷод мекунад ва онро бо истифода аз калиди махфии худ имзо мекунад ва Тасдиқнома эҷод мекунад.
- Боб пас метавонад имзоро тасдиқ кунед дар он Аттестатсия, ки ба ӯ имкон медиҳад ба даъвоҳо бовар кардан дар дохили.
Пас Боб метавонад ин иддаоҳоро истифода барад қарор додан ки оё ин ашёи нодирро истифода бурдан мумкин аст ё не.
Оё шаҳодатномаҳо метавонанд барои ҳалли заҳролудшавии артефактҳо кумак кунанд?
Пас аз ин муқаддима ба Аттестатсияҳо, биёед ба масъалаи худ баргардем. Чӣ гуна шаҳодатномаҳо метавонанд ба мо дар ҳалли мушкили худ, яъне пешгирӣ аз заҳролудшавӣ аз ашёи хом, кумак кунанд?
Истифодабарандаи зараровар тавонист артефакт эҷод кунад, ки онро аз механизми "расмӣ" сарфи назар карда, яъне бо истифода аз pipeline барои тавлиди артефакт.
Аҷиб мебуд, агар мо исбот карда тавонем, ки осори зеркашишаванда бо истифода аз расмӣ сохта шудаанд pipelineс. Ин танҳо як мисоли он чизест, ки мо метавонем онро "нуқтаҳои таҳриф" номием, аммо шояд бисёр мисолҳои дигар низ вуҷуд дошта бошанд.
Тавре ки шумо дар расми боло мебинед, нуқтаҳои таҳрифкунӣ гуногунанд. Бо ин роҳ, истеъмолкунанда pipeline (Санҷиши CI дар мисоли мо) бояд арзёбӣ кунад якпорчагии раванди сохтмон инчунин якпорчагии худи артефакт.
Дар мисоли мо, артефакти заҳролудшуда бо роҳи ворид кардани як (заҳролудшуда)-и нав сохта шудааст. pipeline ки ба раванди сохтан халал мерасонад. Аммо корбари бадхоҳ метавонист:
- пас аз ворид шудан ба система, рамзро тағир диҳед SCM барои тавлиди файли дуӣи зараровар
- файли дуии дурустро, ки аз ҷониби компиляция тавлид шудааст, бо файли дуии зараровари дигар иваз кунед
- Феҳристи артефактро зери хатар гузоред ва артефакти заҳролудро, ки бо ягон роҳи дигар сохта шудааст, бор кунед
- ва ѓайра
Тавре ки мебинед, якчанд нуқтаҳои "вайронкунӣ" мавҷуданд.
Дар ин ҷо чӣ муҳим аст? Албатта, барои ҳифзи ҳамаи он нуқтаҳои "таҳрифкунанда". Аммо, дар ниҳоят, муҳимтарин чиз ин аст, ки ки «истеъмолкунанда»-и ашё метавонад якпорчагии ашёро арзёбӣ кунад ва қарор кунад, ки онро идома диҳад ё не.
Мо метавонем арзёбии якпорчагии артефакт бо ду роҳ.
Яке аз онҳо тавассути арзёбии пайдоиш аз артефакт.
Бо тавлиди Тасдиқи пайдоиш, мо метамаълумоти муфидро (дуруст тасдиқшуда ва бе раддия) дар бораи артефакт пешниҳод менамоем. Дар мисолҳои зерин, мо истифода хоҳем бурд НАМАКИ КСИГЕНӢ (Қабати тасдиқи нармафзор барои эътимод), ҷузъ барои тавлид, сабти ном ва тасдиқи тасдиқи нармафзор.
Дар рамзи дар боло овардашуда, шумо метавонед бубинед, ки қадаме ҳаст, ки файли ҷангро месозад ва қадами дуюме ҳаст, ки онро тавлид мекунад Тасдиқи пайдоишБарои ин, pipeline калиди махфиро истифода мебарад ва инчунин калиди оммавиро дар тасдиқ дохил мекунад.
Дар паси парда, Xygeni намак фармон шаҳодатномаро дар як нигоҳ медорад идоракунанда (яъне Феҳристи тасдиқкунӣ, Сабт дар ҳолати мо, аммо шумо метавонед ягон чизи дигарро истифода баред). Ин корро анҷом дод, истеъмолкунанда pipeline метавонад Xygeni-ро дар бар гирад Муҳаррики тасдиқкунӣ барои тасдиқи пайдоиши ашё ва арзёбии якпорчагии он.
Раванди тасдиқкунӣ баҳо медиҳад:
- Дар артефакти sha256sum эътибор дорад (яъне дар бораи он «мавзӯъ» шаҳодатнома мавҷуд аст) ва
- Дар шаҳодатнома дуруст тасдиқ карда шудааст (он бо истифода аз калиди махфии мувофиқ тавлид шудааст)
Ин раванди тасдиқ метавонад арзёбӣ кунад, ки ҳам ашёи хом ва ҳам ашёи хом эътибор доранд.
Аммо, чунон ки шумо дар хотир доред, дар мавриди мо, артефакт аз ҷониби як "бадхоҳ" сохта шудааст. pipeline (яъне аслӣ нест, ки аз ҷониби тағир дода шудааст pipeline). Пас мо бояд ҷанбаи дигарро тафтиш кунем: ки артефакт аз ҷониби "аслӣ" тавлид шудааст pipeline, на каси дигар.
Барои ин, танҳо як сатри оддӣ барои санҷиши ин ҳолатро дохил кунед, масалан:
Агар артефакт аз ҷониби "бехатар"-и мо тавлид нашуда бошад, ин санҷиши иловагӣ ноком мешавад. pipeline.
Агар артефакт аз ҷониби аслии мо тавлид шуда бошад pipeline (cicd_top10_3_salt/.github/workflows/build.yml), фармони grep муваффақ мешавад, вагарна он ноком мешавад ва pipeline ва қатъ кардани ҳама гуна қадамҳои минбаъда.
«Сохтмончӣ» pipeline танҳо як нуқтаи таҳриф аст, ки бояд тафтиш карда шавад, аммо, тавре ки қаблан зикр гардид, баъзе нуқтаҳои дигари таҳриф низ ҳастанд, ки мо бояд онҳоро тафтиш кунем.
Барои намуна, Чӣ мешавад, агар рамзи сарчашма пас аз санҷиши анбор ва пеш аз фармони сохтан тағйир дода шуда бошад? Дар ин ҳолат, рамзи сохташаванда бо рамзи нигоҳдошташуда яксон нест SCM.
Санҷидани ин нуқтаи таҳриф хеле осон аст, ба монанди санҷидани хэшҳои мавод дар ҳар қадам.
Хулоса
Хулоса, а Сертификатсияи нармафзор изҳоротест, ки дар бораи як қисми нармафзор дода шудааст, яъне изҳороти тасдиқшуда (метадаъломот) дар бораи артефакти нармафзор ё маҷмӯаи артефактҳои нармафзор.
Тасдиқоти нармафзор як умумикунии имзои артефакти хом/рамз мебошанд. Тасдиқ як ҳуҷҷати имзошуда аст (дар формати муайян, одатан бар асоси JSON), ки метамаълумотро бо артефакт мепайвандад. Онҳо далелҳоеро ифода мекунанд, ки вурудҳо (маводҳо) ва баромадҳоро (артефактҳои истеҳсолшуда) дар ҳар як марҳилаи сохтан пайваст мекунанд.
Аттестатсияҳо сабти тасдиқшавандаи қадамҳои анҷомдодашуда барои сохтани артефактҳои ниҳоии нармафзор, аз ҷумла маводҳои вурудӣ барои ҳар як қадам ва фармонҳои сохтани иҷрошударо пешниҳод мекунанд.
Хулоса, тасдиқи нармафзор як механизми олӣ барои санҷиши бисёр ҷанбаҳои гуногуни якпорчагии раванди сохтани мо мебошад.
Силсиларо тамом кардед? Хавотир нашавед! Озодона ба "Заҳролуд шудааст Pipeline Иҷро (PPE)ё ягон паёми дигаре, ки боз таваҷҷӯҳи шуморо ба худ ҷалб мекунад!
Бо мо бимонед, мо ба таври муфассал сертификатсияҳои нармафзорро баррасӣ хоҳем кард ва build security дар паёмҳои минбаъдаи блог.





