Forwarded from dd if=/dev/stuff of=/dev/tg
Я сдул пыль со своего блога, немного его причесал и выложил туда все публичные статьи, которые писал про функциональное программирование, в том числе переведенные на английский статьи из цикла «Введение в fp-ts» с Хабра.
Встречайте: https://ybogomolov.me 🤘🏻
Серия "Intro to fp-ts":
https://ybogomolov.me/01-higher-kinded-types
https://ybogomolov.me/02-type-classes
https://ybogomolov.me/03-nullables-exceptions
https://ybogomolov.me/04-tasks
Серия #MonadicMondays:
https://ybogomolov.me/monadic-monday-compilation-april
https://ybogomolov.me/monadic-monday-compilation-may
https://ybogomolov.me/monadic-monday-compilation-june
https://ybogomolov.me/monadic-monday-compilation-july
Прочее:
Статья про типобезопасный фронт: https://ybogomolov.me/typesafe-typescript
Статья про пакет circuit-breaker-monad: https://ybogomolov.me/circuit-breaker-in-functional-world
Недавняя заметка про комментарии к функциям как образовательный ресурс: https://ybogomolov.me/comments-as-education
В дальнейшем все материалы, которые я буду создавать, будут в первую очередь публиковаться именно в блоге.
Встречайте: https://ybogomolov.me 🤘🏻
Серия "Intro to fp-ts":
https://ybogomolov.me/01-higher-kinded-types
https://ybogomolov.me/02-type-classes
https://ybogomolov.me/03-nullables-exceptions
https://ybogomolov.me/04-tasks
Серия #MonadicMondays:
https://ybogomolov.me/monadic-monday-compilation-april
https://ybogomolov.me/monadic-monday-compilation-may
https://ybogomolov.me/monadic-monday-compilation-june
https://ybogomolov.me/monadic-monday-compilation-july
Прочее:
Статья про типобезопасный фронт: https://ybogomolov.me/typesafe-typescript
Статья про пакет circuit-breaker-monad: https://ybogomolov.me/circuit-breaker-in-functional-world
Недавняя заметка про комментарии к функциям как образовательный ресурс: https://ybogomolov.me/comments-as-education
В дальнейшем все материалы, которые я буду создавать, будут в первую очередь публиковаться именно в блоге.
ybogomolov.me
Intro to fp-ts, part 1: Higher-Kinded Types
Forwarded from ДевОпс Інженер 🇺🇦 (Oleg Mykolaichenko)
Sloth, Pyrra
Весной я упоминал спеку OpenSLO и вероятность реализации оператора, или контроллера по этой спецификации для создания дашбордов или алертов. Эта поделка была удачно забыта, но вчера в соседнем чатике нахожу тулу:
✅ https://github.com/slok/sloth
Суть Sloth - описать SLO, дашборду и алерт как манифест в YAML, в OpenSLO формате. Прикол!
В README по ссылке есть пример, а в репозитории - helm чарт.
Дальше, в комментариях вижу:
✅ https://github.com/pyrra-dev/pyrra
Pyrra - status page на анаболических стероидах и тестостероновых бустерах. Выглядит космически - собираем все сервисы платформы, и генерим одну UI для SLO. Бомба.
В issues спрашивают, будет ли поддержка описания в OpenSLO, ответ - ‘yes, for sure’.
Спонсор поста - @oleg_log, подсмотрел там эти решения.
Наша реализация с grafana-operator и GrafanaDashboard CRD внезапно стала выглядеть как Monitoring Platform 101, но уже отчетливо видно, где следующая итерация. 😅
Весной я упоминал спеку OpenSLO и вероятность реализации оператора, или контроллера по этой спецификации для создания дашбордов или алертов. Эта поделка была удачно забыта, но вчера в соседнем чатике нахожу тулу:
✅ https://github.com/slok/sloth
Суть Sloth - описать SLO, дашборду и алерт как манифест в YAML, в OpenSLO формате. Прикол!
В README по ссылке есть пример, а в репозитории - helm чарт.
Дальше, в комментариях вижу:
✅ https://github.com/pyrra-dev/pyrra
Pyrra - status page на анаболических стероидах и тестостероновых бустерах. Выглядит космически - собираем все сервисы платформы, и генерим одну UI для SLO. Бомба.
В issues спрашивают, будет ли поддержка описания в OpenSLO, ответ - ‘yes, for sure’.
Спонсор поста - @oleg_log, подсмотрел там эти решения.
Наша реализация с grafana-operator и GrafanaDashboard CRD внезапно стала выглядеть как Monitoring Platform 101, но уже отчетливо видно, где следующая итерация. 😅
GitHub
GitHub - slok/sloth: 🦥 Easy and simple Prometheus SLO (service level objectives) generator
🦥 Easy and simple Prometheus SLO (service level objectives) generator - slok/sloth
ДевОпс Інженер 🇺🇦
Sloth, Pyrra Весной я упоминал спеку OpenSLO и вероятность реализации оператора, или контроллера по этой спецификации для создания дашбордов или алертов. Эта поделка была удачно забыта, но вчера в соседнем чатике нахожу тулу: ✅ https://github.com/slok/sloth…
вот люблю красивые решения для мониторинговых дашбордов с зонтиками, бантиками и интуитивным дрилл-дауном. Но тут нашел просто идеал дашборда.
Даже если выкинуть весь хайповый мусор типа AI и NLP, то оно красивое, удобное и полезное.
Самое интересное, что видосу уже 5 лет)
Даже если выкинуть весь хайповый мусор типа AI и NLP, то оно красивое, удобное и полезное.
Самое интересное, что видосу уже 5 лет)
YouTube
Intelligent Dashboard to help total factory optimization
Fujitsu Forum 2016: http://journal.jp.fujitsu.com/en/ff2016/
#postgres #db
Очень полезная статья про тюнинг чекпоинтов в постгресе + бонусом инструкция как рассчитывать размер WAL
Очень полезная статья про тюнинг чекпоинтов в постгресе + бонусом инструкция как рассчитывать размер WAL
2ndQuadrant | PostgreSQL
Basics of Tuning Checkpoints - 2ndQuadrant | PostgreSQL
Let me walk you through the basics of tuning checkpoints in PostgreSQL, which may significantly affect performance in write-intensive workloads.
#arch
Так уж получается, что последнее время на работе чаще рисую картинки в draw.io чем кодец в ide. И проблема обычно в том, как при разрастании картинки, не превратить ее в паутину из стрелочек. Недавно открыл для себя вот такое: https://blogs.mulesoft.com/api-integration/strategy/a-visual-language-for-digital-integration/ и пока что доволен как черт! Тем кто часто рисует data-flow диаграммы и страдает -- очень рекомендую!
Кстати, в блогпосте есть несколько ссылок на крутейшие книги по системной архитектуре. Подарочек тем, кому нечего читать;)
Так уж получается, что последнее время на работе чаще рисую картинки в draw.io чем кодец в ide. И проблема обычно в том, как при разрастании картинки, не превратить ее в паутину из стрелочек. Недавно открыл для себя вот такое: https://blogs.mulesoft.com/api-integration/strategy/a-visual-language-for-digital-integration/ и пока что доволен как черт! Тем кто часто рисует data-flow диаграммы и страдает -- очень рекомендую!
Кстати, в блогпосте есть несколько ссылок на крутейшие книги по системной архитектуре. Подарочек тем, кому нечего читать;)
MuleSoft Blog
A visual language for digital integration
In my last blog, I introduced terminology that can be used to label common concepts and patterns in the realm…
Пожалуй прикопаю тут отличное объяснение на пальцах BGP anycast'а. Вдруг кому-то тоже пригодится сшивать датацентры и строить метеоритоустойчивость из палок и шишек
here blog
Об Anycast
Как сделать так, чтобы ваш сервис был всегда доступен? Дублировать, запускать несколько экземпляров. Собственно, та самая балансировка нагрузки. Когда за одним балансировщиком стоит несколько серверов, и запросы распределяются между ними. Но сам балансировщик…
Дорогие подписчики, всегда старался держать канал в стороне от политики, но то что сейчас происходит -- это полный п$здец. Украинцы, держитесь! Сил вам и здоровья! #нет_войне
#network #proxy
В очередной раз объясняя коллеге как клиенты работают с HTTP-прокси(нет, не просто меняем урл на урл прокси-сервера) понял, что надо найти хорошую статью. Внезапно нашлось с трудом, так что решил поделиться
В очередной раз объясняя коллеге как клиенты работают с HTTP-прокси(нет, не просто меняем урл на урл прокси-сервера) понял, что надо найти хорошую статью. Внезапно нашлось с трудом, так что решил поделиться
Ibm
Advanced HTTP and TCP proxy configuration
The HTTP protocol runs on top of the TCP protocol, but provides extra information about the message destination. For that reason, the two proxies are configured differently.
#auth #админство #security
Инструкция по настройке времен жизни токена в ADFS. Есть настройки и на SSO токена самого ADFS и SAML assertion’а. Хозяюшке на заметку так же полный список всех пропертей Relying Party Trust
Инструкция по настройке времен жизни токена в ADFS. Есть настройки и на SSO токена самого ADFS и SAML assertion’а. Хозяюшке на заметку так же полный список всех пропертей Relying Party Trust
Jacques Dalbera's IT world
ADFS settings WebSSOLifetime and Token Lifetime, NotBeforeSkew
This post will try to explain some relevant parameters from the ADFS side. I’m not saying the defaults aren’t good, that’s something you’ve got to decide for yourself. Introduction WS-Fed/SAML prot…
#k8s
Все кубернетесоводы наверняка всё знают про ингресы, поэтому сегодня я вам принес про темную лошадку сетей k8s. Встречаем egress. Очень советую почитать тем, у кого лютуют безопасники вооруженные файрволами
Все кубернетесоводы наверняка всё знают про ингресы, поэтому сегодня я вам принес про темную лошадку сетей k8s. Встречаем egress. Очень советую почитать тем, у кого лютуют безопасники вооруженные файрволами
docs.tigera.io
Kubernetes egress | Calico Documentation
Learn why you should restrict egress traffic and how to do it.
#postgres
Думаю, что ко всем рано или поздно приходят безопасники и просят пошифровать уютненький кластер постгреса, но, к сожалению, в ванильном постгресе нет ничего для шифрования. Для тех кто долго и мучительно выбирал между pg_crypto/костылем на драйвере в ОРМ/LUKSом, чуваки из arctype сделали обзорный гайд во все это мракобесие.
Их рецепт по TDE в конце статьи не рабочий, но обзор тем не менее все еще годный
Думаю, что ко всем рано или поздно приходят безопасники и просят пошифровать уютненький кластер постгреса, но, к сожалению, в ванильном постгресе нет ничего для шифрования. Для тех кто долго и мучительно выбирал между pg_crypto/костылем на драйвере в ОРМ/LUKSом, чуваки из arctype сделали обзорный гайд во все это мракобесие.
Их рецепт по TDE в конце статьи не рабочий, но обзор тем не менее все еще годный
#devops #swarm
Для тех кто, как и я, все еще нежной любовью любит Docker Swarm обнаружил шикарный сайтец с набором гайдов по сворму. Тут желающие найдут инструкции как
- поднять ингрес на traefic без палок шишек и ручного vrrp
- настроить прометеус с нодэкспортерами (а с оверлейной сетью сворма это то еще испытание)
- кучу других вкусностей и полезностей
Для тех кто, как и я, все еще нежной любовью любит Docker Swarm обнаружил шикарный сайтец с набором гайдов по сворму. Тут желающие найдут инструкции как
- поднять ингрес на traefic без палок шишек и ручного vrrp
- настроить прометеус с нодэкспортерами (а с оверлейной сетью сворма это то еще испытание)
- кучу других вкусностей и полезностей
dockerswarm.rocks
Docker Swarm Rocks
Docker Swarm mode ideas and tools
#как_это_работает
Котаны, у меня тут чутка прибавилосьжелания жить свободного времени и я решил вдохнуть в этот канальчик вторую жизнь и начну, пожалуй, с теперь (надеюсь) постоянной рубрики «как это работает». Так уж получилось, что я щас работаю в достаточно крупном вендоре отечественного ПО, которое вот только чайники не делает и могу чутка посливать вам инсайдерской инфы о том как устроены разные велелые програмки, которыми вы каждый день пользуетесь на рабочих местах)
Начнем, пожалуй, с того, с чем я имею дело каждый день, а именно, с кадрового документооборота (или просто КЭДО).
Вообще КЭДО, если сильно утрировать, это крайне простая штука: берем движок процессов (вполне сойдет всем знакомая Camunda), добавляем умение подписывать электронными подписями и вуаля! Охапка дров и КЭДО готов 🙂 На самом деле, все, конечно, несколько сложнее.
Для начала, подписей бывает 3: простая(ПЭП), неквалифицированная(НЭП) и квалифицированная(КЭП), и если вы хотите (а вы хотите) соблюдать законодательство, то вам придется скорее всего научиться во все 3. Законодательство, кстати, нам подарило всего-то 2 закона: № 63-ФЗ "Об электронной подписи" и № 377-ФЗ «О внесении изменений в Трудовой кодекс Российской Федерации», где первый рассказывает что такое ЭП, а второй какие документы можно подписывать какой ЭП. Внезапно, например, есть доки, которые до сих пор можно подписывать только ручкой в кадрах. Про то что такое ЭП, как ей подписывать и вот это все в следующий раз
Помимо подписей вам в вашем КЭДО еще крайне желательно было бы иметь архив. Дело в том, что ФЗ 377 еще и регламентирует сколько должны жить различные документы в вашем КЭДО и там, внезапно, есть доки со сроком жизни 75 лет (КАРЛ!). Вряд ли вы хотите хранить у себя в живой системе ПДФки 75летней давности, поэтому родина дала нам архив. Про архив тоже, видимо, будет отдельная часть.
Ну а так, накручиваем рюшек и бантиков и вот оно, цифровая трансформация вашего HR 🙂
Котаны, у меня тут чутка прибавилось
Начнем, пожалуй, с того, с чем я имею дело каждый день, а именно, с кадрового документооборота (или просто КЭДО).
Вообще КЭДО, если сильно утрировать, это крайне простая штука: берем движок процессов (вполне сойдет всем знакомая Camunda), добавляем умение подписывать электронными подписями и вуаля! Охапка дров и КЭДО готов 🙂 На самом деле, все, конечно, несколько сложнее.
Для начала, подписей бывает 3: простая(ПЭП), неквалифицированная(НЭП) и квалифицированная(КЭП), и если вы хотите (а вы хотите) соблюдать законодательство, то вам придется скорее всего научиться во все 3. Законодательство, кстати, нам подарило всего-то 2 закона: № 63-ФЗ "Об электронной подписи" и № 377-ФЗ «О внесении изменений в Трудовой кодекс Российской Федерации», где первый рассказывает что такое ЭП, а второй какие документы можно подписывать какой ЭП. Внезапно, например, есть доки, которые до сих пор можно подписывать только ручкой в кадрах. Про то что такое ЭП, как ей подписывать и вот это все в следующий раз
Помимо подписей вам в вашем КЭДО еще крайне желательно было бы иметь архив. Дело в том, что ФЗ 377 еще и регламентирует сколько должны жить различные документы в вашем КЭДО и там, внезапно, есть доки со сроком жизни 75 лет (КАРЛ!). Вряд ли вы хотите хранить у себя в живой системе ПДФки 75летней давности, поэтому родина дала нам архив. Про архив тоже, видимо, будет отдельная часть.
Ну а так, накручиваем рюшек и бантиков и вот оно, цифровая трансформация вашего HR 🙂
Внезапно, спустя почти 5 лет собрался что-то попрограмировать на C# и понял, что за эти годы язык и все что вокруг него поменялось… примерно никак :) Такое ощущение, что за пять лет изобрели только рекорд-типы (HKT что бы сделать рекорды полезными и либы для рекордов, кстати, не изобрели) и фреймворк над фреймворком. Котаны, есть сишарперы, расскажите, может чего-то вышло таки полезного?
I hate overtime
#как_это_работает Котаны, у меня тут чутка прибавилось желания жить свободного времени и я решил вдохнуть в этот канальчик вторую жизнь и начну, пожалуй, с теперь (надеюсь) постоянной рубрики «как это работает». Так уж получилось, что я щас работаю в достаточно…
#как_это_работает
(продолжение)
и так, электронные подписи.
Как мы с вами выяснили, их бывает 3: простая(ПЭП), усиленная неквалифицированная(УНЭП) и усиленная квалифицированная(УКЭП). Собственно что это такое и почему их 3? Давайте начнем с простого, т.е. с ПЭП. На самом деле, ПЭП — это просто надписьна заборе «здесь был Вася». Т.е. прямо на документе рисуется некий штамп, который позволяет идентифицировать подписанта. Прям максимально тупой аналог автографа на бумаге. Ну ок, в чем проблема, зачем еще 2 подписи? На самом деле проблемы 2: во-первых, после подписания ПЭПом документ может быть изменен. Т.е. ПЭП по-дефолту никак не контролирует изменения документа после подписания. Ну ок, скажете вы, давайте добавим в ПЭП временную метку, или, еще лучше, хэш документа. Это конечно поможет, но есть еще и вторая проблема — лигитимность подписи. Дело в том, что подписывает ПЭПом сама система документооборота, которая не является СКЗИ и вообще-то не обеспечивает никаких функций безопасности, поэтому и подделать эту подпись абсолютно не проблема. И вот тут-то вот на сцену выходят усиленные подписи (УНЭП и УКЭП). Вот эти подписи уже формируются через взрослую криптографию и происходит это в специально-обученной программе Удостоверяющий Центр (или просто УЦ). Проще всего представить все это безобразие как некую пару ключей ассиметричного шифрования (тем более, что именно так и было в прошлой редакции закона о подписях). Т.е. у нас есть задача: всегда знать, что документ был подписан определенным лицом, ну и мы так-то отлично умеем ее решать. Даем «лицу» секретный ключ, которым он зашифрует(подпишет) документ, а всем остальным дадим публичный ключ, с помощью которого они смогут пойти и проверить подпись и вуаля! На самом деле, документ даже не шифруют, а от него берут хеш и хеш шифруют, формируя как раз ту самую подпись, которую просто кладут рядом с документом или даже встраивают в документ. Примерно так и работают УНЭП и УКЭП. Для того что бы гарантировать, что документ не будет изменен после подписания, в подписи присутствуют таймстампы. Ну кажется все, ща заживем, осталось только разобраться почему усиленных подписей аж целых 2. Тут все дело в этом самом УЦ, он в этой схеме выполняет аж 3 функции: во-первых, он выпускает те самые приватные ключи, которые позволяют подписывать документы, во-вторых, он готов эти ключи у себя хранить, а в-третьих, если очень попросить(и передать хеш документа), то может даже и подписать документ усиленной подписью с меткой времени и прочими крипто-прибаутками. Осталось всего-то ничего, этот УЦ у себя завести и вот тут вот интересное: если для работы с УНЭПами вам достаточно просто купить КриптоПро DSS или что-то похожее, то если вы хотите УКЭПы, то вам придется еще и вызвать товарищ-майора и пройти с ним в отделение 10 кругов ада, что бы ваш УЦ стал квалифицированным. Поэтому, УЦ для УКЭПов крайне мало и подавляющее большинство пользуется каким-нибудь Госключем, а УЦ для УНЭПов хоть и побольше, но тоже не в каждой избушке свой, потому что стоят они как крыло самолета, благо на просторах необъятной хватает SaaSных УЦ.
Ну ок, завели/нашли/украли себе УЦ, подписывать-то как? Вот тут все зависит от УЦ и его фичей, например, часто ваша подпись может лежать в некоем контейнере(читай КриптоПро CSP) прямо у вас на компьютере. Когда вам понадобилось что-то подписать, ваш клиент (читай браузер с КриптоПро плагином) вытаскивает подпись и прилепляет ее на документ. Классно-великолепно…а как быть, если у нас подписывает, например, мобильное приложение? Заставлять всех пользователей мобильный КриптоПро ставить? Что бы не хранить ключи локально в специальных криптоконтейнерах мы можем попросить за нас это делать УЦ. В этом случае, когда мы будем что-то подписывать, мы просто расчитаем хеш документа и отправим его в УЦ. УЦ каким-то образом нас поймет кто мы такие, найдет у себя наш ключ и подпишет им документ. Вуаля, мы великолепны! Теперь мы умеем гонять документы по процессам и даже подписывать их подписями. Теперь осталось всего-ничего: научиться их хранить
(продолжение)
и так, электронные подписи.
Как мы с вами выяснили, их бывает 3: простая(ПЭП), усиленная неквалифицированная(УНЭП) и усиленная квалифицированная(УКЭП). Собственно что это такое и почему их 3? Давайте начнем с простого, т.е. с ПЭП. На самом деле, ПЭП — это просто надпись
Ну ок, завели/нашли/украли себе УЦ, подписывать-то как? Вот тут все зависит от УЦ и его фичей, например, часто ваша подпись может лежать в некоем контейнере(читай КриптоПро CSP) прямо у вас на компьютере. Когда вам понадобилось что-то подписать, ваш клиент (читай браузер с КриптоПро плагином) вытаскивает подпись и прилепляет ее на документ. Классно-великолепно…а как быть, если у нас подписывает, например, мобильное приложение? Заставлять всех пользователей мобильный КриптоПро ставить? Что бы не хранить ключи локально в специальных криптоконтейнерах мы можем попросить за нас это делать УЦ. В этом случае, когда мы будем что-то подписывать, мы просто расчитаем хеш документа и отправим его в УЦ. УЦ каким-то образом нас поймет кто мы такие, найдет у себя наш ключ и подпишет им документ. Вуаля, мы великолепны! Теперь мы умеем гонять документы по процессам и даже подписывать их подписями. Теперь осталось всего-ничего: научиться их хранить
Ну а пока я рожаю очередную часть нашего эпоса про хранение документиков, можно почитать интересное про странные цифровые подписи. Честно скажу, что ни одной из них я ни разу вживую не видел, но для любителей криптографии будет увлекательно
#go
Котаны, случайно нашел бриллиант в куче ВК видео: видос трехлетней давности с Гидры про то как Го делает асинхронщину (шедулит горутины).
Спойлер: и тут тоже ивент-лупиз семи залуп да еще и не один
Котаны, случайно нашел бриллиант в куче ВК видео: видос трехлетней давности с Гидры про то как Го делает асинхронщину (шедулит горутины).
Спойлер: и тут тоже ивент-луп
VK Видео
Dmitry Vyukov — Go scheduler: Implementing language with lightweight concurrency
Hydra, info and tickets: https://vk.cc/cc3CSR #hydraconf #IT #jugrugroup #concurrent #distributed
I hate overtime
#как_это_работает (продолжение) и так, электронные подписи. Как мы с вами выяснили, их бывает 3: простая(ПЭП), усиленная неквалифицированная(УНЭП) и усиленная квалифицированная(УКЭП). Собственно что это такое и почему их 3? Давайте начнем с простого, т.е.…
#как_это_работает
(продолжение)
Итак, мы с вам научились гонять документики по процессам и даже подписывать, давайте теперь подумаем как их хранить. Казалось, можно было бы просто скинуть это в S3 и успокоиться, но тут нас ждет неприятный сюрприз: некоторые документы надо хранить аж десятилетиями (например трудовой договор, внезапно, надо хранить аж 75 лет), а вот подписи, к сожалению, протухают. Дело в том, что подписи, как мы помним, строятся на основе сертификатов, а у сертификатов есть срок действия, поэтому когда протухнет сертификат, то подпись автоматом станет невалидной. Что бы как-то победить это безобразие, нашу подпись надо усилить до специально-обученного формата CAdES-A. Давайте разберемся, что это такое и как это нам поможет. Обычная ЭП(формата CAdES) содержит в себе хеш документа, шифрованный закрытым ключем, архивная чуть сложнее, т.к. в нее добавляется инфа о сертификатах, подписаная меткой доверенного времени. Идея в том, что мы отправляем хеш нашего документа с подписью в некие «часы»(Timestamp Authority aka TSA, например какой-нибудь Jinn Server), которые ставят на подпись отметку доверенного времени. Метка доверенного времени — это, внезапно, тоже подписанный документ и подписываться будет, в простейшем случае, хеш самой подписи + текущее время, а подписывать будут те самые «часы» своим сертификатом. Вот примерно так работает формат CAdES-T. Весь фокус в том, что серт «часов» живет очень долго… но тоже может быть отозван (например в случае компрометации). В этот момент мы делаем ход вальтом и начинаем лепить таймстампы не просто из подписи, а еще и из сертификатов, в том числе и отозванных(CRL), что позволяет нам, на самом деле, просто обоновлять таймстампы в случае протухания любого ключа (в том числе и ключа «часов»). Примерно так и работает CAdES-A.
Ну вот как-то так и победим основной челендж архивного хранения. Останется совсем чуть-чуть: реализовать все хотелки 69 приказа Росархива (сделать карточку документа со всеми метаданными, положить ее в zip рядом с документом, занести в каталог и вот это все), но это уже не проблема, а расходы 🙂
(продолжение)
Итак, мы с вам научились гонять документики по процессам и даже подписывать, давайте теперь подумаем как их хранить. Казалось, можно было бы просто скинуть это в S3 и успокоиться, но тут нас ждет неприятный сюрприз: некоторые документы надо хранить аж десятилетиями (например трудовой договор, внезапно, надо хранить аж 75 лет), а вот подписи, к сожалению, протухают. Дело в том, что подписи, как мы помним, строятся на основе сертификатов, а у сертификатов есть срок действия, поэтому когда протухнет сертификат, то подпись автоматом станет невалидной. Что бы как-то победить это безобразие, нашу подпись надо усилить до специально-обученного формата CAdES-A. Давайте разберемся, что это такое и как это нам поможет. Обычная ЭП(формата CAdES) содержит в себе хеш документа, шифрованный закрытым ключем, архивная чуть сложнее, т.к. в нее добавляется инфа о сертификатах, подписаная меткой доверенного времени. Идея в том, что мы отправляем хеш нашего документа с подписью в некие «часы»(Timestamp Authority aka TSA, например какой-нибудь Jinn Server), которые ставят на подпись отметку доверенного времени. Метка доверенного времени — это, внезапно, тоже подписанный документ и подписываться будет, в простейшем случае, хеш самой подписи + текущее время, а подписывать будут те самые «часы» своим сертификатом. Вот примерно так работает формат CAdES-T. Весь фокус в том, что серт «часов» живет очень долго… но тоже может быть отозван (например в случае компрометации). В этот момент мы делаем ход вальтом и начинаем лепить таймстампы не просто из подписи, а еще и из сертификатов, в том числе и отозванных(CRL), что позволяет нам, на самом деле, просто обоновлять таймстампы в случае протухания любого ключа (в том числе и ключа «часов»). Примерно так и работает CAdES-A.
Ну вот как-то так и победим основной челендж архивного хранения. Останется совсем чуть-чуть: реализовать все хотелки 69 приказа Росархива (сделать карточку документа со всеми метаданными, положить ее в zip рядом с документом, занести в каталог и вот это все), но это уже не проблема, а расходы 🙂
