Files
progcode/web/public/assets/editorial/2023/secrets-supply-chain-2023-release-decision.svg
T
huncode 42e4060f92
Build and deploy / deploy (push) Successful in 15s
revise June 2023 supply chain articles
2026-07-31 14:53:35 +03:00

70 lines
4.7 KiB
XML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 840 1040" role="img" aria-labelledby="title desc">
<title id="title">Маршрут решения при неполной цепочке поставки</title>
<desc id="desc">Дерево решения для учебного выпуска: сравнить deploy input с digest, digest с subject declaration, отдельно определить verification и границу секрета. При каждом отсутствующем факте статус остаётся manual review, а не подтверждённое provenance.</desc>
<defs>
<marker id="arrow" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="8" markerHeight="8" orient="auto">
<path d="M 0 0 L 10 5 L 0 10 z" fill="#355d8b"/>
</marker>
<style>
.bg { fill: #f6f8fb; }
.title { font: 700 34px system-ui, sans-serif; fill: #162235; }
.subtitle { font: 400 21px system-ui, sans-serif; fill: #52667f; }
.label { font: 700 24px system-ui, sans-serif; fill: #1c3049; }
.body { font: 400 21px system-ui, sans-serif; fill: #405a79; }
.small { font: 400 18px system-ui, sans-serif; fill: #65768b; }
.box { fill: #ffffff; stroke: #b9c9de; stroke-width: 2; }
.decision { fill: #eaf3ff; stroke: #5087c7; stroke-width: 2; }
.review { fill: #fff0f0; stroke: #c86060; stroke-width: 2; }
.next { fill: #edf8f1; stroke: #5d9b76; stroke-width: 2; }
.arrow { stroke: #355d8b; stroke-width: 4; fill: none; marker-end: url(#arrow); }
.no { font: 700 19px system-ui, sans-serif; fill: #a13f3f; }
.yes { font: 700 19px system-ui, sans-serif; fill: #347150; }
</style>
</defs>
<rect class="bg" width="840" height="1040" rx="28"/>
<text class="title" x="54" y="66">Deploy виден: как не придумать provenance</text>
<text class="subtitle" x="54" y="102">Каждый ответ «нет» — остановка вывода и новый вопрос evidence.</text>
<rect class="box" x="60" y="142" width="720" height="92" rx="18"/>
<text class="label" x="90" y="180">Старт: есть только deploy event</text>
<text class="body" x="90" y="212">Не считать его доказательством source или artifact.</text>
<path class="arrow" d="M285 234 L285 258"/>
<rect class="decision" x="60" y="260" width="450" height="104" rx="18"/>
<text class="label" x="88" y="302">Deploy input = digest?</text>
<text class="small" x="88" y="334">Нужен общий ключ сопоставления.</text>
<path class="arrow" d="M510 312 L540 312"/>
<text class="no" x="518" y="298">нет</text>
<rect class="review" x="550" y="260" width="230" height="104" rx="18"/>
<text class="label" x="574" y="300">Manual review</text>
<text class="body" x="574" y="330">Найти deploy input.</text>
<path class="arrow" d="M285 364 L285 408"/>
<text class="yes" x="300" y="394">да</text>
<rect class="decision" x="60" y="410" width="450" height="104" rx="18"/>
<text class="label" x="88" y="452">Subject = digest?</text>
<text class="small" x="88" y="484">Declaration не заменяет сравнение.</text>
<path class="arrow" d="M510 462 L540 462"/>
<text class="no" x="518" y="448">нет</text>
<rect class="review" x="550" y="410" width="230" height="104" rx="18"/>
<text class="label" x="574" y="450">Manual review</text>
<text class="body" x="574" y="480">Не использовать statement.</text>
<path class="arrow" d="M285 514 L285 562"/>
<text class="yes" x="300" y="548">да</text>
<rect class="next" x="60" y="564" width="720" height="180" rx="18"/>
<text class="label" x="90" y="608">Следующий технический шаг</text>
<text class="body" x="90" y="644">Отдельно определить verification identity и claims.</text>
<text class="body" x="90" y="678">Отдельно проверить secret boundary без значения секрета.</text>
<text class="small" x="90" y="716">Только затем обсуждать provenance и решение о release.</text>
<path class="arrow" d="M420 744 L420 780"/>
<rect class="review" x="60" y="782" width="720" height="96" rx="18"/>
<text class="label" x="90" y="822">До проверки: provenance not-verified</text>
<text class="body" x="90" y="854">Release остаётся manual-review-required, а не подтверждённым.</text>
<rect class="box" x="60" y="910" width="720" height="82" rx="18"/>
<text class="label" x="90" y="946">Остановка вывода безопаснее</text>
<text class="body" x="90" y="974">выдуманного подтверждения.</text>
</svg>