Nsí-Pipeline-Mmezu

Mmikpu n'ime CI/CD PipelineNsogbu ndị dị na ya (I): E merụrụ ahụ Pipeline Mmezu (PPE)

Njikọta Na-aga n'ihu na Ntinye Na-aga n'ihu (CI/CD) pipelines na-arụ ọrụ dị mkpa n'ikwalite mmepe ngwanrọ dị mfe. Ma, dịka ndị a pipelineỌ bụrụ na ọ na-aghọ ihe dị oke mkpa, mkpa ọ dị ichebe ha pụọ ​​na adịghị ike na-apụta ìhè. Nnyocha miri emi a lekwasịrị anya n'ịgwọta ihe egwu pụtara ìhè nke a chọpụtara na OWASP Top-10 CI/CD Ihe Ize Ndụ Nchekwa: E merụrụ ahụ Pipeline Mmezu (PPE).

Foto OWASP-top-10

Gịnị bụ ihe e ji egbu egbu Pipeline Mmezu (PPE)

Dịka OWASP Top-10 si kwuo CI/CD Ihe Ize Ndụ Nchekwa, "Ọjọọ Pipeline egbu (PPE) ihe egwu na-ezo aka n'ikike nke onye mwakpo nwere ike ịnweta sistemụ njikwa isi mmalite - na enweghị ohere ịnweta gburugburu ebe obibi owuwu - iji gbanwee usoro nrụpụta ahụ site n'itinye koodu/iwu ọjọọ n'ime nrụpụta ahụ pipeline nhazi, n'ezie 'ịmịnye nsí' pipeline na ịgba ọsọ koodu ọjọọ dịka akụkụ nke usoro nrụpụta"

N'okwu ole na ole, E merụrụ ahụ Pipeline A na-emepụta mmejuputa (PPE) mgbe onye na-awakpo ahụ nwere ike ịgbanwe ihe pipeline mgbagha.

E nwere abụọ variants:

  • PPE ozugbo (D-PPE): N'ọnọdụ D-PPE, onye mwakpo ahụ na-agbanwe faịlụ nhazi CI n'ebe a na-edebe ihe, ha nwere ike ịnweta ya, ma ọ bụ site n'ịkwanye mgbanwe ahụ ozugbo na alaka dịpụrụ adịpụ na-enweghị nchebe na repo, ma ọ bụ site n'itinye PR na mgbanwe ahụ site na alaka ma ọ bụ ndụdụ. Kemgbe CI pipeline A na-akọwa mmezu site na iwu dị na faịlụ nhazi CI agbanwere, iwu ọjọọ nke onye na-awakpo na-emecha na-arụ ọrụ na node build ozugbo ewuru ya. pipeline na-akpalite.
  • PPE na-apụtaghị ìhè (I-PPE): N'ọnọdụ ụfọdụ, ohere nke D-PPE adịghị maka onye iro nwere ohere ịnweta SCM ụlọ nchekwa (dịka ọmụmaatụ, ọ bụrụ na pipeline a haziri ya ka ọ dọpụta faịlụ nhazi CI site na alaka dị iche, echekwara n'otu ebe nchekwa ahụ). N'ọnọdụ dị otú ahụ, kama imebi ahụ pipeline n'onwe ya, onye mwakpo na-etinye koodu ọjọọ n'ime faịlụ ndị e zoro aka na ha pipeline (dịka ọmụmaatụ: edemede ndị e zoro aka na ha n'ime pipeline faịlụ nhazi)

N'okwu abụọ ahụ, GitHub ga-eme ihe agbanwere pipeline na-enweghị mkpa maka nyocha ma ọ bụ nkwenye gara aga.

CICD-Nsị-Pipeline-Mmezu

Nchọpụta mbụ nke PPE

Kedu ka anyị ga-esi chọpụta ụdị adịghị ike a? 

Ka anyị lee ihe atụ a pipeline :

Na ọdịnaya nke edemede shei nzuzu (runtests.sh):

