Fa'a'ona-Pipeline-Fa'asalaga

Ose Maulu loloto i totonu CI/CD PipelineVaivaiga (I): Fa'a'ona Pipeline Fa'asalaga (PPE)

Feso'ota'iga Fa'aauau ma le Fa'atinoina Fa'aauau (CI/CD) pipelinee taua tele le sao o nei mea i le faafaigofieina o le atinaʻeina o polokalama faakomepiuta. Ae ui i lea, e pei o nei mea pipelineA o faʻateleina le taua, o le taua tele o le puipuia o i latou mai vaivaiga ua faʻateleina foʻi le manino. O lenei suʻesuʻega loloto e taulaʻi i le faʻatalanoaina o se lamatiaga iloga ua faʻailoa mai i le OWASP Top-10 CI/CD Lamatiaga o le Saogalemu: Fa'a'ona Pipeline Fa'asalaga (PPE).

Ata-pito i luga-10-o-le-OWASP

O le ā le mea ua Fa'a'onaina Pipeline Fa'asalaga (PPE)

E tusa ai ma le OWASP Top-10 CI/CD Lamatiaga o le Saogalemu, "Faʻasalaina Pipeline faatinoga (PPE) o le lamatiaga e faasino i le gafatia o se tagata osofaʻi e maua ai le avanoa i faiga faʻatonutonu punaoa - ma e aunoa ma le avanoa i le siosiomaga fausia - e fa'afoe le fa'agasologa o le fausiaina e ala i le tuiina o tulafono/poloaiga leaga i totonu o le fausiaina pipeline faatulagaga, moni lava 'fa'a'onaina' le pipeline ma le faʻatinoina o le code leaga o se vaega o le faagasologa o le fausiaina"

I ni nai upu, Fa'a'ona Pipeline E gaosia le Fa'atinoina (PPE) pe a e mafai e le tagata osofaʻi ona suia le pipeline losika.

