CICD-PipelineSo-leòntachd

Dàibheadh ​​domhainn a-steach CI/CD PipelineSo-leòntachd (IV): A’ dìon an aghaidh puinnseanachadh artaifeactan tro dhearbhadh bathar-bog

Anns a’ phost roimhe againn mu dheidhinn CI/CD Pipelines, chunnaic sinn ciamar a nì thu hack CI/CD suidheachadh a tha a rèir coltais bha fo dhìon.

Cuimhnich sinn air a’ phuing a bh’ againn san dreuchd roimhe: thòisich sinn le cuid pipeline a bha so-leònte ri Puinnseanachadh neo-dhìreach Pipeline bàs (I-PPE) agus, gus a chàradh, chuir sinn romhainn an pipeline ann an dhà:

  • An 1st pipeline (Togail CI), sàbhailte do D-PPE agus I-PPE, bhiodh e a’ sgrùdadh a’ chòd PR, a’ dèanamh an togail, agus a’ gineadh artaifact.
  • An 2na pipeline (Deuchainn CI), cuideachd sàbhailte do D-PPE agus bhiodh I-PPE a’ sgrùdadh a’ chòd Bhunaiteach (gus atharrachadh sgriobt an t-slige a sheachnadh) agus a’ cur an gnìomh na sgriobtaichean tùsail an aghaidh an artaifact. 
  • Gus an CI Deuchainn a shioncronachadh pipeline a ruith ÀS DÈIDH an CI Togail pipeline, chleachd sinn ruith_sruth-obrach piobrachadh. 

Thug sinn an t-ainm Suidheachadh #3 air seo.

CICD-Tèarainteachd

Ged a tha fuasglaidhean eile ann, mar a thuirt sinn san dreuchd sin, chuir sinn romhainn an “fuasgladh” seo a chur an gnìomh airson adhbharan peidagògaig gus an urrainn dhuinn sgrùdadh domhainn a dhèanamh air so-leòntachdan, CI/CD pipelines.

Às dèidh sin, chunnaic sinn mar a dhèanadh sinn an suidheachadh seo a hackadh le a’ puinnseanachadh an nì-ealainSeo a chanas sinn Puinnseanachadh Artifact, i.e. an comas atharrachadh (hackadh) a dhèanamh air pipeline loidsig le bhith ag atharrachadh a pipeline nì-ealain.

Dè an duilgheadas a tha leis an dòigh-obrach seo? Chunnaic sinn gu bheil an duilgheadas ag èirigh nuair a “chruthaicheas” neach-cleachdaidh sam bith fear ùr pipeline. 

Ma dh’fhosglas neach-cleachdaidh PR anns a bheil fear ùr pipeline, cuiridh GitHub sin an gnìomh pipeline  (le cuid de chumhachan, mar a chunnaic sinn) anns a' phost).

Bidh an neach-cleachdaidh an uair sin comasach air fear ùr a chruthachadh pipeline leis an aon ainm ri Build CI !! 'S e, tha e na iongnadh, ach leigidh GitHub leat dhà a chruthachadh pipelineleis an aon ainm!!

Nuair a dh’fhosglas an neach-cleachdaidh PR leis na h-atharrachaidhean seo, an “ùr” pipeline thèid a chur gu bàs (a’ luchdachadh suas nì puinnseanta) agus an Deploy CI pipeline thèid a chur an gnìomh às dèidh sin, agus mar thoradh air sin bidh an sgriobt slige “atharraichte” a’ sgrìobhadh thairis air an sgriobt slige “tùsail” a tha suidhichte anns an pipeline àite-obrach. Mar sin, chan eil an “fuasgladh” seo a’ seachnadh so-leòntachd I-PPE (mar a chì sinn gu h-ìosal)

CICD-Pipelines

Dè na duilgheadasan a th’ ann? Co-dhiù, tha dà chùis ann:

  1. A’ chiad, Ciamar a nì thu cinnteach nach deach buaidh a thoirt air a’ phròiseas togail? Anns an t-suidheachadh seo, tha an neach-cleachdaidh droch-rùnach air a bhith comasach air am pròiseas togail a bha san amharc atharrachadh le bhith a’ cleachdadh an cuid pipeline gus artaifeact puinnseanta a chruthachadh.
  2. Anns an dàrna àite, Ciamar as urrainn dhuinn tùs nì a mheasadh?

Bidh na ceistean seo gar tilgeil ann an gàirdeanan an Teisteanasan Bathar-bog fearann!!

