Files
progcode/web/public/assets/editorial/2020/config-secret-boundary-2020.svg
T
huncode 839a9aeeb8
Build and deploy / deploy (push) Successful in 12s
revise February 2020 configuration articles
2026-07-31 11:14:56 +03:00

38 lines
3.9 KiB
XML

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 720 1220" role="img" aria-labelledby="title desc">
<title id="title">Граница между настройкой и секретом</title>
<desc id="desc">Вертикальная схема показывает четыре поверхности: репозиторий хранит имена и шаблон, delivery передаёт значение отдельно, runtime валидирует его, а лог получает только маску.</desc>
<rect width="720" height="1220" rx="32" fill="#f8fafc"/>
<text x="360" y="58" text-anchor="middle" font-family="Arial, sans-serif" font-size="30" font-weight="700" fill="#172033">Граница настройки и секрета</text>
<text x="360" y="92" text-anchor="middle" font-family="Arial, sans-serif" font-size="22" fill="#475569">У каждого значения — свой допустимый носитель</text>
<g font-family="Arial, sans-serif">
<rect x="58" y="140" width="604" height="178" rx="24" fill="#e0f2fe" stroke="#38bdf8" stroke-width="3"/>
<text x="94" y="188" font-size="28" font-weight="700" fill="#0c4a6e">1. Репозиторий</text>
<text x="94" y="232" font-size="22" fill="#0c4a6e">Имена, описание, шаблон</text>
<text x="94" y="266" font-size="22" fill="#0c4a6e">Только фиктивные defaults</text>
<text x="94" y="296" font-size="20" fill="#075985">Секрет сюда не попадает</text>
<path d="M360 318 L360 374" stroke="#64748b" stroke-width="6" marker-end="url(#arrow)"/>
<rect x="58" y="386" width="604" height="178" rx="24" fill="#dcfce7" stroke="#4ade80" stroke-width="3"/>
<text x="94" y="434" font-size="28" font-weight="700" fill="#14532d">2. Delivery</text>
<text x="94" y="478" font-size="22" fill="#14532d">Защищённая переменная или файл</text>
<text x="94" y="512" font-size="22" fill="#14532d">Есть владелец смены</text>
<text x="94" y="542" font-size="20" fill="#166534">Не печатаем value в job</text>
<path d="M360 564 L360 620" stroke="#64748b" stroke-width="6" marker-end="url(#arrow)"/>
<rect x="58" y="632" width="604" height="178" rx="24" fill="#fef3c7" stroke="#fbbf24" stroke-width="3"/>
<text x="94" y="680" font-size="28" font-weight="700" fill="#78350f">3. Runtime</text>
<text x="94" y="724" font-size="22" fill="#78350f">Loader проверяет обязательные имена</text>
<text x="94" y="758" font-size="22" fill="#78350f">Процесс получает нужное значение</text>
<text x="94" y="788" font-size="20" fill="#92400e">Пустой ключ останавливает запуск</text>
<path d="M360 810 L360 866" stroke="#64748b" stroke-width="6" marker-end="url(#arrow)"/>
<rect x="58" y="878" width="604" height="178" rx="24" fill="#fae8ff" stroke="#e879f9" stroke-width="3"/>
<text x="94" y="926" font-size="28" font-weight="700" fill="#701a75">4. Лог и поддержка</text>
<text x="94" y="970" font-size="22" fill="#701a75">Имя переменной и request ID</text>
<text x="94" y="1004" font-size="22" fill="#701a75">Значение заменено на [REDACTED]</text>
<text x="94" y="1034" font-size="20" fill="#86198f">Диагностика без копии секрета</text>
</g>
<rect x="58" y="1100" width="604" height="66" rx="16" fill="#e2e8f0"/>
<text x="360" y="1140" text-anchor="middle" font-family="Arial, sans-serif" font-size="22" font-weight="700" fill="#334155">Секрет нужен процессу, а не всем артефактам</text>
<defs>
<marker id="arrow" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="8" markerHeight="8" orient="auto"><path d="M0 0 L10 5 L0 10 Z" fill="#64748b"/></marker>
</defs>
</svg>