Делите VPN Compose датотеку? Редагујте изрендеровану копију
Приватни кључ може стајати у YAML-у, у вредности env променљиве или у разрешеном излазу који нико није погледао. Проверите копију коју заиста прилажете.
Два артефакта постоје кад год делите Compose датотеку: онај који сте написали и онај који алат изрендерује након замене променљивих. Други је често осетљивији од првог и управо њега људи залепе у пријаву проблема без читања. Ако прегледате само изворну датотеку, прегледате погрешан документ.
Упоредите шта свака копија може да садржи пре него што одлучите шта да уклоните.
Изрендеровани модел је други документ
Compose разрешава променљиве окружења, спаја override датотеке и производи ефективну конфигурацију коју читалац више не може да разликује од ручно уписаних вредности. Референца као што је назив променљиве у извору у излазу постаје сам токен налога. Структура која датотеку чини корисном за дијагностику преживљава ту трансформацију; исто чини и све што у њој никада није требало да буде.
Изрендерујте датотеку сами пре него што је приложите и третирајте тај излаз као артефакт који прегледате. Ако не можете да је изрендерујете, не можете да знате шта ћете објавити.
Тајне стоје на више места од поља за кључ
Почните од очигледног: приватни кључеви, унапред дељени кључеви, токени, лозинке и URL-ови за повезивање који у себи носе акредитиве. Затим погледајте све на шта датотека указује, јер референца није редакција. env датотека монтирана у сервис, конфигурациона датотека bind-монтирана са хоста, ознака која носи токен и аргумент команде који садржи лозинку — све то путује са распоређивањем чак и када YAML изгледа чисто. Кључ залепљен у променљиву с умирујућим називом и даље је кључ.
Путање на хосту и називи сервиса одају другу врсту информација. Назив кућног директоријума, интерни назив хоста или опсег мреже могу да идентификују особу или организацију без иједног акредитива, и тај контекст вреди уклонити из истог разлога.
Декларација тајне није сама тајна
Compose објекти тајни одвајају декларацију од материјала: сервис добија путању или циљ, а садржај живи негде другде. Задржати декларацију, а заменити материјал обично је прави избор, јер прегледач треба да види да тајна постоји и како је монтирана. Оно што не сме да преживи јесте сам садржај.
Ознаке и коментари заслужују исти третман. Коментар који каже која путања у сефу држи продукцијски кључ говори нападачу где да тражи, иако не садржи ниједан кључ.
Задржите облик да датотека још може да дијагностикује
Редакција која уклони мрежни режим, верзију слике или подешавања способности производи датотеку с којом нико не може да отклања грешке. Замените осетљиве вредности и задржите односе: који сервис шта монтира, којој мрежи приступа, који уређај му треба. То је део који читалац користи да објасни несталу путању или недоступан уређај. То је и верзија коју колега може да упореди са сопственим исправним распоређивањем.
docker compose -f compose.yaml config > rendered.yaml
grep -nE 'PRIVATE_KEY|PASSWORD|TOKEN|PSK|PrivateKey|passphrase' rendered.yaml
wc -l rendered.yaml
Не распоређујте редиговану копију као да је исправни оригинал. Она је опис, а опис који је уређен да изгледа безбедно падаће на начине који личе на грешке у конфигурацији.
Ако је материјал био изложен, замените га
Уклањање прилога не уклања копије које су други већ направили, а огледала и кешеви чувају своје. Примените процес опозива и замене који прописује издавалац за све што је исцурело, затим ажурирајте распоређивање. Тај редослед је важан, јер замена прво, а опозив касније, оставља прозор с два важећа акредитива.
За нити подршке почните од тачне грешке, верзије слике, мрежног режима и оног једног неосетљивог подешавања које је важно. Та комбинација објашњава недостајући уређај или покварену путању много чешће него кључ.