Teisteanasan Bathar-bog

An fianuis 's e pìos de dàta riochdachadh dearbhadh air tachartasAnns an fhìor shaoghal, mar as trice bidh sinn gan ainmeachadh seo certifications.

Mar eisimpleir, nuair a nì obair-lann deuchainn air do fhuil, thèid dàta mun deuchainn a chlàradh agus a dhearbhadh. Tha toraidhean an deuchainn fala dearbhach agus lorg.

Teisteanasan Slabhraidh Solarachaidh Bathar-bog

Nas fhaisge air an raon IT againn, dh'fhaodadh tu tomhas dè a bhiodh ann an eadar-theangachadh den phròiseas seo gu, mar eisimpleir, pròiseas co-chruinneachaidh.

Teisteanasan_Bathar-bog

Bhiodh fiosrachadh mu àrainneachd agus innealan an fhrithealaiche co-chruinneachaidh, na stuthan (an còd tùsail), agus na toraidhean/artifactan (an còd dà-chànanach) mar phàirt den dearbhadh sin.

Gu follaiseach, feumaidh an dearbhadh a bhith air a chruthachadh le neach-dearbhaidh ùghdarraichte (dearbhte agus do-chreidsinneach) gus earbsachd a thoirt seachad. 

Is dòcha gu bheil cuid agaibh a’ smaoineachadh ... agus dè a th’ ann an an diofar eadar ainmean-sgrìobhte agus dearbhaidhean?

Ainmean-sgrìobhte còd agus teisteanasan

Aig ìre àrd, a ainm-sgrìobhte air a chruthachadh le bhith a’ cleachdadh paidhir iuchraichean agus artaifact. Tha am paidhir iuchraichean air a dhèanamh suas de iuchair phoblach agus iuchair phrìobhaideach. 

Ainm-sgrìobhte Còd

Bidh an neach-cleachdaidh a’ soidhnigeadh nì-ealain leis an iuchair phrìobhaideach, agus faodaidh feadhainn eile an uairsin an soidhnigeadh a dhearbhadh leis an iuchair phoblach. Feumar an iuchair phrìobhaideach a chumail dìomhair, ach tha an iuchair phoblach air a sgaoileadh gu farsaing.

Faodar ainmean-sgrìobhte a chleachdadh gus dearbhadh gun do chleachd sealbhadair na h-iuchrach prìobhaideach an iuchair phrìobhaideach gus an nì-ealain a shoidhnigeadh

ainmean-sgrìobhte na dearbhaich 

  • An neach-cleachdaidh rùn gus an nì-ealain a shoidhnigeadh (’s dòcha gun deach an mealladh), no 
  • Rùn an neach-cleachdaidh rud sam bith a dhèanamh tagradh sònraichte mun nì-ealain 

le Fianaisean, an àite a bhith a’ soidhnigeadh artaifeact gu dìreach, bidh luchd-cleachdaidh a’ cruthachadh seòrsa de sgrìobhainn gu bheil a’ glacadh an rùn air cùl a bhith a’ soidhnigeadh an nì-ealain agus gin sam bith tagraidhean sònraichte ga dhèanamh mar phàirt den ainm-sgrìobhte seo.

Frèam Dearbhaidh In-toto

Is e am frèam-obrach as cumanta an Frèam Dearbhaidh in-toto

  • a ’mìneachadh a standard cruth airson teisteanasan a cheanglas cuspairean, na nithean a thathar a’ toirt cunntas orra, ri meata-dhàta dearbhte mun nithean 
  • a’ toirt seachad seata de ro-innsean ro-mhìnichte airson meata-dhàta dearbhte a chur an cèill air feadh agus thar slabhraidhean solair bathar-bog

Bruidhnidh sinn beagan nas mionaidiche air cruth an dearbhaidh.

An Dearbhadh 'S e sgrìobhainn le ainm-sgrìobhte didseatach tha sin ann Aithrisean.

Tha aithris 'S e meadhan an teisteanais a th' ann, ga cheangal ri rud sònraichte cuspair agus a’ comharrachadh gu soilleir na seòrsaichean de na Ro-innse:

  • cuspair: a iomradh tèarainte gu crioptagrafach air an artaifeact (mar as trice tro hash), agus
  • Ro-innsean: seata de rudan sònraichte tagraidhean Canar Aithris ri fiosrachadh mun nì sin. Faodar na tagraidhean seo a chleachdadh gus rud sam bith as urrainn dhut smaoineachadh a chur an cèill (agus a dhearbhadh nas fhaide air adhart)! Faodaidh iad cead làimhe, tùs nì, toraidhean deuchainn fèin-ghluasadach, slighe sgrùdaidh, no barrachd a riochdachadh! 