The pipeline dị mfe: ebumnuche ya bụ inye onye nyocha ụfọdụ ndụmọdụ mbụ maka Pull Request Usoro nnabata (PR):

  • A ga-amalite ya arịrịọ_pull (ya bụ, mgbe ọ bụla e kere PR)
  • Ọ na-elele koodu PR (ya bụ, koodu enyere)
  • Ọ ga-eme ihe owuwu ahụ 
  • Ọ ga-agba ule na koodu enyere (dịka ọmụmaatụ site na ime ihe odide shei) 

Nzọụkwụ #3 (mee ihe owuwu ahụ) na #4 (ule ọsọ) agaghị ada ma ọ bụrụ na koodu ahụ agwakọtaghị ma ọ bụ na ọ gaghị agafe ule ndị ahụ. Ya mere, usoro ndị a na-arụ ọrụ dị ka ọnọdụ dị mkpa, mana ezughị oke, iji nabata PR. Ọ bụrụ na ọ ga-aga nke ọma, onye nchịkwa repo ga-aga n'ihu inyocha koodu enyere, dabere na nke ahụ, ọ ga-anabata/jụ/ikwu okwu na PR.  

Ihe nyocha Xygeni

Xygeni na-enye CLI ("nke"Ihe nyocha Xygeni") nke enwere ike itinye n'ime pipeline ma ọ bụ gbaa ọsọ na ahịrị iwu. Ihe nyocha Xygeni ga-ahazi ya pipelines iji lelee adịghị ike, ọ bụrụkwa na enyere GitHub PAT, ọ ga-ejikọ na GitHub iji chọpụta adịghị ike na ọkwa org/repo.

Ndepụta Ngwaahịa Xygeni

Mgbe anyị mere Xygeni Scanner na repo a, ọ na-achọpụta otu ihe bara uru (nke Ndepụta Ngwaahịa Xygeni). A ga-ejupụta ngwa ahịa ahụ n'ọtụtụ ụdị dị iche iche CI/CD akụ, dị ka:

  • The SCM System ebe a na-echekwa ebe nchekwa ahụ
  • The SCM plugins arụnyere/ejirila
  • The Ebe Nchekwa Koodu onwe ya
  • The SCM Organization ebe repo ahụ bụ nke
  • The CI/CD Pipelines na Ọrụ
  • The CI/CD System na-agba ọsọ ahụ pipelines
  • IaC Ngwa ọrụ akọwara n'ime ebe nchekwa ahụ
  • mpụga Atụmatụ
  • wdg.

N'ihe atụ anyị, anyị nwere ike inyocha Inventory site na ụdị akụ ụfọdụ (SCM- na akụ ndị metụtara CICD), yabụ anyị nwere ike ịhụ nke ahụ:

  • SCM Sistemụ ahụ bụ GitHub Cloud
  • A na-echekwa Repo na GitHub Cloud ma bụrụ nke otu nzukọ GitHub kpọmkwem
  • E nwere abụọ pipelinenke GitHub kwadoro (CI/CD sistemụ)
  • Kwa pipeline nwere otu nzọụkwụ kpọmkwem
Ọjọọ Pipeline Mmezu (PPE)

Site n'ịhọrọ ihe dị n'elu pipeline anyị nwere ike ịhụ ụfọdụ adịghị ike:

  • At pipeline ọkwa, ọ na-adịghị ike maka ha abụọ Direct na PPE na-apụtaghị ìhè.

Anyị nwere ike ịhụ nkọwa nke ndị ahụ e merụrụ ahụ Pipeline Nsogbu mmejuputa

Ọjọọ Pipeline Mmezu (PPE)
Ọjọọ Pipeline Mmezu (PPE)

Xygeni chọpụtara na ọ bụ adịghị ike na D-PPE n'ihi na a na-akpali ya na otu Pull Request ihe omume na enweghị njikwa nchekwa ọzọ, yabụ onye ọrụ repo ọ bụla nwere ike ịgbanwe pipeline a ga-emekwa mgbanwe ndị ahụ n'enweghị nyocha ma ọ bụ nkwenye ọ bụla. 

N'otu aka ahụ, Xygeni na-achọpụtakwa na ọ bụ adịghị ike na I-PPE n'ihi oku a na-akpọ na mkpụrụ edemede shei sitere na pipeline: onye ọrụ repo ọ bụla nwere ike ịgbanwe edemede shei ahụ, a ga-emekwa mgbanwe ndị ahụ na-enweghị nyocha ma ọ bụ nkwenye ọ bụla.

Ị chọrọ ịmatakwu?

Iji PPE eme ihe

Iji jiri PPE mee ihe, ka anyị tụlee ọnọdụ ebe enwere ihe ndị dị mkpa ụdị ndị ọrụ repo abụọ:

  • An onye ọrụ dị n'ime (onye mmepụta ime ụlọ na-arụ ọrụ na repo ahụ), yana ikike ide ihe na repo ahụ, yana ikike ide ihe na repo ahụ.
  • An onye ọrụ mpụga (onye mmepụta ihe nke na-arụ ọrụ na repo ahụ mana ọ gụrụ ikike na repo ahụ), ya bụ, a naghị ekwe ka ọ gbasaa repo ahụ ma manye ya ịrụ ọrụ na ndụdụ.

Ka anyị were ya na ha abụọ bụ ndị mwakpo obi ọjọọ (ma ọ bụ ndị na-eme ihe ọjọọ mere ka ha yie). Ihe nchekwa ahụ nwere ihe nzuzo ụfọdụ ma ha abụọ chọrọ. izu ohi ihe nzuzo repo ma ziga ya na sava nke ndị na-eji ngwa hacker achịkwa. Iji mee ya, ha ga-eji Poisoned mee ihe. Pipeline Nsogbu mmejuputa nke pipeline.

cicd-demo-min

N'ọnọdụ abụọ ahụ (onye ọrụ mpụga na nke ime), ha na-emepe Pull Request yana mgbanwe ndị ahụ:

  • The pipeline a na-agbanwekwa edemede shei ahụ na Gụọ ihe nzuzo ahụ site na gburugburu ebe obibi na ziga ya na sava nke onye na-achịkwa hacker ji.

Mgbanwe nwere ike ịbụ dị ka ndị a:

mgbanwe cicd
mmegbu cicd

Ndị ọrụ abụọ ahụ ga-emepụta otu Pull Request na mgbanwe ndị ahụMgbe e mepụtara PR, GitHub ga-eme mgbanwe abụọ ahụ (na-enweghị mkpa nyocha ma ọ bụ nkwenye gara aga), nke na-eme ka ihe ndị a pụta ìhè:

Top10-CICD-v1.0-9

Otu ihe ahụ maka ndị na-ede na ndị na-agụ akwụkwọ, N'ọnọdụ abụọ ahụ, a na-eme D-PPE na I-PPE, na ihe dị iche na onye na-agụ akwụkwọ ahụ enweghị ike ịnweta ihe nzuzo ndị ahụ. (!!!!) 

Ihe kpatara nke a bụ n'ihi na, ọ bụrụ na PR sitere na ndụdụ, GitHub anaghị ekwe ka ịnweta ihe nzuzo repo. Ọ bụ ezie na onye na-agụ akwụkwọ ahụ enweghị ike ịgụ ihe nzuzo ahụ, ọ ka nwere ike ịgba ọsọ mmemme ọ bụla ọzọ. Ihe atụ mwakpo nkịtị bụ ịmepụta PRs nke na-ebudata onye na-egwuputa crypto, yabụ onye na-agba ọsọ GitHub ga-eme onye na-egwuputa crypto mgbe ọ na-eme ihe nsí. pipeline.

N'ezie, ebe a abụghị ebe nchekwa!! Kedu ihe onye nchịkwa repo nwere ike ime iji zere ya?

Mgbe obere oge gachara na Google, onye nchịkwa repo kpebiri ịgbanwe mgbanwe ahụ pipeline a ga-akpalite ya na pull_request_target ihe omume. Gịnị kpatara ya? Maka pipelines nke a na-akpọ na pull_request_target anaghị ekwe ka e mee ya pipeline mgbanwe, ya bụ, n'agbanyeghị mgbanwe ọ bụla onye ọrụ mere na "mbụ" pipeline a ga-egbu.

Dịka anyị si kwuo, mwakpo ahụ ga-adị ka nke mbụ. Ihe ga-eme mgbe nke a gasịrị pipeline mgbanwe? 

ppe

Dị ka a tụrụ anya ya, A naghị eme D-PPE mana, n'ihi na I-PPE ka dị, onye na-agụ akwụkwọ ahụ nwere ike ịnweta ihe nzuzo repo ugbu a!!! 

Gịnị bụ ihe mere onye na-agụ akwụkwọ ji enwe ike ịnweta ihe nzuzo ugbu a? pipeline enweghị ike ịgbanwe, ọ ka nwere ike ịgbanwe edemede shei ahụ. Mgbe a pipeline a na-akpali ya na pull_request_target, a ga-eme ya n'ọnọdụ pụrụ iche so ọ ga-abụkwa ihe odide shei, nke na-eme ka edemede shei ahụ nwee ike ịnweta ihe nzuzo repo!!

Usoro Mgbochi

GitHub na-enye ụfọdụ usoro iji chebe megide PR ọjọọ. 

Iwu nchekwa alaka

Site na GitHub, ị nwere ike ịkọwa Iwu Nchedo Alaka karịa alaka ahọpụtara.

Maka alaka gị echekwara, ị nwere ike ịkọwapụta amụma nke chọrọ a pull request tupu ijikọ ọnụ (nakwa ọnọdụ ndị ọzọ dịka ọnụọgụ nkwenye achọrọ, nyocha sitere n'aka ndị nwe koodu, wdg.)

Ọnọdụ ole na ole kwesịrị ịtụle pụrụ iche bụ:

  • "Kwe ka ndị ome ihe a kapịrị ọnụ gafere ihe achọrọ pull requests". 
  • "Ekwela ka ịgafe ntọala ndị dị n'elu"

Ọ bụ ezie na ọtụtụ ọnọdụ ndị a na-eme ka iwu ahụ sie ike, ndị a na-ebelata iwu ahụ, nke ahụ nwekwara ike ime ka e nwee ohere ime ihe ọjọọ, dịka ọmụmaatụ, ma ọ bụrụ na ndị "nwere ihe ùgwù" zuru akwụkwọ ikike.

Machibido ikike GITHUB_TOKEN (ihe kacha nta)

Machibido ikike akara GitHub naanị maka ndị achọrọ; n'ụzọ dị otu a, ọbụlagodi ma ọ bụrụ na ndị mwakpo ahụ emee ihe ọjọọ megide gị pipeline, ha agaghị enwe ike ime ọtụtụ ihe.

Zere njikọ eriri site na iji pipeline mgbanwe env

Mgbe ọ bụla ị na-eji ụfọdụ mgbanwe ntinye na gị pipeline, mara na e kwesịrị iwere ha dịka data "enweghị ntụkwasị obi" dịka ndabara (onye ọrụ ikpeazụ na-achịkwa ọdịnaya ha). Lee Ọrụ na usoro ọrụ a na-atụkwasịghị obi dị nchebe na Mụta ihe gbasara Github.

I kwesịrị iji mgbanwe gburugburu ebe obibi tinye mgbanwe ntinye n'ime edemede kama iji njikọ eriri.

Usoro ọrụ na ihe achọrọ maka nkwenye

n'ihi na ọha ebe nchekwa, GitHub na-enye ohere ịkọwapụta otu esi arụ ọrụ na PR "mpụga"

Ntọala nhazi GitHub (“Org >> Ntọala >> Omume >> Izugbe”) ka o doo anya otu esi ejikwa PR mpụga:

ndụdụ-dọpụta-nkeji

Site na ndabara, GitHub ga-achọ nkwenye PR maka ndị na-enye aka nke mbụ, nke na-eme ka mwakpo arịrịọ ọjọọ dịkwuo mgbagwoju anya. Agbanyeghị, onye na-awakpo ahụ nwere ike inweta ntụkwasị obi nke ndị na-elekọta ọrụ ahụ dịka ọmụmaatụ site na itinye aka na ụfọdụ ndị aka ha dị ọcha pull request tupu mwakpo ahụ n'ezie. 

N'echiche a, ihe Nhọrọ nke atọ (Ịchọ nkwenye maka ndị niile na-arụkọ ọrụ n'èzí) na-agbakwụnye ọkwa njikwa dị elu. 

n'ihi na onwe ebe ọ bụ na GitHub na-enyekwa njikwa bara uru ma na ọkwa Organization- na Repo. 

Ndụdụ-dọpụta2

"Gbaa usoro ọrụ site na Pull Requests"(anaghị elele ya na ndabara) na-enye ndị ọrụ ohere ịgba ọsọ ọrụ site na fork PRs (iji GITHUB_TOKEN nwere ikike ọgụgụ naanị na enweghị ohere ịnweta ihe nzuzo). Site na ịhọrọ nhọrọ a yana nke ikpeazụ ("Chọrọ nkwenye maka usoro ọrụ PR fork"), ị nwere ike iru iwu yiri nke ahụ na ebe nchekwa nkeonwe (dịka egosiri n'elu). 

Dịka anyị hụrụ na ihe PPE na-eme site n'aka onye na-agụ akwụkwọ, na-enye ohere ịgba ọsọ usoro ọrụ site na fork pull requests ọ dịghị mma!!

Nhọrọ ndị fọdụrụ (""Zipu akara ederede na usoro ọrụ site na ndụdụ pull requests"Na"Zipu ihe nzuzo na ihe mgbanwe na usoro ọrụ site na maka pull requests") belata ọkwa nchekwa etinyere na fork PRs. 

Ị nwere ike ịkọwa amụma fork a ma n'ọkwa nhazi ma ọ bụ n'ọkwa Repo. Ọ bụrụ na agbanyụrụ amụma ahụ n'ọkwa org, agaghị enwe ike ịgbanwu ya n'ọkwa repo. Mana, ọ bụrụ na agbanyụrụ amụma ahụ n'ọkwa org, enwere ike ịgbanwu ya n'ọkwa repo.

Ihe ịma aka OWASP

Recap

Anyị nwere olileanya na ị hụla ihe ọ pụtara inwe ụfọdụ pipeline adịghị ike maka nsị Pipeline Mmezu. Ọ dị oke mfe ime commit onye na-adịghị ike pipeline, ọ na-esikwa ike ide nke dị nchebe. 

Ya mere, ọ bara uru nke ukwuu iji Xygeni Scanner iji mara maka adịghị ike ndị dị otú ahụ.

Ị gaghị edozi ihe ọjọọ ma ọ bụrụ na ị maghị na ọ dị adị!! 

Mana... A ka nwere ajụjụ na-echere… Kedu otu esi zere I-PPE? 

Nke a ga-abụ isiokwu nke post anyị na-esote 🙂 … Nsị na-apụtaghị ìhè Pipeline Mmezu (I-PPE) !!

Nsị na-apụtaghị ìhè Pipeline Mmezu (I-PPE)

Mmikpu n'ime CI/CD PipelineNsogbu ndị dị ize ndụ (II)

Nsị na Ịtinye Koodu n'ime Ihe

Mmikpu n'ime CI/CD PipelineNsogbu ndị dị ize ndụ (III)

Ichebe megide nsị ihe ochie site na ihe akaebe ngwanrọ

Mmikpu n'ime CI/CD PipelineNsogbu ndị dị ize ndụ (IV)
ngwaọrụ nyocha sca-ngwaọrụ-ngwanrọ-nchịkọta-ngwaọrụ nyocha
Mee ka ihe egwu dị na ngwanrọ gị buo ibu, dozie ya, ma chekwaa ya
Nweta Akaụntụ N'efu gị.
Enweghị kaadị akwụmụgwọ achọrọ.

Chekwaa mmepe na nnyefe ngwanrọ gị

ya na Xygeni Product Suite