Voapoizina-Pipeline-Famonoana

A Deep Dive in CI/CD PipelineFahalemena (I): Voapoizina Pipeline Famonoana (PPE)

Fampidirana mitohy sy fametrahana mitohy (CI/CD) pipelinemitana anjara toerana lehibe amin'ny fanamorana ny fampivoarana rindrambaiko. Na izany aza, satria ireo pipelineMiha-zava-dehibe hatrany ny fiarovana azy ireo amin'ny fahalemena. Mifantoka amin'ny famahana risika lehibe hita ao amin'ny OWASP Top-10 ity fanadihadiana lalina ity. CI/CD Loza ateraky ny fiarovana: Voapoizina Pipeline Famonoana (PPE).

Sary 10 ambony indrindra an'ny OWASP

Inona no atao hoe voapoizina Pipeline Famonoana (PPE)

Araka ny OWASP Top-10 CI/CD Loza ateraky ny fiarovana, "misy poizina Pipeline famonoana (PPE) ny risika dia manondro ny fahafahan'ny mpanafika miditra amin'ny rafitra fanaraha-maso loharano - ary tsy miditra amin'ny tontolo fananganana - mba hanodinkodinana ny fizotran'ny fananganana amin'ny alàlan'ny fampidirana kaody/baiko ratsy ao amin'ny fananganana pipeline fanahafana, tena izy 'fanapoizinana' ny pipeline ary mampiasa kaody ratsy ho ampahany amin'ny fizotran'ny fananganana"

Raha fintinina, Voapoizina Pipeline Ny fanatanterahana (PPE) dia vokarina rehefa afaka manova ny endrika ny mpanafika pipeline lojika.

Misy roa variants:

  • PPE mivantana (D-PPE): Ao anatin'ny toe-javatra D-PPE, manova ny rakitra fikirakirana CI ny mpanafika Ao anaty tahiry iray dia afaka miditra amin'izany izy ireo, na amin'ny alàlan'ny fanosehana mivantana ny fanovana any amin'ny sampana lavitra tsy voaaro ao amin'ny repo, na amin'ny alàlan'ny fandefasana PR miaraka amin'ny fanovana avy amin'ny sampana na fork. Hatramin'ny CI pipeline Ny fanatanterahana dia voafaritry ny baiko ao amin'ny rakitra fikirakirana CI novaina, ny baiko ratsy ataon'ny mpanafika dia miasa amin'ny farany ao amin'ny node build rehefa vita ny build. pipeline dia trigger.
  • PPE tsy mivantana (I-PPE): Amin'ny tranga sasany, ny mety hisian'ny D-PPE dia tsy azon'ny fahavalo idirana SCM tahiry (ohatra raha ny pipeline dia voalamina mba hisintona ny rakitra fikirakirana CI avy amin'ny sampana misaraka sy voaaro ao amin'ny tahiry mitovy). Amin'ny toe-javatra toy izany, toy izay hanapoizina ny pipeline ny tenany, ny mpanafika dia mampiditra kaody maloto ao anaty rakitra resahin'ny pipeline (ohatra: scripts referansa avy ao anatin'ny pipeline rakitra fikirakirana)

Amin'ny tranga roa, Hanatanteraka ny novaina ny GitHub pipeline tsy mila famerenana na fankatoavana teo aloha.

CICD-Voapoizina-Pipeline-Famonoana

Fitiliana mialoha ny PPE

Ahoana no ahafahantsika mamantatra ity karazana fahalemena ity? 

Andeha hojerentsika ity ohatra ity pipeline :

				
					name: PR CI

on:
  pull_request:
    branches: [ main ]

env:
  MY_SECRET: ${{ secrets.MY_SECRET }} 