Nuair a bhios an Aithris seo air a shoidhnigeadh gu crioptagrafach, canar sin ris an uair sin Dearbhadh

CI/CD_Suidheachadh_Tèarainteachd_3

San dòigh seo, mar eisimpleir, cruthaichidh Alice Aithris mu nì-ealain agus cuiridh i ainm ris le bhith a’ cleachdadh a h-iuchrach phrìobhaideach, a’ cruthachadh Teisteanas.

  • Faodaidh Bob an uairsin dearbhaich an t-ainm-sgrìobhte anns an Teisteanas sin, a’ leigeil leis gus earbsa a chur anns na tagraidhean taobh a-staigh. 

Faodaidh Bob na tagraidhean sin a chleachdadh an uairsin gus co-dhùnadh co-dhiù a leigeas iad leis an artaifeact seo a bhith air a chleachdadh no nach tèid.

Teisteanasan_Bathar-bog_Gr

Am b’ urrainn do dhearbhadh cuideachadh le bhith a’ fuasgladh puinnseanachadh artifact?

Às dèidh an ro-ràdh seo do Theisteanasan, tillidh sinn chun duilgheadas againn. Ciamar as urrainn do theisteanasan ar cuideachadh le bhith a’ fuasgladh ar duilgheadas, i.e. gus puinnseanachadh bho stuthan-ealain a sheachnadh?

Bha an neach-cleachdaidh droch-rùnach comasach air artaifeact a chruthachadh a’ seachnadh an dòigh “oifigeil”, i.e. le bhith a’ cleachdadh a/a pipeline gus an artaifeact a chruthachadh. 

Bhiodh e iongantach nam b’ urrainn dhuinn dearbhadh gun deach na stuthan-ealain a thathar a’ luchdachadh sìos a thogail leis an oifigeil pipelines. Chan eil seo ach aon eisimpleir de na dh’fhaodadh sinn a ghairm mar “Puingean Milleadh”, ach dh’fhaodadh mòran eile a bhith ann.

SSCSPuingean_Mùchadh

Mar a chì thu san dealbh gu h-àrd, tha iomadh puing ann airson bacadh a chur air. San dòigh seo, bidh an neach-cleachdaidh pipeline (Deuchainn CI san eisimpleir againne) feumaidh iad measadh a dhèanamh air an ionracas a’ phròiseis togail a bharrachd air an ionracas an nì-ealain fhèin.

Anns an eisimpleir againne, chaidh an nì-ealain puinnseanta a chruthachadh le bhith a’ toirt a-steach nì ùr (puinnseanta) pipeline a chuireas bacadh air a’ phròiseas togail. Ach dh’ fhaodadh an neach-cleachdaidh droch-rùnach a bhith air a bhith comasach air:

  • atharraich an còd an dèidh a bhith air a sgrùdadh a-mach às an SCM gus binary droch-rùnach a chruthachadh
  • cuir an àite a’ bhinary cheart a chaidh a chruthachadh leis a’ chruinneachadh le binary droch-rùnach sam bith eile
  • cuir an cunnart air Clàr nan Artifacts agus luchdaich suas artifact puinnseanta a chaidh a thogail ann an dòigh sam bith eile
  • msaa

 Mar a chì thu, is dòcha gu bheil grunn phuingean “milleadh” ann.

Dè tha cudromach an seo? Gu follaiseach gus na puingean “milleadh” sin uile a dhìon. Ach, aig a’ cheann thall, is e an rud as cudromaiche gum faod “neach-cleachdaidh” an artaifeact measadh a dhèanamh air ionracas an artaifeact, agus co-dhùnadh am bu chòir dhaibh a dhol air adhart leis no nach bu chòir.

S urrainn dhuinn measadh a dhèanamh air ionracas nì ann an dà dhòigh. 

Is e aon dhiubh le bhith a’ measadh a’ tùs den artaifeact.

Le bhith a’ gineadh Teisteanas Tùsachd, bidh sinn a’ toirt seachad meata-dhàta feumail (air a dhearbhadh gu ceart agus gun a bhith air a dhiùltadh) mun artaifeact. Anns na h-eisimpleirean a leanas, cleachdaidh sinn SALANN Xygeni (Sreath Dearbhaidh Bathar-bog airson Earbsa), am pàirt airson dearbhaidhean bathar-bog a chruthachadh, a chlàradh agus a dhearbhadh.

