Tao amin'ny lahatsoratra teo aloha momba ny CI/CD Pipelines, nahita izahay ny fomba fanaovana hack CI/CD scenario izay heverina dia voaaro.
Andeha hotadidintsika ny tiantsika hambara tao amin'ny lahatsoratra teo aloha: nanomboka tamin'ny sasany izahay pipeline izay marefo amin'ny Voapoizina ankolaka Pipeline famonoana (I-PPE) ary, mba hanamboarana izany, nanapa-kevitra ny hizara ny pipeline ho roa:
- Ny 1er pipeline (Build CI), azo antoka amin'ny D-PPE sy I-PPE, dia hijery ny kaody PR, hanao ny fananganana, ary hamorona artifact
- Ny faha-2 pipeline (Test CI), izay azo antoka ihany koa amin'ny D-PPE sy I-PPE dia hijery ny kaody fototra (mba hisorohana ny fanovana ny script shell) ary hampihatra ireo script tany am-boalohany manohitra ny artifact.
- Mba hampifanarahana ny Test CI pipeline hiasa REHEFA vita ny Build CI pipeline, nampiasainay workflow_run miteraka
Nantsoinay hoe Seho #3 ity.

Na dia misy vahaolana hafa aza, araka ny efa nolazainay tao amin'io lahatsoratra io, dia nanapa-kevitra ny hampihatra ity "vahaolana" ity izahay noho ny antony ara-pedagojika, mba hahafahanay miditra lalina amin'ny fahalemen'ny CI/CD pipelines.
Taorian'izay, dia nahita ny fomba handaminana ity toe-javatra ity izahay fanapoizinana ny zavatra vita an-tsoratraIzany no antsointsika hoe Fanapoizinana amin'ny zavatra artifact, izany hoe ny fahafahana manova (manakorontana) ny pipeline lojika amin'ny fanovana ny pipeline artifact.
Inona no olana amin'ity fomba fiasa ity? Hitanay fa mipoitra ny olana rehefa "mamorona" vaovao ny mpampiasa rehetra pipeline.
Raha manokatra PR misy vaovao ny mpampiasa iray pipeline, GitHub no hanatanteraka izany pipeline (raha omena fepetra sasany, araka ny hitantsika amin'ny lahatsoratra).
Afaka mamorona rakitra vaovao avy eo ny mpampiasa pipeline mitovy anarana amin'ny Build CI!! Eny, mahagaga izany, fa ny GitHub dia ahafahanao mamorona roa pipelinemitovy anarana!!
Rehefa manokatra PR misy ireo fanovana ireo ny mpampiasa, ny "vaovao" pipeline hovonoina (mampiakatra zavatra misy poizina) ary ny Deploy CI pipeline hotanterahina aorian'izay, ka ny script shell "novaina" dia hanolo ny script shell "tany am-boalohany" izay hita ao amin'ny pipeline toeram-piasana. Noho izany, ity "vahaolana" ity dia tsy misoroka ny fahalemen'ny I-PPE (araka ny hitantsika etsy ambany)

Inona avy ireo olana? Farafaharatsiny, misy olana vitsivitsy:
- voalohany, Ahoana no ahazoana antoka fa tsy nisy nanimba ny fizotran'ny fananganana? Amin'ity tranga ity, ny mpampiasa ratsy fanahy dia afaka nanova ny dingana fananganana kasaina hatao amin'ny alàlan'ny fampiasana ny pipeline mba hamoronana zavatra misy poizina.
- Faharoa, Ahoana no ahafahantsika manombana ny niandohan'ny artifact iray?
Ireo fanontaniana ireo dia mametraka antsika eo an-tsandrin'ny Fanamarinana rindrambaiko sehatra!!
Fanamarinana rindrambaiko
An taratasy fanamarinana dia sombin- tahirin-kevitra nisolo tena porofon'ny zava-nitranga irayAo amin'ny tontolo tena izy, matetika isika no miantso azy ireo hoe certifications.
Ohatra, rehefa manao fitiliana ny ranao ny laboratoara, dia voarakitra sy voamarina ny angon-drakitra momba ny fitiliana. Ny valin'ny fitiliana ra dia azo hamarinina sy azo soratana.

Raha akaiky kokoa ny sehatry ny IT-ntsika, azonao vinavinaina hoe inona no ho dikan'ity dingana ity ho, ohatra, dingana fanangonana.

Ny fampahalalana momba ny tontolo iainana sy ny fitaovan'ny mpizara fanangonana, ny fitaovana (ny kaody loharano), ary ny vokatra/zavatra artifacts (ny kaody binary) dia ho anisan'ny fanamarinana toy izany.
Mazava ho azy fa tsy maintsy avy amin'ny vavolombelona nahazo alalana (voamarina ary tsy azo lavina) no nanaovana ny fanamarinana mba hahazoana fahatokisana.
Azo inoana fa ny sasany aminareo mety hieritreritra hoe .. ary inona no ny fahasamihafana misy eo amin'ny sonia sy ny fanamarinana?
Sonian'ny fehezan-dalàna sy fanamarinana
Amin'ny ambaratonga avo, ny sonia dia noforonina tamin'ny fampiasana lakile roa sy zavatra artifact. Ny lakile roa dia misy lakile ho an'ny daholobe sy lakile manokana.

Manasonia zavatra tranainy amin'ny alalan'ny fanalahidy manokana ny mpampiasa, ary ny hafa kosa afaka manamarina izany amin'ny alalan'ny fanalahidy ho an'ny daholobe. Tsy maintsy tazonina ho tsiambaratelo ny fanalahidy manokana, saingy miely patrana ny fanalahidy ho an'ny daholobe.
Azo ampiasaina ny sonia mba hanaporofoana fa nampiasa ny fanalahidy manokana hanasoniavana ny zavatra vita an-tsoratra ny tompon'ny fanalahidy manokana.
sonia aza manaporofo
- Ny mpampiasa fikasana hanasonia ny zavatra vita an-tsoratra (mety ho voafitaka izy ireo), na
- Ny fikasan'ny mpampiasa hanao izay rehetra fitakiana manokana momba ny artifact
miaraka Fanamarinana, fa tsy manao sonia mivantana zavatra iray ny mpampiasa, dia mamorona karazana zavatra iray tahirin-kevitra fa maka ny fikasany ao ambadiky ny sonia ny artifact sy izay rehetra fitakiana manokana izay atao ho anisan'ity sonia ity.
Rafitra fanamarinana anatiny
Ny rafitra mahazatra indrindra dia ny Rafitra fanamarinana in-toto
- mamaritra ny a standard endrika fanamarinana izay mampifandray ireo lohahevitra, ireo zavatra voalaza, amin'ny metadata voamarina momba ilay zavatra
- manome andiana matoanteny voafaritra mialoha ho an'ny fampitana metadata voamarina manerana sy manerana ny rojo famatsiana rindrambaiko
Andeha hojerentsika amin'ny antsipiriany ny endriky ny fanamarinana.
An teni-vavolombelona ihany dia antontan-taratasy nosoniavina nomerika izay misy Fanambarana.
The Statement no sosona afovoan'ny fanamarinana, mamatotra azy amin'ny zavatra manokana Subject ary mamantatra mazava tsara ireo karazana enti-:
- Subject: a fanondroana azo antoka ara-cryptografika momba ny artifact (matetika amin'ny alàlan'ny hash), ary
- enti-milaza: andiana manokana fanambarana Ny momba io zavatra vita tanana io dia antsoina hoe Fanambarana. Ireo filazana ireo dia azo ampiasaina hanehoana (ary hanaporofoana any aoriana) izay rehetra azonao eritreretina! Mety maneho fankatoavana tanana, fiavian'ny zavatra vita tanana, valin'ny fitsapana mandeha ho azy, fanaraha-maso, na mihoatra izany!
Rehefa soniavina amin'ny alalan'ny kriptografika ity Fanambarana ity dia antsoina hoe teni-vavolombelona ihany

Amin'izany fomba izany, ohatra, i Alice dia mamorona Fanambarana momba ny zavatra iray ary manasonia izany amin'ny fampiasana ny lakile manokana, ka mamorona Fanamarinana.
- Afaka avy eo i Bob hamarino ny sonia ao anatin'izany Fanamarinana izany, mamela azy matoky ireo filazana anatiny.
Afaka mampiasa ireo filazana ireo i Bob avy eo manapa-kevitra na avela hampiasaina ity zavatra ity na tsia.

Afaka manampy amin'ny famahana ny fanapoizinana artifact ve ny fanamarinana?
Aorian'ity fampidirana ny Attestations ity dia andeha hiverina amin'ny olantsika isika. Ahoana no ahafahan'ny fanamarinana manampy antsika hamaha ny olantsika, izany hoe hisorohana ny fanapoizinana amin'ny zavatra artifact?
Afaka namorona zavatra tsy ara-dalàna ilay mpampiasa ratsy fanahy nefa tsy nandalo ny rafitra "ofisialy", izany hoe tamin'ny fampiasana ny azy pipeline mba hamoronana ny artifact.
Ho mahagaga raha afaka manaporofo isika fa ireo zavatra alaina dia namboarina tamin'ny alalan'ny rafitra ofisialy pipelines. Ohatra iray monja amin'izay azontsika antsoina hoe "Teboka fanitsakitsahana" ity, fa mety hisy maro hafa.

Araka ny hitanao amin'ny sary etsy ambony, maro ireo teboka fanodinkodinana. Amin'izany fomba izany, ny mpanjifa pipeline (Test CI amin'ny ohatra asehontsika) dia tsy maintsy manombana ny ny fahamarinan'ny dingana fanorenana ary koa ny ny maha-izy azy ny zavatra vita an-tsoratra mihitsy.
Ao amin'ny ohatra asehontsika, ny zavatra voapoizina dia noforonina tamin'ny alàlan'ny fampidirana zavatra vaovao (voapoizina) pipeline izay manelingelina ny fizotran'ny fananganana. Saingy mety ho afaka nanao izao manaraka izao ilay mpampiasa ratsy fanahy:
- ovay ny kaody rehefa avy nojerena avy amin'ny SCM hamorona binary ratsy
- soloo amin'ny binary ratsy hafa ny binary havanana novokarin'ny compilation
- manimba ny Artifact Registry ary mampiditra artifact misy poizina namboarina tamin'ny fomba hafa
- etc.
Araka ny hitanao, mety misy teboka "fanovana" maromaro.
Inona no zava-dehibe eto? Mazava ho azy fa ny fiarovana ireo teboka "fanodinkodinana" rehetra ireo. Saingy, amin'ny farany, ny tena zava-dehibe dia fa ny "mpanjifa" ny zavatra vita an-tsoratra dia afaka manombana ny maha-izy azy ny zavatra vita an-tsoratra, ary manapa-kevitra raha hanohy izany na tsia.
Afaka ataontsika manombana ny fahamarinan'ny zavatra iray amin'ny lafiny roa.
Ny iray dia amin'ny fanombanana ny provenance an'ilay zavatra tranainy.
Amin'ny famoronana Fanamarinana ny fiaviana, manome metadata mahasoa (voamarina tsara ary tsy lavina) momba ilay zavatra noforonina izahay. Amin'ireto ohatra manaraka ireto, hampiasaintsika Sira Xygeni (Sosona Fanamarinana Rindrambaiko ho an'ny Fitokisana), ny singa hamoronana, hisoratra anarana ary hanamarina ny fanamarinana rindrambaiko.

- 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
Ao amin'ny kaody etsy ambony, hitanao fa misy dingana iray izay manorina ny rakitra ady ary dingana faharoa izay mamorona ny Fanamarinana ny fiavianaMba hanaovana izany, ny pipeline mampiasa ny fanalahidy manokana ary mampiditra ihany koa ny fanalahidy ho an'ny daholobe ao amin'ny fanamarinana.
Ao ambadiky ny sehatra, Xygeni's sira Ny baiko dia mitahiry ny fanamarinana ao anaty mitadidy (fantatra koa amin'ny anarana hoe rejisitra fanamarinana, firaketana an-tsoratra amin'ny tranga misy antsika fa azonao ampiasaina izay hafa). Rehefa vita izany, ny mpanjifa pipeline mety ahitana an'i Xygeni Môtô fanamarinana mba hanamarinana ny niandohan'ny zavatra artifisialy sy hanombanana ny maha-izy azy azy.
- 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
Ny dingana fanamarinana dia manombana:
- The Manankery ny artifact sha256sum (ohatra, misy fanamarinana momba io "lohahevitra" io), ary
- The voamarina tsara ny fanamarinana (novokarina tamin'ny fampiasana ny lakile manokana sahaza azy)
Ity dingana fanamarinana ity dia afaka manombana amin'izay fa samy manan-kery na ny zavatra vita an-tsoratra na ny fanamarinana.
Saingy, araka ny tadidinao, amin'ny tranga misy antsika, ny artifact dia novokarin'ny "ratsy fanahy" pipeline (izany hoe tsy ilay tany am-boalohany novaina pipeline). Dia tsy maintsy mandroso isika ary manamarina lafiny iray hafa: izany Ny zavatra vita dia novokarin'ny "tany am-boalohany" pipeline, fa tsy hafa.
Mba hanaovana izany, ampio fotsiny andalana tsotra mba hanamarinana izany toe-javatra izany, ohatra:
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
Tsy hahomby ity fanamarinana fanampiny ity raha tsy novokarin'ny "safety"-ntsika ilay zavatra artifact. pipeline.
Raha ny zavatra tany am-boalohany no namorona ny artifact pipeline (cicd_top10_3_salt/.github/workflows/build.yml), hahomby ny baiko grep, raha tsy izany dia tsy hahomby izy, ka hanimba ny pipeline ary manafoana izay dingana fanampiny.
Ny "mpanorina" pipeline dia teboka iray fotsiny amin'ny fanodinkodinana tokony hojerena, saingy, araka ny voalaza teo aloha, misy teboka hafa amin'ny fanodinkodinana tokony hojerintsika.
Ohatra, Ahoana raha nisy nanova ny kaody loharano taorian'ny fanamarinana ny repo ary talohan'ny baiko build? Amin'ity tranga ity, ny kaody hamboarina dia tsy mitovy amin'ny voatahiry ao amin'ny SCM.
Mora ny manamarina ity teboka fanodinkodinana ity ka azo jerena tsara ny fikikisana amin'ny fitaovana amin'ny dingana rehetra.
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[])
fehin-kevitra
Raha fintinina, ny Fanamarinana ny rindrambaiko dia fanambarana natao momba ny rindrambaiko iray, izany hoe fanambarana voamarina (metadata) momba ny artifact rindrambaiko na fanangonana artifacts rindrambaiko.
Fanamarinana rindrambaiko dia fanafohezana ny artifact/fanasoniavana kaody manta. Ny fanamarinana dia antontan-taratasy nosoniavina (amin'ny endrika iray, matetika mifototra amin'ny JSON) izay mampifandray metadata amin'ny artifact. Izy ireo dia maneho porofo mampifandray ny inputs (fitaovana) sy ny outputs (artifacts novokarina) amin'ny dingana fananganana tsirairay.
Ny fanamarinana dia manome firaketana azo hamarinina momba ireo dingana vita tamin'ny fananganana ireo artifacts farany amin'ny rindrambaiko, anisan'izany ireo fitaovana fampidirana ho an'ny dingana tsirairay sy ny baiko fananganana.
Ho fehiny, ny fanamarinana rindrambaiko dia fomba iray tsara hanamarinana ny lafiny maro samihafa amin'ny fahamarinan'ny fizotran'ny fananganana.
Vita ve ilay andian-tantara? Aza manahy! Aza misalasala miverina any amin'ny 'misy poizina Pipeline Famonoana (PPE)' na lahatsoratra hafa izay mahaliana anao indray!
Araho hatrany, handinika lalina momba ny fanamarinana rindrambaiko sy build security amin'ny lahatsoratra bilaogy fanampiny.







