OpenVPN профил у Git-у: шта уклонити пре комита
Прочитајте датотеку због уграђених кључева, одлучите шта сме репозиторијум да дистрибуира и опозовите пре него што препишете историју.
Профили служе двема сврхама истовремено: бележе подешавања везе и носе радни пакет акредитива. Екстензија датотеке вам ништа не говори о томе који од два држите. Прочитајте садржај пре него што одлучите да припада репозиторијуму.
Кораци испод претпостављају да се разматра шаблон клијента за контролу верзија. Изведите их по реду и зауставите се пре него што комитујете нешто што не можете да опозовете.
Прочитајте датотеку коју ћете ставити у индекс
Почните од стварних бајтова, јер профил који упућује на засебне датотеке изгледа сасвим другачије од оног који их уграђује. Тражите ознаке PEM блока и уграђене ознаке с именима ca, cert, key, tls-auth и tls-crypt, и исти преглед ће вам показати оба случаја. Шифровани приватни кључ се и даље рачуна као осетљив материјал, а заједнички кључ tls-auth или tls-crypt је акредитив иако није идентитет корисника. Примените исти преглед на све што се ставља у индекс уз профил, укључујући архиве и инсталационе скрипте које упућују на датотеку с акредитивима.
Затим гледајте припремљени скуп, а не радно стабло. git diff --cached показује шта ће комит заиста садржати, и то је једина верзија која је важна за ову одлуку.
Одлучите шта сме репозиторијум да дистрибуира
Шаблон може да носи заједничка, прегледана подешавања и именована места за све што особа добије при упису. Оно што не може да носи јесте употребљив идентитет, јер се репозиторијум дистрибуира свима који могу да га читају, укључујући аутоматизацију. Приватни репозиторијум сужава публику, али не мења питање да ли је сваки читалац овлашћен за тај акредитив.
Правило занемаривања спречава будућа додавања и не чини ништа у вези са оним што је већ забележено. Ову асиметрију вреди усвојити пре првог комита, а не после десетог. Имена и адресе инфраструктуре су засебна процена: нису тајне аутентикације, али могу да открију више него што тим намерава да објави. Донесите ту одлуку изричито, уместо да сваки ред разврставате у лозинку или јавно.
Ако је материјал већ у историји
Уклањање реда у новом комиту оставља стару верзију нетакнутом за свакога ко је преузме. Третирајте излагање као стварно: утврдите тип акредитива, затим пронађите тело које може да га поништи. Клијентски сертификат се опозива и листа опозива се поново генерише; заједнички кључ контролног канала замењује се на серверу и на сваком клијенту који га користи.
Оба имају веома различит радијус дејства, и план треба пре почетка да наведе који изводите. Пронађите комит који је увео материјал претрагом типа git log --all -S 'BEGIN PRIVATE KEY', да обим чишћења буде познат, а не нагађан. Колегин клон или форк можда већ држи стари објекат, зато опозив долази први, а чишћење друго.
Чистите тек након ограничавања
Преписивање историје мења сваки комит након оног који уређујете, зато је прво потребна сагласност власника репозиторијума и људи који у њему раде. Принудни push није поправка; то је координациони догађај са сопственим ризиком враћања. Закажите га, направите резервну копију и реците тиму када ће се догодити.
Након тога проверите тренутно стабло и преосталу историју уместо да верујете резимеу алата.
Сачувајте резултат као два артефакта: шаблон који је безбедан за дељење и попис акредитива издатих током процеса уписа. Ниједан од њих не захтева да употребљив идентитет живи у репозиторијуму.
То раздвајање је права поправка и надживљава следећу особу која ће пожелети да комитује профил.