Koodikatselmus puolustusohjelmistossa ei ole sama toiminto kuin koodikatselmus kaupallisessa SaaS-yrityksessä. Mekaniikka näyttää samanlaiselta — vetopyyntö, tarkastaja, kommenttilanka, hyväksyntä — mutta uhkamalli, auditoitavuusvaatimukset ja oikeudellinen altistuminen ovat erilaisia. Tarkastaja selvitetyssä ohjelmassa ei vain havaitse virheitä; he tuottavat akkreditointitodistusta, valvovat luokituksen rajoja ja toimivat puolena kahden henkilön säännöstä koodipoluilla, jotka saattavat toimia NATOn tehtäväjärjestelmässä.
Tämä artikkeli on insinööriopas siitä, miten selvitetyn ohjelman tiimit jäsentävät koodikatselmuksen: kuka reititetään kenelle, miltä PR-pohja näyttää, miten staattinen analyysi sopii lähdekoodin vuotamatta, miten CWIX-jäädytykset muokkaavat tarkastusporttia ja miten dokumentaatiopolku tyydyttää tarkastajan vuosia yhdistämisen jälkeen.
1. Miksi puolustuksen koodikatselmus on erilainen
Ensimmäinen periaate: puolustusohjelmistossa vastustajan uhkamalli olettaa sisäpiiriläisiä. Kaupallinen katselmusprosessi optimoi rehellisten virheiden löytämistä luotetulta tiimiltä. Puolustuksen katselmusprosessin on myös korotettava tahallaan pahantahtoisen muutoksen kustannuksia selvitetyltä kehittäjältä, jolla on laillinen commit-oikeus.
Toinen periaate: lähdekoodi selvitetyissä ohjelmissa on itsessään luokiteltua tai vähintään valvottua. Tarkastuksessa käytetty alusta on turvallisuusvalvonta, ei IT-mieltymys. Tarkastus SaaS-taustapalvelua käyttävässä työkalussa on tietovuoto.
Kolmas periaate: jokainen katselmus on auditoitava todiste. AQAP 2110 -arvioijat, DCMA-ohjelmistotarkastajat ja akkreditointiviranomaiset kysyvät vuosien päästä: kuka hyväksyi tämän muutoksen, minkä tarkistuslistan perusteella, millä testitodistuksella? PR-lanka on vastaus. Jos lanka on tyhjä — "LGTM, yhdistetään" — vastausta ei ole.
2. Tarkastajareititys — CODEOWNERS luokitusta varten
CODEOWNERS-tiedosto, joka koodaa luokituksen eikä vain tiimin omistuksen, on mekaaninen selkäranka selvitetyn ohjelman katselmusprosessissa. Puolustuksen CODEOWNERS-rivi sanoo: "tämä hakemisto sisältää koodia, joka koskettaa luokiteltuja verkkorajapintoja; tarkastajilla on oltava vähintään SECRET-turvallisuusluokitus."
Suurempivaikutteisille hakemistoille — kryptografiset primitiivit, luokitusmerkintälogiikka, verkkotoimialueen suojakoodi — käytäntönä on "kaksi selvitettyä silmäparia". Haarautumissuojaus vaatii vähintään kaksi hyväksyvää tarkastajaa selvitetystä tiimistä.
3. Tietoturvatarkistuslistat PR-pohjissa
PR-pohja on paikka, jossa katselmuksen kurinalaisuus tulee näkyväksi tarkastajille. Puolustuksen PR-pohja ei ole kolmirivinen SaaS-käytäntö. Se on jäsennelty tarkistuslista, jonka tekijä täyttää ja tarkastaja tarkistaa rivi riviltä.
Toimiva pohja kattaa: STIG-ristiviittaukset, OWASP ASVS -kohdat, muutoksen käsittelemien tietojen luokituksen, testikatattavuusmuutoksen eksplisiittisillä numeroilla ja ilmoituksen siitä, koskeeko muutos vientikilpailullista kryptografiaa.
4. Staattinen analyysi tarkastajan apuvälineenä
Staattinen analyysi puolustusputkistossa ei korvaa ihmisten tekemää tarkastusta; se on voimankertoja. Vakiopino: Semgrep ohjelmakohtaisilla säännöillä, GitHub CodeQL -kyselyt tahrianalyysia varten ja kielihenkilökohtainen syväanalysaattori (Coverity, SonarQube on-prem).
5. CWIX-sidotut tarkastusportit
Kaikille NATOn yhteentoimivuutta koskeville ohjelmille CWIX-vuosisykli muokkaa katselmuksen kalenteria. PR:t, jotka koskevat yhteentoimivuuskoodia, ovat kahden lisäportin alaisia: STANAG-toimialueen tarkastaja ja testien läpäisy koalition testiajurissa ennen yhdistämistä.
CWIX-jäädytyksen aikana — neljästä kuuteen viikkoon harjoituksen ympärillä — yhteentoimivuushaara on jäädytetty kaikelle muulle paitsi CWIX-laajuisille korjauksille.
6. Kahden henkilön sääntö arkaluonteiselle koodille
Jotkin koodipolut ansaitsevat korkeamman riman kuin selvitetyn tiimin oletus. Kryptografiset primitiivit — avaimenjohdanto, satunnaislukujen generointi, allekirjoituksen vahvistaminen — saavat kaksi selvitettyä tarkastajaa eksplisiittisellä kryptografisella pätevyydellä.
Keskeinen havainto: Kahden henkilön sääntö ei hidasta selvitettyjä ohjelmia — ne hidastavat jokaisen PR:n käsitteleminen kuin se olisi avainten käsittelymuutos. Kurinalaisuus on valikoivaa tarkkuutta: aggressiivinen suuren vaikutuksen tiedostojen reititys, kevyt tarkastus loppujen osalta.
7. Dokumentaatiopolku tarkastajille
PR-kuvaus on akkreditointitodiste. Vuosia yhdistämisen jälkeen ohjelma auditoidaan. Tarkastaja kysyy: näytä minulle jokainen muutos moduuliin X päivämäärien Y ja Z välillä, tarkastajalla, tarkistuslistaversiolla, testitodisteella ja turvallisuusperusteluilla.
8. Katselmuskulttuuri skaalassa
Vaikein osa selvitetyn ohjelman katselmuksen kurinalaisuudesta ei ole työkalut. Vaikein osa on kulttuuri: kurinalaisuuden ylläpitäminen viidenkymmen selvitetyn insinöörin tiimissä toimittamispaineen alla ilman, että se eroosioiduu kumileimasimeksi.
Uusien tarkastajien perehdyttäminen: uudet tarkastajat seuraavat vanhempia tarkastajia ensimmäisten kymmenen PR:n ajan. Neljännesvuosittaiset kalibrointiistunnot pitävät tiimin hiljaisen tiedon eksplisiittisenä ja siirrettävänä.
Selvitetty tiimi ei ole pelkkä luokitusluettelo; se on katselmuksen kulttuuri, jonka luokitukset mahdollistavat.