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.