Пры кожным апублікаванні файла 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

Не разгортвайце адрэдагаваную копію так, нібы гэта працоўны арыгінал. Гэта апісанне, а апісанне, адрэдагаванае, каб выглядаць бяспечным, будзе падаць так, як падаюць памылкі канфігурацыі.

Калі матэрыял быў выкрыты, заменіце яго

Выдаленне далучэння не выдаляе копіі, якія іншыя ўжо зрабілі, а люстэркі і кэшы захоўваюць уласныя. Скарыстайцеся працэсам адклікання і замены ў эмітэнта для ўсяго, што ўцякло, затым абнавіце разгортванне. Парадак важны, бо замена спачатку і адкліканне потым пакідаюць акно з двума сапраўднымі ўліковымі дадзенымі.

У тэмах падтрымкі пачынайце з дакладнай памылкі, версіі вобраза, рэжыму сеткі і адной несакрэтнай налады, якая мае значэнне. Гэтая камбінацыя тлумачыць зніклую прыладу або зламаны маршрут значна часцей, чым ключ.

Падобныя артыкулы