Togalaichean_Dìon-_Mì-rian
      - name: Building ...         run: |           # mvn will compile and create target/MyApp.war           mvn clean package                     - name: Generating provenance         run: |               #!/usr/bin/env bash                 shopt -s expand_aliases               alias salt=$PWD/salt_pro/xygeni_salt/salt                     echo " "               echo "-----------"               echo "Generating Provenance with CLI ..."               salt at slsa \                   --basedir ${GITHUB_WORKSPACE}/target \             --key="${PRIVATE_KEY}" \             --public-key=${GITHUB_WORKSPACE}/Test1_public.pem \               --key-password=${KEY_PASSWD} \               --output-unsigned=${GITHUB_WORKSPACE}/cli_provenance_${PIPELINE}_unsigned.json \                   --pipeline ${PIPELINE} --pretty-print \                   --file ./MyApp.war                     

Anns a’ chòd gu h-àrd, chì thu gu bheil ceum ann a thogas am faidhle cogaidh agus dàrna ceum a ghineas an Teisteanas TùsachdGus a dhèanamh, an pipeline a’ cleachdadh an iuchair phrìobhaideach agus a’ toirt a-steach an iuchair phoblach san dearbhadh cuideachd. 

Air cùl na seallaidhean, Xygeni's salann Bidh an àithne a’ stòradh an dearbhaidh ann an Ledger (ris an canar clàr dearbhaidh cuideachd, Clàr nar cùis-ne ach faodaidh tu gin eile a chleachdadh). Air sin a dhèanamh, an neach-cleachdaidh pipeline faodaidh Xygeni a bhith nam pàirt dheth Inneal Dearbhaidh gus tùs an artaifeact a dhearbhadh agus ionracas an artaifeact a mheasadh.

 - name: 'Verifying the attestation'         run: |           #!/usr/bin/bash   	    echo " "           echo "-------"           # Calculate sha256sum for the artifact           SHA_SUM=$(sha256sum ./MyApp.war | cut -f1 -d ' ')   	    # Recover the attestation Id from the sha256sum           ATT_ID=$(echo $(salt -q registry search --digest sha256:$SHA_SUM --format json) | jq -r .[-1].gitoidSha256)             echo " "           echo "-------"           # Download the provenance attestation           echo "Downloading the provenance attestation ..."           salt -q reg get --id=$ATT_ID --format=json > ${GITHUB_WORKSPACE}/provenance_kk.signed.json             echo " "           echo "-------"           echo "Verifying provenance ..."           salt verify \               --basedir ${GITHUB_WORKSPACE} \               --attestation=${GITHUB_WORKSPACE}/provenance_kk.signed.json \               --public-key=${GITHUB_WORKSPACE}/Test1_public.pem \               --file ./MyApp.war 

Bidh am pròiseas dearbhaidh a’ measadh:

  • Tha Tha an artifact sha256sum dligheach (i.e. tha dearbhadh ann mun “chuspair” sin), agus
  • Tha tha dearbhadh air a dhearbhadh gu ceart (chaidh a chruthachadh le bhith a’ cleachdadh an iuchair phrìobhaideach iomchaidh) 

Faodaidh am pròiseas dearbhaidh seo measadh a dhèanamh an uairsin gu bheil an nì-ealain agus an dearbhadh dligheach.

Ach, mar a chuimhnicheas tu, nar cùis-ne, chaidh an nì-ealain a chruthachadh le “droch-rùnach” pipeline (i.e. chan e an tè thùsail le atharrachadh pipeline). Feumaidh sinn an uairsin sùil a thoirt air taobh eile: sin chaidh an nì-ealain a chruthachadh leis an “tùsail” pipeline, chan e fear sam bith eile. 

Gus sin a dhèanamh, dìreach cuir a-steach loidhne shìmplidh gus sgrùdadh a dhèanamh airson a’ chumha sin, mar eisimpleir:

   echo " "           echo "-------"           # Download the provenance attestation           echo "Downloading the provenance attestation ..."           salt -q reg get --id=$ATT_ID --format=json > ${GITHUB_WORKSPACE}/provenance_kk.signed.json           WFR=$(jq -r .payload ${GITHUB_WORKSPACE}/provenance_kk.signed.json |base64 -d | jq -r .predicate.buildDefinition.internalParameters.environment.GITHUB_WORKFLOW_REF)           echo $WFR | grep cicd_top10_3_salt\/.github\/workflows\/build.yml 

