OpenVPN profil u Gitu: šta ukloniti prije commitanja
Pročitajte datoteku radi ugrađenih ključeva, odlučite šta repozitorij smije distribuirati i opozovite prije nego što prepišete historiju.
Profili služe dvjema svrhama istovremeno: bilježe postavke veze i nose radni paket akreditiva. Ekstenzija datoteke vam ne govori ništa o tome koje od toga držite. Pročitajte sadržaj prije nego što odlučite da pripada repozitoriju.
Koraci u nastavku pretpostavljaju da se klijentski predložak razmatra za kontrolu verzija. Izvedite ih redom i zaustavite se prije nego što commitate nešto što ne možete opozvati.
Pročitajte datoteku koju namjeravate dodati u indeks
Počnite od stvarnih bajtova, jer profil koji upućuje na zasebne datoteke izgleda sasvim drugačije od onog koji ih ugrađuje. Tražite oznake PEM bloka i ugrađene oznake nazvane ca, cert, key, tls-auth i tls-crypt, i isti pregled će vam pokazati oba slučaja. Šifrirani privatni ključ se i dalje računa kao osjetljiv materijal, a zajednički tls-auth ili tls-crypt ključ je akreditiv iako nije identitet korisnika. Primijenite isti pregled na sve što se dodaje u indeks uz profil, uključujući arhive i instalacijske skripte koje upućuju na datoteku s akreditivima.
Zatim gledajte pripremljeni skup, a ne radno stablo. git diff --cached pokazuje šta će commit zaista sadržavati, a to je jedina verzija bitna za ovu odluku.
Odlučite šta repozitorij smije distribuirati
Predložak može nositi zajedničke, pregledane postavke i imenovane rezervisane oznake za sve što osoba dobije pri upisu. Ono što ne može nositi je upotrebljiv identitet, jer se repozitorij distribuira svima koji ga mogu čitati, uključujući automatizaciju. Privatni repozitorij sužava publiku, ali ne mijenja pitanje je li svaki čitatelj ovlašten za taj akreditiv.
Pravilo zanemarivanja sprječava buduća dodavanja i ne čini ništa u vezi s onim što je već zabilježeno. Tu asimetriju vrijedi usvojiti prije prvog commita, a ne poslije desetog. Imena i adrese infrastrukture su zasebna procjena: nisu autentifikacijske tajne, ali mogu otkriti više nego što tim namjerava objaviti. Donijeti tu odluku izričito umjesto da svaki redak razvrstavate u lozinku ili javno.
Ako je materijal već u historiji
Uklanjanje retka u novom commitu ostavlja staru verziju netaknutom za svakoga ko je preuzme. Tretirajte izlaganje kao stvarno: utvrdite vrstu akreditiva, zatim pronađite tijelo koje ga može poništiti. Klijentski certifikat se opoziva i lista opoziva se ponovo generiše; zajednički ključ kontrolnog kanala zamjenjuje se na serveru i na svakom klijentu koji ga koristi.
Dvije stvari imaju vrlo različit radijus djelovanja, a plan treba navesti koju izvodite prije nego što počnete. Pronađite commit koji je unio materijal pretragom tipa git log --all -S 'BEGIN PRIVATE KEY', da obim čišćenja bude poznat, a ne nagađan. Kolegina kopija ili fork možda već drži stari objekt, zato opoziv dolazi prvi, a čišćenje drugo.
Čistite tek nakon sprječavanja širenja
Prepisivanje historije mijenja svaki commit nakon onog koji uređujete, pa je prije toga potreban dogovor vlasnika repozitorija i ljudi koji u njemu rade. Prisilno guranje nije popravka; to je koordinacijski događaj s vlastitim rizikom vraćanja. Zakažite ga, napravite sigurnosnu kopiju i recite timu kada će se dogoditi.
Nakon toga provjerite trenutno stablo i preostalu historiju umjesto da vjerujete sažetku alata.
Sačuvajte ishod kao dva artefakta: predložak koji je siguran za dijeljenje i popis akreditiva izdanih kroz proces upisa. Nijedan od njih ne zahtijeva da upotrebljiv identitet živi u repozitoriju.
Ta podjela je pravo rješenje i nadživjet će sljedeću osobu koja poželi commitati profil.