Files
huncode 839a9aeeb8
Build and deploy / deploy (push) Successful in 12s
revise February 2020 configuration articles
2026-07-31 11:14:56 +03:00

116 lines
12 KiB
Markdown
Raw Permalink 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.
# Февраль 2020 — тройное ревью автономного пакета P24 «Настройки и секреты»
Статус: **принят в publication registry 31 июля 2026 года**. Ревизии
накладываются только по stable slug и сохраняют даты и авторов базового архива:
- <code>editorial-2020-02-practice-configs-secrets</code>;
- <code>editorial-2020-02-mechanism-configs-secrets</code>;
- <code>editorial-2020-02-field-configs-secrets</code>.
Модуль экспортирует ровно три revision. В объектах намеренно нет
<code>date</code> и <code>author</code>: дата и автор остаются у исходных
записей архива. При прямом вызове <code>--print-revisions</code> stdout
содержит только JSON.
## Проход 1. Факты, версии и технические ограничения — пройдено
| Утверждение или решение | Первичный источник | Проверенная граница |
| --- | --- | --- |
| `.gitignore` защищает только новый неотслеживаемый путь | [Git: gitignore](https://git-scm.com/docs/gitignore) | Тексты не называют его очисткой уже tracked файла или истории. |
| `process.env` — вход runtime для Node | [Node.js v12: process.env](https://nodejs.org/dist/latest-v12.x/docs/api/process.html#process_process_env) | Loader в примерах добавлен самим приложением; Node не обещает типизацию, redaction или delivery policy. |
| `ENV` сохраняется в образе, а credentials не стоит передавать через Docker build arguments | [Dockerfile reference](https://docs.docker.com/reference/dockerfile/) | Статьи не объявляют ARG безопасным хранилищем и не строят обязательную cloud-native платформу. |
| Compose имеет несколько источников и приоритетов переменных | [Docker: environment variables in Compose](https://docs.docker.com/compose/how-tos/environment-variables/) | Материал не приписывает конкретную конфигурацию этому проекту; источник и итог нужно проверить в каждом контуре. |
| Удалить строку недостаточно для активного credential | [GitHub: leaked-secret remediation](https://docs.github.com/en/code-security/tutorials/remediate-leaked-secrets/remediating-a-leaked-secret) | Ротация показана как учебный маршрут. Пакет не отзывал реальный ключ и не делал production-проверку. |
Историческая граница зафиксирована сознательно: это М3 / февраль 2020 года.
Автор связывает backend loader, Docker image, CI/deploy delivery и logging,
но не выдаёт любой проект за Kubernetes-ландшафт и не рекомендует современные
secrets-платформы как исходную норму. Допустимый минимум — защищённая переменная
CI, файл с ограниченным доступом или привычный проекту канал запуска с явным
владельцем и маршрутом ротации.
Все значения в коде и конфигурации очевидно фиктивны: домен
<code>gateway.invalid</code>, <code>DEMO_ONLY_NOT_A_SECRET</code> и
<code>DEMO_NOT_A_REAL_TOKEN</code>. Реальных ключей, приватных endpoint и
рабочих имён окружений в пакете нет.
Вердикт прохода: **пройден**. Нормативные свойства отделены от учебных
примеров; современная документация использована для границ механизма, а не как
утверждение о конкретно выполненном production change 2020 года.
## Проход 2. Редактура и голос М3 / февраль 2020 — пройдено
| Ревизия | Проблема и цена в первых абзацах | Главный вопрос | Проверяемое действие и ограничение |
| --- | --- | --- | --- |
| Практика | Токен копируют из локального env в Git, image или лог; цена — ротация, остановка delivery и широкая поверхность читателей | Как описать классы конфигурации и дать сервису минимальный contract | Инвентарь, loader, безопасный шаблон и маршрут из шести шагов; выбор хранилища остаётся за проектом |
| Механизм | Runtime получает неверный URL или credential остаётся в image/log; цена — недоступность и расширение утечки во время диагностики | Где проходят границы repository, build, image, delivery, process и log | Таблица носителей, Dockerfile без секрета, loader и диагностический route; нет утверждения о фактическом deploy |
| Полевой разбор | `Authorization` попал в error-log; цена — действующий credential в нескольких носителях | Почему redaction и cleanup не равны revoke | Учебная карта incident, redaction fixture и восьмишаговая ротация; provider portal и production не запускались |
- Draft gate измерил основной текст без sources: практика — **8 457** знаков,
механизм — **8 628**, полевой разбор — **8 886**. Все три значения лежат в
коридоре 5 000–15 000; в тексте нет растягивающих вступлений и поздней
техлид-риторики.
- В трёх материалах выдержана цепочка «симптом → причина → проверка → действие».
Термины привязаны к наблюдаемой поверхности: tracked path, Docker image,
delivery, runtime loader, request ID, redact и revoke.
- У каждой revision не менее пяти смысловых разделов, таблица с
<code>caption</code>/<code>thead</code>, самостоятельный рисунок с alt и
caption, code/config example, упорядоченный маршрут и не менее двух
первичных или официальных источников.
- Тон М3 сохраняет практическую ширину автора: он уже видит стык backend и
delivery, но не приписывает команде SLO, supply-chain attestations,
универсальную secret platform или вымышленный production incident.
Вердикт прохода: **пройден**. Фактический gate подтвердил объём и структуру
всех трёх revision.
## Проход 3. Визуал и выпуск автономного пакета — пройдено в заданных границах
- <code>config-secret-boundary-2020.svg</code> показывает четыре поверхности
значения: repository, delivery, runtime и support/log. Его задача — отделить
secret от обычного config value, а не изобразить конкретный CI.
- <code>config-secret-delivery-path-2020.svg</code> ведёт от versioned шаблона
через delivery и loader к рабочему процессу и redacted report. Диаграмма
показывает, почему build и runtime не получают одинаковые данные.
- <code>config-secret-rotation-2020.svg</code> отделяет обнаружение, ограничение
распространения, replacement, revoke и follow-up. Она не изображает
несуществующий production incident.
- У SVG есть <code>title</code>, <code>desc</code>, <code>role="img"</code>,
вертикальные viewBox, контрастные карточки и короткие подписи. В файлах нет
JavaScript, <code>foreignObject</code>, внешних URL и растровых data URI.
- SVG локально отрендерены через Sharp при ширине **375 px**. Короткие подписи
читаемы, обрезания и горизонтального выхода за границы внутри SVG не найдено.
Это не browser e2e, не скриншот опубликованной страницы и не проверка
assistive technology; таких утверждений пакет не делает.
- Основной редактор независимо просмотрел все три финальные raster-версии на
375 px: вывод подтверждён. После подключения registry strict audit и
production build также пройдены; это не подменяет реальную проверку delivery
контура или ротации credential.
### Фактические команды и результаты
Команды запускаются после создания всех пяти файлов:
<pre><code>cd web
node --check scripts/upgrade-2020-02.mjs
npm run audit:draft -- scripts/upgrade-2020-02.mjs
xmllint --noout \
public/assets/editorial/2020/config-secret-boundary-2020.svg \
public/assets/editorial/2020/config-secret-delivery-path-2020.svg \
public/assets/editorial/2020/config-secret-rotation-2020.svg</code></pre>
| Проверка | Фактический результат |
| --- | --- |
| `node --check scripts/upgrade-2020-02.mjs` | PASS, код 0 |
| `npm run audit:draft -- scripts/upgrade-2020-02.mjs` | PASS: 8 457 / 8 628 / 8 886 знаков; три slug, tables, figures, code, routes, sources и локальные assets найдены |
| `xmllint --noout` для трёх SVG | PASS, код 0 |
| Локальный visual preflight | PASS: Sharp-render при 375 px, нет clipping или horizontal overflow внутри схем |
| Strict audit после подключения registry | PASS: 8 457 / 8 628 / 8 886 знаков; по одному figure и table, 2 / 2 / 1 code example |
| `npm run build` | PASS, code 0, 374 статические страницы |
| Scope/self-review | PASS: в revision нет date/author, а `articles.json` не перезаписан |
Выпусковой вердикт: **тройное ревью пройдено, пакет принят к публикации**.
Registry заменяет только редакционные поля по stable slug. Статические checks
не означают, что реальный delivery-контур, provider portal или ротация были
запущены; эти действия остаются отдельным сценарием проекта.