Fàillidh an sgrùdadh a bharrachd seo mura biodh an artaifeact air a chruthachadh leis an “sàbhailte” againn. pipeline.

Ma chaidh an nì-ealain a chruthachadh leis an fhear thùsail againn pipeline (cicd_top10_3_salt/.github/workflows/build.yml), soirbhichidh leis an àithne grep, air neo, fàillidh e, a’ briseadh an pipeline agus stad a chur air ceumannan sam bith eile.

An “togaire” pipeline chan eil ann ach aon phuing mì-mhodhail ri sgrùdadh ach, mar a chaidh ainmeachadh roimhe, tha puingean mì-mhodhail eile ann a bu chòir dhuinn sgrùdadh a dhèanamh.

Mar eisimpleir, Dè ma chaidh an còd tùsail a mhilleadh às dèidh sgrùdadh an stòrais agus ron àithne togail? Anns a’ chùis seo, chan e an còd a thèid a thogail an aon rud ris an fhear a tha air a stòradh san SCM. 

Tha e cho furasta sùil a thoirt air a’ phuing bacadh seo ’s gun dèan thu sgrùdadh air hashes an stuth aig gach ceum.

SHA_ATT_MATERIAL=$(jq -r .payload ${GITHUB_WORKSPACE}/provenance_kk.signed.json | base64 -d | jq -r .predicate.attestations[0].predicate.materials[].digest[]) SHA_STEP_MATERIAL=$(jq -r .payload ${GITHUB_WORKSPACE}/provenance_kk.signed.json | base64 -d | jq -r .predicate.attestations[3].predicate.materials[0].digest[]) 

Co-dhùnaidhean

Ann an geàrr-chunntas, a Teisteanas Bathar-bog na dhearbhadh a chaidh a dhèanamh mu phìos bathar-bog, i.e. aithris dearbhte (meata-dhàta) mu artaifeact bathar-bog no cruinneachadh de artaifeactan bathar-bog.

’S e coitcheannachadh de shoidhnigeadh artaifeact/còd amh a th’ ann an dearbhaidhean bathar-bog. ’S e sgrìobhainn shoidhnichte a th’ anns an dearbhadh (ann an cruth sònraichte, mar as trice stèidhichte air JSON) a bhios a’ ceangal meata-dhàta ri artaifeact. Tha iad a’ riochdachadh fianais a tha a’ ceangal cuir-a-steach (stuthan) agus toraidhean (artifactan air an dèanamh) aig gach ceum togail.

Bidh teisteanasan a’ toirt seachad clàr dearbhaidh de na ceumannan a chaidh a dhèanamh airson na stuthan bathar-bog deireannach a thogail, a’ gabhail a-steach stuthan cuir-a-steach airson gach ceum agus na h-òrdughan togail a chaidh a ruith.

Mar cho-dhùnadh, tha Teisteanasan Bathar-bog nan deagh dhòigh airson mòran thaobhan eadar-dhealaichte de ionracas ar pròiseas togail a dhearbhadh. 

An do chrìochnaich thu an t-sreath? Na gabh dragh! Faodaidh tu tilleadh gu 'Puinnseanta Pipeline Cur gu bàs (PPE)' no post sam bith eile a thogas d’ ùidh a-rithist!

Cumaibh sùil a-mach, nì sinn sgrùdadh domhainn air dearbhaidhean bathar-bog agus build security ann am puist bhlog a bharrachd. 

Puinnseanta Pipeline Cur gu bàs (PPE)

Dàibheadh ​​domhainn a-steach CI/CD PipelineSo-leòntachd (I)

Puinnseanachadh neo-dhìreach Pipeline Cur an gnìomh (I-PPE)

Dàibheadh ​​domhainn a-steach CI/CD PipelineSo-leòntachd (II)

Puinnseanachadh Artifact agus In-stealladh Còd

Dàibheadh ​​domhainn a-steach CI/CD PipelineSo-leòntachd (III)
innealan-sca-bathar-bog-innealan-anailis-co-dhèanamh
Thoir prìomhachas do chunnartan bathar-bog, dèan cinnteach gu bheil iad air an rèiteachadh, agus dèan cinnteach gu bheil iad tèarainte
Faigh do Chunntas an-asgaidh.
Chan eil feum air cairt creideas.

Dèan cinnteach à leasachadh is lìbhrigeadh do bhathar-bog

le Sreath Thoraidhean Xygeni