Всеки път, когато споделяте Compose файл, съществуват два артефакта: този, който сте написали, и този, който инструмент изобразява след заместване на променливи. Вторият често е по-чувствителен от първия и именно него хората поставят в доклад за проблем, без да го четат. Ако преглеждате само изходния файл, преглеждате грешния документ.

Сравнете какво може да съдържа всяко копие, преди да решите какво да премахнете.

Изобразеният модел е друг документ

Compose изчислява променливите на средата, обединява файловете за заместване и създава ефективна конфигурация, която читателят вече не може да различи от ръчно написани стойности. Препратка като име на променлива в източника се превръща в самия токен на акаунта в изхода. Структурата, която прави файла полезен за диагностика, оцелява при това преобразуване; оцелява и всичко, което никога не е трябвало да бъде в него.

Изобразете файла сами, преди да го прикачите, и третирайте този изход като артефакта, който преглеждате. Ако не можете да го изобразите, не можете да знаете какво ще публикувате.

Тайните седят на повече места, отколкото в полето за ключ

Започнете с очевидното: частни ключове, предварително споделени ключове, токени, пароли и URL адреси за връзка, които съдържат идентификационни данни. После погледнете всичко, към което файлът сочи, защото препратката не е редакция. Файл за среда, монтиран в услугата, конфигурационен файл, свързан от хоста, етикет, носещ токен, и аргумент на команда с парола всички пътуват с разгръщането, дори когато 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

Не разгръщайте редактираното копие, сякаш е работещият оригинал. То е описание, а описание, редактирано да изглежда безопасно, ще се провали по начин, който прилича на конфигурационни грешки.

Ако материалът е бил изложен, заменете го

Премахването на прикачения файл не премахва копията, които други хора вече са направили, а огледалата и кешовете пазят свои. Използвайте процеса за отнемане и замяна на издателя за всичко изтекло, после обновете разгръщането. Редът има значение, защото замяна първо и отнемане после оставя прозорец с два валидни идентификатора.

В темите за поддръжка започнете с точната грешка, версията на образа, мрежовия режим и едната несекретна настройка, която има значение. Тази комбинация обяснява липсващо устройство или счупен маршрут много по-често, отколкото ключът.

Подобни статии