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.
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)
Dè na duilgheadasan a th’ ann? Co-dhiù, tha dà chùis ann:
- 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.
- 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.
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.
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.
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
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.
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.
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.
- 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.