jobs:
  pr_build_test_and_merge:
    runs-on: ubuntu-latest

    steps:
      # checkout PR code
      - name: Checkout repository
        uses: actions/checkout@v4

      # Simulation of a compilation
      - name: Building ...
        run: |
          echo $MY_SECRET
          mkdir ./bin
          touch ./bin/mybin.exe
     
      # Simulation of running tests
      - name: Running tests ...
        id : run_tests
        run: |
          echo Running tests..
          chmod +x runtests.sh
          ./runtests.sh "${{ github.event.pull_request.user.login }}" "${{ github.workflow }}"
          echo Tests executed.    
				
			

Ary ny votoatin'ny script shell dummy (runtests.sh):

				
					#!/usr/bin/bash
echo "Executing Tests script [from user $1 at $2]" >> runtests.out
exit 0
				
			

The pipeline dia tena tsotra: ny tanjony dia ny hanome soso-kevitra mialoha ho an'ny mpandinika Pull Request Dingana fanekena (PR):

  • Ho alefa amin'ny fangatahana_pull (ohatra isaky ny misy PR noforonina)
  • Manamarina ny kaody PR (ohatra ny kaody nomena) izy io
  • Hanao ny fanorenana izany 
  • Hanao fitsapana amin'ny kaody nomena izy io (ohatra amin'ny alàlan'ny fanatanterahana script shell) 

Tsy hahomby ny dingana #3 (manaova ny fananganana) sy #4 (fampandehanana ny fitsapana) raha tsy voaangona ny kaody na tsy mahomby amin'ny fitsapana. Noho izany, ireo dingana ireo dia miasa ho fepetra ilaina, saingy tsy ampy, mba hanaiky ny PR. Raha mahomby, ny mpitantana ny repo dia hanohy handinika ny kaody nomena ary, mifototra amin'izany, dia hanaiky/handà/hanome hevitra ny PR izy.  

Mpijery Xygeni

Xygeni manome CLI (ny "Mpijery Xygeni") izay azo ampidirina ao anaty pipeline na ampiasaina amin'ny baiko. Ny Xygeni Scanner dia hikirakira ny pipelines mba hijerena ireo fahalemena, ary raha misy GitHub PAT omena, dia hifandray amin'ny GitHub izy io mba hahitana ireo fahalemena eo amin'ny sehatry ny org/repo.

Lisitry ny Xygeni

Rehefa manatanteraka ny Xygeni Scanner amin'ity repo ity isika dia mahita andiana fananana mahasoa (ny Lisitry ny Xygeni). Hofenoina karazana zavatra maro samihafa ny lisitra CI/CD fananana, toy ny:

  • The SCM System toerana itahirizana ny repo
  • The SCM Plugins napetraka/nampiasaina
  • The Tahiry Kaody mihitsy
  • The SCM fikambanana izay an'ny repo
  • The CI/CD Pipelinesy Asa
  • The CI/CD System mihazakazaka ny pipelines
  • IaC Loharanon-karena voafaritra ao amin'ny repo
  • External miankina
  • etc ..

Ao amin'ny ohatra asehontsika, afaka manivana ny Lisitra araka ny karazana fananana manokana isika (SCM- sy ireo fananana mifandraika amin'ny CICD), ka hitantsika fa:

  • SCM GitHub Cloud ny rafitra
  • Ny Repo dia voatahiry ao amin'ny GitHub Cloud ary an'ny Fikambanana GitHub manokana.
  • Misy roa pipelines ampiasain'ny GitHub (CI/CD rafitra)
  • rehetra pipeline misy dingana iray manokana
misy poizina Pipeline Famonoana (PPE)

Amin'ny fisafidianana ireo etsy ambony ireo pipeline afaka mahita fahalemena sasany isika:

  • At pipeline ambaratonga, mora voan'ny roa tonta izy Direct sy PPE ankolaka.

Afaka mahita ny antsipirian'ireo voapoizina isika Pipeline Fahalemena amin'ny fanatanterahana

misy poizina Pipeline Famonoana (PPE)
misy poizina Pipeline Famonoana (PPE)

