Elk compliance-programma heeft een plank vol documenten: beleidsstukken, controlbeschrijvingen, procedures, elk beschrijft hoe de organisatie van plan is zich te gedragen. De documenten zijn noodzakelijk. Maar het is niet daar waar compliance daadwerkelijk slaagt of faalt.
De kloof tussen beleid en werkelijkheid
Het toegangcontrolebeleid stelt het principe van least privilege. Het encryptiebeleid stelt dat gegevens tijdens transport worden beschermd. Het bewaarbeleid stelt dat persoonsgegevens na hun doel worden verwijderd. Dit zijn waarheidsgetrouwe uitspraken over de intentie.
Of ze ook waarheidsgetrouw zijn voor jouw systeem hangt volledig af van de code: het IAM-beleid dat daadwerkelijk is geïmplementeerd, de TLS-versie die de service daadwerkelijk afdwingt, de verwijderingsjob die daadwerkelijk draait. De kloof tussen het document en de implementatie is precies waar audits hun bevindingen vinden, en deze ontstaat één gewone pull request tegelijk.
De diff is waar de control van staat verandert
Een control degradeert niet stilletjes. Iets verandert het: een rol wordt verruimd, een encryptie-instelling wordt verwijderd, een bewaartermijn wordt opgehoven. Elke verandering is een diff, geschreven door iemand, beoordeeld door iemand, met een moment waarop het had kunnen worden opgemerkt.
Als je een control wilt besturen, bestuur dan het moment waarop deze verandert. Het beleidsdocument kan dat niet; het weet niet dat de diff heeft plaatsgevonden. De pull request is waar de staat van de control daadwerkelijk verandert, dus daar moet deze ook worden gecontroleerd.
Bewijs dat aansluit bij de werkelijkheid
Een bijwerking van het controleren van controls bij de diff is dat je bewijs stopt met een verhaal dat je bij de audit samenstelt en begint met een registratie van wat er daadwerkelijk is gebeurd: deze wijziging raakte deze control, hier staat de clausule, hier staat hoe deze is opgelost, in de PR-thread, met tijdstempels.
heygrc verwijst naar de specifieke control bij de wijziging die deze raakt, zodat het spoor is verankerd in de code, niet in een document dat beschrijft wat de code zou moeten doen.