E lua eseesega:

  • PPE tuusa'o (D-PPE): I se tulaga o le D-PPE, Ua suia e le tagata osofaʻi le faila faʻatulagaina o le CI i totonu o se fale teu oloa latou te maua le avanoa i ai, e ala i le tuleia sa'o o le suiga i se lala mamao e le'i puipuia i luga o le repo, pe ala i le tu'uina atu o se PR fa'atasi ai ma le suiga mai se lala po'o se tui. Talu mai le CI pipeline O le faʻatinoga e faʻamatalaina e poloaiga i le faila faʻatulagaina CI ua suia, o poloaiga leaga a le tagata osofaʻi e iu lava ina tamoʻe i le node build pe a uma le build pipeline ua faaoso.
  • PPE lē tuusa'o (I-PPE): I nisi tulaga, o le avanoa o le D-PPE e le avanoa i se fili e iai le avanoa i se SCM fale teu oloa (e pei o le pipeline ua fa'atulagaina e toso mai le faila fa'atulagaina CI mai se lala ese'ese ma puipuia i totonu o le fale teuoloa lava e tasi). I se tulaga faapena, nai lo le faʻaonaina o le pipeline lava ia, e fa'aofi e se tagata osofa'i le code leaga i totonu o faila o lo'o fa'asino i ai le pipeline (mo se faʻataʻitaʻiga: tusitusiga o loʻo faʻasino i ai mai totonu o le pipeline faila fa'atulagaina)

I tulaga uma e lua, O le a fa'atino e GitHub le fa'asa'oga ua suia pipeline e aunoa ma se manaʻomia o se iloiloga muamua poʻo se faʻamaoniga.

CICD-Ua Fa'a'ona-Pipeline-Fa'asalaga

Iloa vave o PPE

E faʻapefea ona tatou iloa lenei ituaiga o vaivaiga? 

Se'i o tatou va'ai i lenei fa'ata'ita'iga 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.    
				
			

Ma le anotusi o se tusitusiga o le atigi pepelo (runtests.sh):

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

le pipeline e matuā faigofie lava: o lona faʻamoemoega ia tuʻuina atu i le tagata suʻesuʻe ni fautuaga muamua mo le Pull Request Faiga e talia ai (PR):

  • O le a fa'agaoioia i le talosaga_toso (e pei o soo se taimi e faia ai se PR)
  • E siaki le numera PR (e pei o le numera na saofagā i ai)
  • O le a faia ai le fausiaina 
  • O le a faʻatinoina ni suʻega i luga o le code na tuʻufaʻatasia (e pei o le faʻatinoina o se shell script) 

O Laasaga #3 (faia le fausiaina) ma le #4 (fa'atautaia le suega) o le a le manuia pe afai e le mafai ona fa'apipi'i le code pe le pasia suega. O lea la, o nei laasaga e fai ma tulaga mana'omia, ae le lava, e talia ai le PR. Afai e manuia, o le a fa'aauau pea ona iloilo e le pule o le repo le code na tu'uina atu ma, e fa'atatau i lena mea, o le a ia talia/teena/fa'aalia se fa'amatalaga i le PR.  

Xygeni Scanner

Xygeni e maua ai se CLI (le "Xygeni Scanner") e mafai ona fa'apipi'iina i totonu o se pipeline pe fa'agaoioia i se laina fa'atonu. O le a fa'agasolo e le Xygeni Scanner le pipelines e siaki ai ni vaivaiga ma, afai e tuʻuina atu se GitHub PAT, o le a fesoʻotaʻi atu i le GitHub e suʻe ai ni vaivaiga i le tulaga org/repo.

Lisi o Mea'ai a Xygeni

A matou faʻatinoina le Xygeni Scanner i luga o lenei repo, e maua ai se seti aoga o aseta (le Lisi o Mea'ai a Xygeni). O le a fa'atumuina le Lisi o Mea'ai i le tele o ituaiga eseese o CI/CD aseta, pei o le:

  • le SCM System o fea e teu ai le repo
  • le SCM Plugins fa'apipi'i/fa'aaogaina
  • le Nofoaga e teu ai tulafono lava ia
  • le SCM faalapotopotoga o fea e iai le repo
  • le CI/CD Pipelinema Galuega
  • le CI/CD System tamoʻe le pipelines
  • IaC punaoa fa'amatalaina i totonu o le repo
  • ese Dependencies
  • ma isi.

I la tatou faʻataʻitaʻiga, e mafai ona tatou faʻamamāina le Lisi o Mea e ala i se ituaiga aseta faapitoa (SCM- ma aseta e fesoʻotaʻi ma le CICD), o lea e mafai ai ona tatou vaʻaia:

  • SCM o le polokalama o le GitHub Cloud
  • O le Repo e teuina i le GitHub Cloud ma e patino i se Faʻalapotopotoga GitHub faapitoa
  • E lua pipelinee fa'amalosia e le GitHub (CI/CD faiga)
  • uma pipeline o lo'o i ai se la'asaga fa'apitoa e tasi
Faʻasalaina Pipeline Fa'asalaga (PPE)

I le filifilia o mea o loʻo i luga pipeline e mafai ona tatou vaʻaia nisi o vaivaiga:

  • At pipeline tulaga, e vaivai i itu uma e lua Faatonu ma PPE lē tuusa'o.

E mafai ona tatou vaʻai i faʻamatalaga o i latou ua Poisoned Pipeline Vaivaiga o le fa'atinoina

Faʻasalaina Pipeline Fa'asalaga (PPE)
Faʻasalaina Pipeline Fa'asalaga (PPE)

Ua iloa e Xygeni e faapea vaivai i le D-PPE auā e fa'agaoioia i luga o se Pull Request mea na tupu ma e leai ni isi pulega fa'aopoopo mo le saogalemu, o lea e mafai ai e so'o se tagata fa'aoga repo ona suia le pipeline ma o na suiga o le a faatinoina e aunoa ma se iloiloga po o se faamaoniga. 

I le uiga lava lea e tasi, ua iloa foi e Xygeni e faapea vaivai i le I-PPE ona o le vala'au i le tusitusiga o le shell mai le pipeline: soʻo se tagata faʻaoga repo e mafai ona suia le tusitusiga o le atigi ma o na suiga o le a faʻatinoina e aunoa ma se iloiloga poʻo se faʻatagaga.

E te fia iloa atili?

Fa'aaogaina o PPE

Mo le faʻaaogaina o le PPE, seʻi o tatou mafaufau i se tulaga e iai ituaiga e lua o tagata faʻaoga repo:

  • An tagata fa'aoga i totonu (o se tagata atia'e i totonu o lo'o galue i lena repo), fa'atasi ai ma fa'atagaga tusitusi i luga o le repo
  • An tagata fa'aoga mai fafo (o se tagata atiaʻe mai fafo o loʻo galue i lena repo ae o loʻo i ai faʻatagaga faitau i luga o le repo), o lona uiga e le faʻatagaina e faʻalauteleina le repo ma faʻamalosia e galue i luga o se fork.

Se'i o tatou mafaufau o i la'ua uma o ni tagata osofa'i leaga (pe fa'afoliga mai e se tagata leaga). O lo'o iai i le repo se mea lilo ma e mana'omia uma e i la'ua e gaoi le mealilo o le repo ma lafo atu i se 'au'aunaga e pulea e le 'hacker'. Ina ia faia lea mea, o le a latou fa'aaogaina le Poisoned Pipeline Vaivaiga o le fa'atinoina o le pipeline.

cicd-demo-min

I tulaga uma e lua (tagata faʻaoga mai fafo ma totonu), latou te tatalaina se Pull Request faatasi ai ma suiga tutusa:

  • le pipeline ma ua suia le tusitusiga o le atigi i faitau le mea lilo mai le siosiomaga ma auina atu i se 'au'aunaga e pulea e le tagata faomea

O suiga e ono faapenei:

suiga-cicd
fa'aaogā-cicd

O le a faia e tagata faʻaoga uma se Pull Request faatasi ai ma suiga. Ina ua maeʻa ona faia le PR, O le a fa'atino e GitHub ia suiga uma e lua (e aunoa ma se manaʻoga mo se iloiloga muamua poʻo se faʻamaoniga), e mafua ai mea nei:

Top10-CICD-v1.0-9

E fa'apena fo'i mo tagata e fa'aoga le tusitusi ma le faitau, i tulaga uma e lua e fa'atinoina ai le D-PPE ma le I-PPE, faatasi ai ma le eseesega e faapea e le mafai e le tagata faitau ona maua mea lilo. (!!!!) 

O le mafuaʻaga lea ona, I le tulaga o se PR e sau mai se fork, e le faatagaina e GitHub le avanoa i mea lilo o le repo. E ui e le mafai e le tagata faʻaoga faitau ona faitau mea lilo, ae e mafai lava ona ia faʻagaoioia soʻo se isi polokalama. O se faʻataʻitaʻiga masani o osofaʻiga o le fatuina lea o PR e laʻuina mai ai se crypto miner, o lea o le a faʻatinoina e le GitHub runner le crypto miner pe a faʻatinoina se poisoned pipeline.

E le o se siosiomaga saogalemu lenei, ioe!! O le a se mea e ono faia e le pule o le repo e aloese ai mai lenei mea?

Ina ua maeʻa ni nai sailiiliga i luga o le Google, na filifili ai le pule o le repo e sui le pipeline e fa'agaoioia i luga o se talosaga_toso_taumafaiga mea na tupu. Aiseā? Auā pipelines ua fa'agaoioia i le pull_request_target e le fa'atagaina le fa'atinoina pipeline suiga, e ui lava i soʻo se suiga a le tagata faʻaoga, o le "uluai" pipeline o le a fasiotia.

I le mulimuli ai i la tatou faʻataʻitaʻiga, o le a tutusa lava le osofaʻiga ma le taimi muamua. O le a le mea o le a tupu pe a uma lenei mea pipeline suiga? 

ppe

E pei ona faʻamoemoeina, E le'i fa'atinoina le D-PPE ae, ona o loʻo iai pea le I-PPE, ua mafai nei e le tagata faitau ona maua le mealilo o le repo!!! 

O le ā le māfuaʻaga ua mafai ai nei e le tagata faitau ona maua mea lilo? E ui lava o le pipeline e le mafai ona suia, e mafai lava ona suia le tusitusiga o le shell. A. A pipeline Afai e fa'agaoioia i le pull_request_target, o le a fa'atinoina i le privileged mode so o le a avea fo'i ma tusitusiga o le atigi, ma iu ai ina maua e le tusitusiga o le atigi le avanoa i mea lilo o le repo!!

Fua Faatatau

Ua tuʻuina mai e le GitHub ni fuafuaga e puipuia ai mai faʻasalalauga faalilolilo (PRs) leaga. 

Tulafono o le puipuiga o lālā

Faatasi ai ma le GitHub e mafai ona e faʻamatalaina Tulafono Puipuiga o Lālā i luga o lālā ua filifilia.

Mo au lala puipuia, e mafai ona e faʻamaoti mai se faiga faʻavae e manaʻomia a pull request a'o le'i tu'ufa'atasia (fa'apea fo'i ma tuutuuga fa'aopoopo e pei o le aofa'i mana'omia o fa'atagaga, iloiloga mai i latou e ana le code, ma isi mea fa'apena)

O ni nai tulaga e tatau ona mafaufau faapitoa i ai:

  • "Fa'ataga tagata fai fa'atino ua fa'amaoti mai e fa'asolo ese mai mea e mana'omia pull requests". 
  • "Aua le fa'atagaina le sopo'ia o fa'atulagaga o lo'o i luga"

E ui o le tele o tuutuuga e faʻaopoopoina ai le faʻamalosia i le tulafono, ae o nei tuutuuga e faʻafaigofie ai le tulafono ma e ono aʻafia ai le avanoa e faʻatino ai gaoioiga leaga, mo se faʻataʻitaʻiga, pe afai e gaoia faʻamaoniga e tagata "faʻapitoa".

Fa'atapula'a fa'atagaga a le GITHUB_TOKEN (avanoa e le atoatoa)

Fa'atapula'a le fa'atagaga o le GitHub token i na'o mea e mana'omia; i lenei auala, tusa lava pe manuia tagata osofa'i i le fa'aleagaina o lau pipeline, e le tele se mea latou te mafaia.

Aloese mai le fa'aopoopoina o manoa e ala i le fa'aogaina pipeline fesuia'iga o le siosiomaga

Soo se taimi lava e te faʻaaogaina ai nisi fesuiaʻiga faʻaofi i lau pipeline, ia manatua e tatau ona manatu i ai i le tulaga masani o ni faʻamatalaga "e le faʻatuatuaina" (o a latou anotusi e pulea e le tagata faʻaoga mulimuli). Tagai Gaioiga e le'i fa'atuatuaina ma Faiga o Galuega e Saogalemu ma Aoao ia Github Actions.

E tatau ona e faʻaaogaina i taimi uma fesuiaʻiga o le siosiomaga e faʻaofi ai fesuiaʻiga o mea e ulufale i totonu o tusitusiga nai lo le faʻaaogaina o le faʻaopoopoga o manoa.

Fa'agasologa o galuega ma mana'oga fa'amaonia

mo lautele repos, e mafai ai e GitHub ona faʻamaoti auala e galulue ai ma PR "mai fafo"

O fa'atulagaga o le Fa'alapotopotoga a le GitHub (“Org >> Settings >> Actions >> General”) se'i fa'amaoti mai pe fa'apefea ona pulea PR i fafo:

toso-foki-min

I le tulaga masani, o le a manaʻomia e le GitHub le faʻamaoniga PR mo tagata e faia saofaga muamua, ma faigata ai osofaʻiga o talosaga leaga. E ui i lea, e mafai e le tagata osofaʻi ona maua le faʻatuatuaga a le au tausi poloketi mo se faʻataʻitaʻiga e ala i le tuʻuina atu o nisi mea e le sala. pull request a’o le’i amataina le osofa’iga moni. 

I lenei tulaga, o le O le filifiliga lona 3 (Manaʻomia le faʻatagaga mo paʻaga uma mai fafo) e faʻaopoopoina ai se tulaga maualuga o le pulea. 

mo patino repos, e maua foʻi e le GitHub le fesoasoani i le pulea i le tulaga o le Faʻalapotopotoga ma le Repo. 

Toso-fola2

"Fa'agaoioia Galuega mai Pull Requests" (e le'i siakiina i le tulaga masani) e mafai ai e tagata fa'aoga ona fa'atino galuega mai PRs fork (fa'aaogaina se GITHUB_TOKEN ma fa'atagaga faitau-na'o ma e aunoa ma se avanoa i mea lilo). I le filifilia o lenei filifiliga fa'atasi ma le filifiliga mulimuli ("Mana'omia le fa'amaoniga mo galuega fa'atino a le fork PRs"") , e mafai ona e ausia se faiga faʻavae talitutusa ma repos tumaoti (e pei ona faʻaalia i luga). 

E pei ona tatou vaʻaia i le faʻaaogaina o le PPE mai se tagata faʻaoga faitau, fa'atagaina le fa'agaoioiga o galuega mai le fork pull requests e le saogalemu!!

O isi filifiliga o totoe ("Auina atu fa'ailoga tusitusi i ala o galuega mai le fork pull requests"Ma le"Auina atu mea lilo ma fesuia'iga i ala o galuega mai mo pull requests") fa'aitiitia le tulaga saogalemu fa'aoga i PRs o le fork. 

E mafai ona e fa'amatalaina lenei faiga fa'avae o le fork i le Tulaga Fa'alapotopotoga po'o le tulaga Repo. Afai e le fa'agaoioia le faiga fa'avae i le tulaga org, e le mafai ona fa'agaoioia i le tulaga repo. Ae, afai e fa'agaoioia le faiga fa'avae i le tulaga org, e mafai ona fa'agaoioia i le tulaga repo.

Lu'i o le OWASP

Recap

Matou te faʻamoemoe ua e vaʻaia ni aafiaga o le i ai o nisi pipeline vaivai i le Oona Pipeline Fa'atinoina. E faigofie tele ona commit se tagata vaivai pipeline, ma e faigata ona tusia se mea saogalemu. 

O lea la e matuā tāua tele ai le faʻaaogaina o le Xygeni Scanner e nofouta ai i ia vaivaiga.

E le mafai ona e foia se vuln se'i vagana ua e iloa lona iai!! 

Ae… O loʻo i ai pea se fesili o loʻo faʻatali… E fa'apefea ona 'alofia le I-PPE? 

O le autu lea o la matou isi pou 🙂 … Fa'a'ona Lē Tu'usa'o Pipeline Fa'asalaga (I-PPE) !!

Fa'a'ona Lē Tu'usa'o Pipeline Fa'asalaga (I-PPE)

Ose Maulu loloto i totonu CI/CD PipelineVaivaiga (II)​

Fa'a'ona o Mea Fa'atino ma le Tuiina o Tulafono Fa'akomepiuta​

Ose Maulu loloto i totonu CI/CD PipelineVaivaiga (III)

Puipuiga mai le Fa'aleagaina o Mea Fa'aleaga e ala i Fa'amaoniga o Polokalama Fa'akomepiuta

Ose Maulu loloto i totonu CI/CD PipelineVaivaiga (IV)
meafaigaluega-sca-polokalame-su'esu'ega-tu'ufa'atasiga
Fa'amuamua, toe fa'aleleia, ma puipui au tulaga lamatia o polokalama faakomepiuta
Maua lau Teugatupe e leai se totogi.
Leai se credit card e manaʻomia.

Puipui lau Atina'eina ma le Tu'uina Atu o Polokalama Faakomepiuta

fa'atasi ai ma le Xygeni Product Suite