Hitan'i Xygeni fa izany mora voan'ny D-PPE satria miasa amin'ny a Pull Request hetsika ary tsy misy fanaraha-maso fiarovana fanampiny, ka afaka manova ny pipeline ary ireo fanovana ireo dia hotanterahina tsy misy famerenana na fankatoavana. 

Amin'io heviny io ihany, hitan'i Xygeni ihany koa fa mora voan'ny I-PPE noho ny fiantsoana ny script shell avy amin'ny pipeline: afaka manova ny script shell ny mpampiasa repo rehetra ary ireo fanovana ireo dia hotanterahina tsy misy famerenana na fankatoavana.

Te hahalala bebe kokoa ve ianao?

Fampiasana PPE

Mba hampiasana ny PPE dia andeha hojerentsika ny toe-javatra iray izay misy karazana mpampiasa repo roa:

  • An mpampiasa anatiny (mpamorona anatiny miasa amin'io repo io), miaraka amin'ny fahazoan-dàlana hanoratra ao amin'ny repo
  • An mpampiasa ivelany (mpamorona rindrambaiko miasa amin'io repo io saingy manana fahazoan-dàlana hamaky ao amin'ny repo), izany hoe tsy mahazo manasaraka ny repo ary voatery miasa amin'ny fork.

Andeha hatao hoe samy mpanafika ratsy fanahy izy roa (na mody miseho ho toy ny mpilalao ratsy fanahy). Mirakitra tsiambaratelo ny repo ary samy te-hahazo izany izy roa. hangalatra ny tsiambaratelon'ny repo ary alefa any amin'ny mpizara fehezin'ny mpijirika izany. Mba hanaovana izany, dia hanararaotra ny Poisoned izy ireo Pipeline Fahalemena amin'ny fanatanterahana ny pipeline.

cicd-demo-min

Amin'ireo tranga roa ireo (mpampiasa ivelany sy anatiny), dia manokatra a Pull Request miaraka amin'ireo fanovana mitovy:

  • The pipeline ary novaina ny script shell ny vakio ny tsiambaratelo avy amin'ny tontolo iainana sy alefaso any amin'ny mpizara fehezin'ny mpijirika izany

Mety ho toy izao manaraka izao ny fanovana:

fanovana cicd
cicd-exploit

Samy hamorona Pull Request miaraka amin'ireo fanovanaRehefa noforonina ny PR, Hanatanteraka ireo fanovana roa ireo ny GitHub (tsy mila famerenana na fankatoavana mialoha), ka miteraka ireto manaraka ireto:

Top10-CICD-v1.0-9

Mitovy amin'izany ho an'ireo mpampiasa manoratra sy mamaky teny, amin'ireo tranga roa ireo dia tanterahina ny D-PPE sy ny I-PPE, miaraka amin'ny fahasamihafana izay Tsy afaka miditra amin'ireo tsiambaratelo ilay mpampiasa mamaky. (!!!!) 

Izany antony izany dia satria, Raha toa ka avy amin'ny fork ny PR, dia tsy mamela ny fidirana amin'ny tsiambaratelon'ny repo ny GitHub. Na dia tsy afaka mamaky ny tsiambaratelo aza ny mpampiasa mamaky, dia mbola afaka mampiasa programa hafa izy. Ohatra mahazatra amin'ny fanafihana ny famoronana PR izay misintona mpitrandraka crypto, ka ny GitHub runner dia hampihatra ny mpitrandraka crypto rehefa manatanteraka poisoned. pipeline.

Mazava ho azy fa tsy tontolo azo antoka ity!! Inona no azon'ny mpitantana ny repo atao mba hisorohana izany?

Rehefa avy nikaroka tao amin'ny Google ny mpitantana ny repo dia nanapa-kevitra ny hanova ny pipeline ho voahetsika amin'ny pull_request_target hetsika. Nahoana? Satria pipelineTsy mamela ny fanatanterahana ny s rehefa miasa amin'ny pull_request_target pipeline fanovana, izany hoe na dia eo aza ny fanovana rehetra nataon'ny mpampiasa ny "tany am-boalohany" pipeline hovonoina.

Araka ny ohatra nasehontsika, dia hitovy amin'ny teo aloha ihany ny fanafihana. Inona no hitranga aorian'izany? pipeline fanovana? 

ppe

Araka ny efa nampoizina, Tsy tanterahina ny D-PPE fa, satria mbola eo ny I-PPE, Afaka miditra amin'ny tsiambaratelon'ny repo izao ny mpampiasa mamaky!!! 

Inona no antony ahafahan'ny mpampiasa mamaky miditra amin'ny tsiambaratelo izao? Na dia pipeline tsy azo ovaina, mbola azo atao ny manova ny script shell. Rehefa a pipeline Raha miasa amin'ny pull_request_target ny rindrankajy dia hotanterahina amin'ny fomba privileged so ho script shell ihany koa izany, ka mahatonga ny script shell afaka miditra amin'ny tsiambaratelon'ny repo!!

Fiarovana mialoha

Manome fepetra vitsivitsy hiarovana amin'ny fifandraisana amin'ny olona manana olana amin'ny fifandraisana ny GitHub. 

Fitsipika momba ny fiarovana ny sampana

Amin'ny GitHub dia azonao atao ny mamaritra ny Fitsipika Fiarovana Sampana amin'ireo sampana voafantina.

Ho an'ny sampana voaaro anao, azonao atao ny mamaritra politika iray izay mitaky a pull request alohan'ny hampiarahana (ary koa ireo fepetra fanampiny toy ny isan'ny fankatoavana takiana, ny famerenana avy amin'ny tompon'ny kaody, sns.)

Ireto misy fepetra vitsivitsy mendrika hodinihina manokana:

  • "Avelao ireo mpilalao voafaritra handalo izay ilaina pull requests". 
  • "Aza avela ny fandalovana ireo fikirana etsy ambony"

Na dia manampy hamafin'ny politika aza ny ankamaroan'ny fepetra, ireo fepetra ireo kosa dia manalefaka ny politika ary mety hiteraka varavarana misokatra ho an'ny asa ratsy, ohatra, raha toa ka angalarin'ireo mpisehatra "manana tombontsoa" ny fahazoan-dàlana.

Famerana ny fahazoan-dàlana GITHUB_TOKEN (tsy dia manan-kery loatra)

Fero amin'ireo takiana ihany ny fahazoan-dàlana GitHub token; amin'izany fomba izany, na dia mahomby amin'ny fanimbana ny anao aza ireo mpanafika pipeline, tsy ho afaka hanao zavatra firy izy ireo.

Fadio ny fampidirana tady amin'ny alalan'ny fampiasana pipeline miovaova env

Isaky ny mampiasa variables input sasany ao amin'ny anao ianao pipeline, fantaro fa tokony hoheverina ho angon-drakitra "tsy azo itokisana" izy ireo (ny mpampiasa farany no mifehy ny votoatiny). Jereo Azo antoka ny asa sy ny fizotran'ny asa tsy azo itokisana sy Mianara momba ny Github Actions.

Tokony hampiasa "environment variables" foana ianao mba hampidirana "input variables" ao anatin'ny script fa tsy hampiasa "string interpolation".

Fizotran'ny asa sy ny fepetra takiana amin'ny fankatoavana

Fa -bahoaka repos, GitHub dia mamela ny famaritana Ahoana ny fomba fiasana amin'ny PR "ivelany". 

Ny Fikirana momba ny fandaminana ao amin'ny GitHub ("Org >> Settings >> Actions >> General") dia mamaritra ny fomba fitantanana ny fifandraisana amin'ny vahoaka ivelany:

fisintonana fork-min

Amin'ny ankapobeny, ny GitHub dia mitaky ny fankatoavan'ny PR ho an'ireo mpandray anjara voalohany, ka mahatonga ny fanafihana fangatahana ratsy ho sarotra kokoa. Na izany aza, mety hahazo ny fitokisan'ireo mpikarakara tetikasa ilay mpanafika, ohatra, amin'ny alàlan'ny fanomezana ampahany tsy manan-tsiny. pull request alohan'ny tena fanafihana. 

Amin'io lafiny io, ny Ny safidy faha-3 (Mitaky ny fankatoavan'ny mpiara-miasa ivelany rehetra) dia manampy ambaratonga ambony kokoa amin'ny fanaraha-maso. 

Fa manokana repos, ny GitHub dia manome fanaraha-maso mahasoa ihany koa na eo amin'ny sehatry ny Fikambanana na ny Repo. 

Fisintonana foroka 2

"Ampandehano ny Workflows avy amin'ny Pull Requests"(tsy voamarika amin'ny alàlan'ny default) dia ahafahan'ny mpampiasa mampandeha workflows avy amin'ny fork PRs (mampiasa GITHUB_TOKEN miaraka amin'ny fahazoan-dàlana mamaky fotsiny ary tsy misy fidirana amin'ny tsiambaratelo). Amin'ny fisafidianana ity safidy ity miaraka amin'ny farany ("Mitaky fankatoavana ho an'ny workflows fork PRs"") , afaka mahazo politika mitovy amin'ny repos manokana ianao (araka ny aseho etsy ambony). 

Araka ny hitantsika tamin'ny fampiasana PPE avy amin'ny mpampiasa iray novakiana, mamela ny fampandehanana ny workflows avy amin'ny fork pull requests tsy azo antoka!!

Ireo safidy sisa ("Alefaso any amin'ny workflows avy amin'ny fork ny tokens fanoratana pull requests"Ary"Alefaso any amin'ny workflows ny tsiambaratelo sy ny variables avy amin'ny for pull requests") mampihena ny haavon'ny fiarovana ampiharina amin'ny PR fork. 

Azonao faritana ity politika fork ity na eo amin'ny sehatry ny fikambanana na eo amin'ny sehatry ny Repo. Raha tsy mandeha amin'ny sehatry ny org ny politika, dia tsy azo alefa amin'ny sehatry ny repo. Saingy, raha mandeha amin'ny sehatry ny org ny politika, dia azo alefa amin'ny sehatry ny repo.

Fanamby OWASP

Recap

Manantena izahay fa efa hitanao ny fiantraikan'ny fananana sasany pipeline mora voan'ny poizina Pipeline Fampiharana. Mora loatra ny commit marefo pipeline, ary sarotra ny manoratra iray azo antoka. 

Noho izany dia tena ilaina ny mampiasa ny Xygeni Scanner mba hahafantarana ireo fahalemena toy izany.

Tsy afaka mamaha olana amin'ny "vuln" ianao raha tsy fantatrao tsara ny fisiany!! 

Saingy… Mbola misy fanontaniana miandry… Ahoana no fomba hisorohana ny I-PPE? 

Ity no ho lohahevitry ny lahatsoratra manaraka 🙂 … Voapoizina ankolaka Pipeline Famonoana (I-PPE) !!

Voapoizina ankolaka Pipeline Famonoana (I-PPE)

A Deep Dive in CI/CD PipelineFahalemena (II)​

Fanapoizinana amin'ny artifact sy tsindrona kaody

A Deep Dive in CI/CD PipelineFahalemena (III)

Fiarovana amin'ny fanapoizinana artifact amin'ny alàlan'ny fanamarinana rindrambaiko

A Deep Dive in CI/CD PipelineFahalemena (IV)
fitaovana-fandrafetana-rindrambaiko-sca-fitaovana-famakafakana-firafitra
Ataovy laharam-pahamehana, amboary ary arovy ny loza mety hitranga amin'ny rindrambaikonao
Alao ny kaontinao maimaim-poana.
Tsy mila carte de crédit.

Arovy ny fampandrosoana sy ny fanaterana ny rindrambaikoo

miaraka amin'ny Xygeni Product Suite