AppSECT.A.
378 subscribers
427 photos
9 videos
127 links
Блог Ильи Шмакова

geminishkv.tech

- AppSec Toolchain
- DevOps
- Процессы DevSecOps
- Infosec Risks
- PMI
- Кулуарный ИБ

AppSec Teamlead СберСпасибо @sberbank

Лидер findevsecops.ru @fintechassociation

Преподаватель @bmstu1830, @miptru
Download Telegram
🤔 Little’s Law in Queuing Theory для управления в математическом представлении

Салют,
Я тут вспомнил, что в итоге вышка матана пригождается, кто бы что не говорил 😅 Да и в целом, если ей правильно пользоваться, то очень эффективно можно просчитывать риски влияния человеческих ресурсов и своей нагрузки.

По этой причине я предлагаю тебе вместе посмотреть на проектное управление уже с этой точки зрения.

Давай обсудим базу, когда у тебя оверохват и перегруз и тебе надо как то этим управлять, ладно когда есть выстроенный конвейер и ты можешь быть адаптивен, а что если он только формируется? Вот поэтому посмотрим на "Закон Литтла о потоках/ очередях" и как сохранить себя от выгорания.

Закон Литтла

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


Фишка в чем, что этот закон незаменим для понимания “work in progress” WIP для Kanban, Lean и ITSM/ ITIL.

Давай посмотрим внимательнее на него

Из-за выработанной практик проектного управлении и необходимости оценки временных затрат, ресурсов, которые конвертируются в финансовые затраты мы видим, что закон может быть справедлив для стационарной системы исходя из следующих примеров: курьерская доставка, очередь клиентов у банкомата.

То есть, при обязательном условии, что процессы не должны находяться в простое и задачи не вытесняются из очереди - мы увидим, что он работает, за исключением случаев адаптивной методологии.


Представь, что каждый час тебе поступает 250 заявок на какие то типовые работы и ты успеваешь их сделать, но в какой то момент времени они к тебе начинают задерживаться на 15 минут, тогда:
- всегда будет примерно 188 заявок в час, если числа стабильны. По сути на других цифрах ты можешь посчитать свою задачу самостоятельно, эта тема еще прикидывается на стадиях poker planning (boroda) и имеет story point.

Что дает рост WIP?

- увеличивает количество одновременных отвлечений и потерю фокуса
- замедляет каждую задачу временем на переключения между задачами
- увеличивает суммарное Lead Time
- влияет на выгорание, стресс, спад качества результата


Тем самым, закон Литтла подсказывает, что необходимо дробить количество задач на итерации, следовательно появляется для адаптивной методологии scrum, который берет спринты и контролирует выгорание, а также проводит ретроспективу

Поэтому это важная модель, когда ты строишь проектное управление и пытаешься понять где застреваешь и почему так долго делаются задачи или где у тебя расфокусировка?

Итого:

- закон Литтла универсален, помогает прогнозировать загрузку команды, управлять очередями и избегать потерь времени
- мониторьте throughput команды, для стабильности
- анализируйте lead time и WIP для поиска узких мест и перегрузов
- подход бизнеса одинаков: уменьшать WIP, далее ускорять lead time и повышать производительность


#specialty #pmcases #pmi #devsecops #humanres
🔥3
🏆 Премия по DevSecOps для финтех рынка РФ

Салют,
Сегодня хочу поделиться с тобой классной темой, из первых рук, только тсссс.

Мы с коллегами начали создавать премию по финтеху для рынка РФ: "Безопасность начинается с кода".

Безопасность в разработке программного обеспечения является критически важной для защиты данных пользователей и предотвращения кибератак.

Премия по безопасной разработке подчеркивает важность этой темы и поощряет лучшие практики в индустрии.

Стратегия коммуникационного сопровождения премии будет строиться по двум ключевым трекам, объединяющим общие цели и учитывающим разные аудитории: менеджмент и разработка, но уже чисто техничка.

Основа концепта следующая:

- представление практик, кейсов, инструментов и методологий через контент и мероприятия премии
- содействие обмену опытом и повышению квалификации для преодоления кадрового дефицита и трудностей в соблюдении стандартов
- стратегическая роль безопасности разработки в защите активов и соблюдении регуляторных требований
- влияние инвестиций в безопасную разработку на снижение рисков кибератак и убытков
- необходимость интеграции безопасности в бизнес-процессы и формирования культуры защиты во всей организации.


По итогу драфт премий:

- «Фундамент безопасности: DevSecOps-революция в банках»
- «Страховой щит: зрелые практики безопасности в страховом бизнесе»
- «Региональный импульс: развитие DevSecOps в регионах»
- «Открытые горизонты: Open Source в безопасности ПО»
- «Архитекторы безопасности: интеграция DevSecOps»
- «Технологический прорыв: новые горизонты безопасности ПО»
- «Новые герои безопасной разработки»
- Специальная премия от Ассоциации ФинТех


Stay tuned 🙏

#appsec #devsecops #specialty #toolchain #vulnmanagement #toolchain #compliance #gost #techsolution #pmicases
🔥7❤‍🔥2
🛠 Cheatsheet тебя "качает": GitSCM

Салют,
сегодня хочу поделиться с тобой некоторым cheatsheet по gitscm, он поможет тебе разобраться в тематике и начать коммитить, решать конфликты с историчностью версий при разработке ПО.

База


$ git init # Инициализация пустого локального репозитория
$ git remote add origin URL_link # Связывание удалённого репозитория с именем "origin" по ссылке "URL_link" с локальным

$ git pull origin name_branch # Ветка из которой мы берем изменения для тестирования
$ git remote show # Показать подключенные удалённые репозитории
$ git status # Показывает состояние локального репозитория (отслеживаемые, изменённые, новые файлы и пр.)

$ git add . # Добавить в индекс все новые, изменённые, удалённые файлы из текущей директории и её поддиректорий
$ git commit -S -m"added sources" # Зафиксировать в коммите проиндексированные изменения (закоммитить), добавить сообщение

$ git push origin name_branch # Отправляем изменения из локального репозитория в удалённый в ветку "name_branch"
$ git show HEAD # Информация о последнем комите (git log -1)
$ git push --set-upstream origin new-name # Установка upstream (связывает локальную ветку с удаленной)
$ git push origin :old-name # Удаление старой ветки в удаленном репо
$ git push origin new-name # Публикация новой ветки

$ git log --oneline --graph --decorate --all
$ tree -I "katalog|katalog" # Вывод с исключением каталогов для дерева проекта


Работа с index


$ git init # Инициализация пустого локального репозитория
$ git remote add origin URL_link # Связывание удалённого репозитория с именем "origin" по ссылке "URL_link" с локальным

$ git pull origin name_branch # Ветка из которой мы берем изменения для тестирования
$ git remote show # Показать подключенные удалённые репозитории
$ git status # Показывает состояние локального репозитория (отслеживаемые, изменённые, новые файлы и пр.)

$ git add . # Добавить в индекс все новые, изменённые, удалённые файлы из текущей директории и её поддиректорий
$ git commit -S -m"added sources" # Зафиксировать в коммите проиндексированные изменения (закоммитить), добавить сообщение

$ git push origin name_branch # Отправляем изменения из локального репозитория в удалённый в ветку "name_branch"
$ git show HEAD # Информация о последнем комите (git log -1)
$ git push --set-upstream origin new-name # Установка upstream (связывает локальную ветку с удаленной)
$ git push origin :old-name # Удаление старой ветки в удаленном репо
$ git push origin new-name # Публикация новой ветки

$ git log --oneline --graph --decorate --all
$ tree -I "katalog|katalog" # Вывод с исключением каталогов для дерева проекта


Конфликты, с которыми ты точно столкнешься



$ git remote set-url origin ssh://git@github.com_gitlab.com/username/newRepoName.git # Замена URL
$ git remote -v # Проверка правильности указанного link
$ git remote set-head origin -a
$ git pull --rebase origin name_branch # Переинициализация

$ git reset HEAD file # Убирает файл из индекса
$ git reset HEAD~ # Отмена последнего commit
$ git reset --hard HEAD~ # Удаление commit с изменениями

$ git push origin --delete name_branch / git branch -rD origin/name_branch
$ git branch -d name_branch # Удаление локального репо
$ git checkout -- file # Отменяет изменение

$ git clean -fdn # Удаляет неотслеживаемые файлы и каталоги с предварительным просмотром

# Установка новой master/main ветки
$ git fetch origin
$ git fetch origin # Жесткая перезапись репозитория

$ git branch -u origin/gpages gpages
$ git branch -m master gpages


Итого: подсказки и отредаченные материалы из опыта коллег, преподов и окружающих тебя лиц могут тебе помочь расти, то есть найти свои зоны роста и продвигаться далее. Качайся, это поможет 🙏

#toolchain #appsec #specialty #pmcases #paper
🔥4❤‍🔥2
🚀 Дискуссия «Карьерные треки безопасной разработки: от ИТ к безопасности и обратно»

Салют,
Завтра будет ивент, на который позвали Т1, а именно ИМПУЛЬС, ты можешь подключиться и послушать о чем мы с ребятами будем говорить.

Среди участников:

- Модератор: Дудник Степан Технический директор, ВHDTech, лидер сообщества FinDevSecOps АФТ
- Герасимов Фёдор Эксперт отдела безопасной разработки, ИТ-холдинг Т1, руководитель сообщества FinDevSecOps АФТ
- Макрушин Денис Директор по продуктам безопасной разработки, Яндекс, лидер сообщества FinDevSecOps АФТ
- Когос Константин Директор Института интеллектуальных кибернетических систем, НИЯУ МИФИ
- Погорелко Егор Руководитель направления исследования и разработки РУНЦ «Безопасности», МГТУ им. Н.Э. Баумана


Мы рассмотрим всю подноготную безопасной разработки с ребятами и классные вопросы по трекам развития и я думаю тебе будет прозрачнение, как на сейчас все выстраивается в отрасли 😄

Регистрируйся 🙏

#devsecops #roadmap #meetup #conf #compliance #gost #кулуарка
🔥4
Салюты,
Напоминалочка, что скоро будет в зале Сигнал обсуждать классную тему, которую подсвечивал тут.

Жду тебя онлайн и офлайн 🙏

#devsecops #roadmap #meetup #conf #compliance #gost #кулуарка
🔥4
🛠🏆 DevSecOps Toolchain MAP Release v.1.1.2

Салюты,
Я тут запилил карту инструментов по AppSec и ее класам, Да, именно та самая о которой ранее писал в этом посте и я прям хочу с тобой поделиться этим.

Смотри, ты можешь ее почекать и попользоваться фильтрацией.

Вот тут source проекта с обертками на js, логикой на py + json из yaml. Ты можешь посмотеть репы и шилды с деталями, релизнул недавно, но никак не могу устоять перед тем, что бы поделиться с тобой этим. До нг планирую еще подкрутить пару классных штук.

Для твоего удобства натянут на mkdocs material и доступен по линку с адаптивной версткой, но ты же понимаешь, что с телефона таблица не удобно, поэтому есть фильтрация. Табличка подстраивается под размер экрана и компакта на сколько это возможно, записей на сейчас о тулах 267.

- У каждого тула указан тип лицензии, в менюшке есть страничка описания лицензий и у меня тут можешь почекать по #licenses. Я скоро продолжу также эту историю. Помимо этого там есть описание и прочие классные отмеченные штуки, которые помогут тебе определиться с тем, нужен тебе тул или нет.

- В таблице предусмотрен open-source решения, вендорские по рынку РФ и из-за заграницы. Также там есть сертификаты ФСТЭК.


Сейчас функционал допиливается и пока работа ведется, обрати внимание, что ты один из первых, кто это видит прямо сейчас 🏆

Кусок таблицы в каруселе к данному посту. Фильтрация выглядит следующим образом и я покажу пару моментов, какие данные она выводит, включает свободный поиск по тулам внутри таблицы, которая собирается из yaml.

Основные моменты:

- карта дает возможность выбрать выгодные для себя инструменты под все необходимые ситуации: когда нет денег, когда не можем интегрировать большой инструмент, когда никого нет и приходится делать все одному и тд.
- карта инструментов показывает какие есть классы и типы инструментов
- предыдущая версия карты находится
тут

- агрегируются 'meta' данные о наличии сертификации, типе лицензии ПО, может ли быть импортозамещено, какой язык программирования, какие виды отчетов и иное
- вся верстка натянута на ' mkdocs material'
- мы принимаем 'pull requeste' на изменения для того, что бы эта карта шарилась и мы могли работать в едином поле с комьюнити. Сейчас релиз будет пофикшен и скоро мы зальем вот
сюда
и опубличим, а тебе достается из первых рук то, что имеется на сейчас
- имеется фильтрация по 'meta' данным
- убрали некоторые инструменты, которые не поддерживаются или пользуются меньшей популярностью, вследствие чего они не обновляются
- актуализировали списки инструментов, на сейчас готовятся правки по ткстам и добавление материалов описания
- добавили MLSecOps, то есть быть в тренде 😅


Release v.1.1.2 можешь посмотреть тут с артефактами и описанием как разворачивается, и да, не забывай про лицуху и уведомление.

Stay Tuned 🙏

#appsec #devsecops #roadmap #specialty #toolchain #techsolution #gost #paper
🔥4❤‍🔥3
🛠 Cilium как Container Network Interface k8s

Салют,
Сегодн я хочу поделиться с тобой описанием, относительно CNI контролей под Kubernetes. Мы посмотрим на CNI плагин Cilium. Но мы рассмотрим его в большей степени со стороны технички.

Служит для обеспечения сетевой связности, безопасности и наблюдаемости между рабочими нагрузками, как подами в Kubernetes. Работает на уровне ОС. Cilium использует eBPF для гибкого и эффективного управления сетевым трафиком и политиками безопасности путем настройки сети пода через eBPF-программы в ядре хоста. Тип лицензии: Open-source Apache 2.0.


Особенности:

- Сетевые возможности: CNI, LoadBalancer как CiliumClusterMesh
- Политики безопасности на основе identity-aware, шифрование трафика, защита от DDoS, фильтрация DNS, соответствие FIPS
- Может использоваться через minikube или kind для тестирования сетевых политик и поведения
- CiliumNetworkPolicy можно применять как манифесты
- Policy работают на уровне приложений L7 для HTTP, gRPC, Kafka и т.д., а не только на сетевом уровне L3/L4
- CiliumNetworkPolicy сами по себе являются декларативными правилами и можно настроить default-deny режим


Применение


helm repo add cilium https://helm.cilium.io/
 
# Установка Cilium в кластер Kubernetes
helm install cilium cilium/cilium --version 1.14.4 \
  --namespace kube-system \
  --set cluster.name=my-cluster \
  --set cluster.id=1


Policy & Deploy


deploy_cilium:
  stage: deploy
  image:
    name: alpine/helm:latest
    entrypoint: ['']
  script:
    - helm repo add cilium https://helm.cilium.io/
    - helm upgrade --install cilium cilium/cilium
      --version 1.14.4
      --namespace kube-system
      --set cluster.name=${CLUSTER_NAME}
      --set cluster.id=1
      --set hubble.relay.enabled=true
      --set hubble.ui.enabled=true

security_policies:
  stage: deploy
  image:
    name: bitnami/kubectl:latest
    entrypoint: ['']
  script:
    - kubectl apply -f manifests/cilium-network-policies/
  dependencies: []


CiliumNetworkPolicy пример


apiVersion: "cilium.io/v2"
kind: CiliumNetworkPolicy
metadata:
  name: "l7-rule"
spec:
  endpointSelector:
    matchLabels:
      app: myService
  ingress:
  - fromEndpoints:
    - matchLabels:
        app: frontend
    toPorts:
    - ports:
      - port: '80'
        protocol: TCP
      rules:
        http:
        - method: "GET" # Разрешить только GET-запросы
          path: "/api/v1/data.*" # ко всем путям, начинающимся с /api/v1/data
        - method: "POST"
          path: "/api/v1/upload" # и конкретно на этот путь
        - method: "GET"
          path: "/public/.*" # Разрешить доступ к публичным ресурсам


Политика "default-deny" для namespace


apiVersion: cilium.io/v2
kind: CiliumNetworkPolicy
metadata:
  name: allow-dns
  namespace: production
spec:
  endpointSelector: {}  # Все pod'ы
  egress:
  - toEndpoints:
    - matchLabels:
        k8s-app: kube-dns
    toPorts:
    - ports:
      - port: "53"
        protocol: UDP
      - port: "53"
        protocol: TCP


Итого:

- Cilium полностью заменяет kube-proxy, реализуя балансировку нагрузки на основе eBPF
- Для приложений с REST API или gRPC Cilium позволяет внедрить политику "наименьших привилегий"
- Cluster Mesh позволяет безопасно соединять несколько кластеров Kubernetes,
- Вместо фильтрации по IP-адресам присваивает идентификатор безопасности группам подов с одинаковыми метками, где встраивается в каждый сетевой пакет, что позволяет проверять права связи на узле-получателе, независимо от того, где запущен под
- Расширяет стандартные NetworkPolicy Kubernetes, позволяя описывать правила на основе протоколов HTTP, gRPC и Kafka. Это позволяет разрешать или запрещать конкретные API-вызовы, HTTP-методы (GET, POST) или пути URL
- Может автоматически шифровать весь трафик между подами в кластере или даже между кластерами с использованием IPsec или WireGuard
- Безопасность исходящего трафика может быть реализована через политики, привязанные к DNS-именам


#appsec #toolchain #containersecurity #reco #techsolution #paper
🔥7
Салюты,
Пятничное 😅🫶

#lol #кулуарка
🤣8
🏆 Ежегодный митап сообщества FinDevSecOps

Хочу поделиться с тобой новостью, что у нас тут проходит очередной митап нашего сообщества findevsecops.ru.

Ассоциация ФинТех @fintechassociation проводит митап: 08 декабря 2025 с 11.00 до 17.00.

Место проведения: офис Т1 по адресу г. Москва, Ленинградский проспект, 36с41, 23 этаж, амфитеатр.

Также будет доступно онлайн подключение к трансляции и ты сможешь увидить классных спикеров по финтеху и безопасной разработке в ИБ.

Лидеры FinDevSecOps и приглашенные эксперты в своих выступлениях ответят на следующие вопросы:

- Как выстроить конвейер безопасной разработки в финансовой организации?
- Как создать эффективную команду безопасной разработки?
- Возможно ли построить безопасную разработку как сервис?
- Как оценить зрелость и эффективность команд разработки, AppSec и SecChampion в частности?


Необходима регистрация по форме.

Поделюсь немного контентом, который тебя ждет 🙏

#appsec #devsecops #pmi #specialty #toolchain #vulnmanagement #techsolution #meetup #кулуарка
🔥5
🛠 Cheatsheet тебя "качает": Docker

Давай выдохнем и просто закинем в закладочки, сегодня на последок хочу поделиться с тобой cheatsheet по Docker и какие могут быть проблемы/ решения.

Общее описание


docker exec -it <container_name_or_id> <command> # выполнение команды
-i  # интерактивный режим (позволяет передать ввод)
-t  # выделяет псевдотерминал (tty) для взаимодействия.
<container_name_or_id>  # имя или ID контейнера.


Базис


$ docker build
$ docker build --no-cache
$ docker compose build --no-cache

$ docker image ls all # все образы

# Создает только определенную службу
$ docker compose build <service>


$ docker container ls # все запущенные контейнеры
$ docker container ls -all # все контейнеры

# привилегированный режим
$ docker run -d --privileged --name docker go:1.16


Compose


$ docker compose up
$ docker compose up -d # Запускает контейнеры в отсоединенном режиме в фоновом режиме
$ docker compose start # Запускает уже созданные контейнеры (не перестраивает и не создает заново)
$ docker compose up --build # Создает изображения, а затем запускает контейнеры
$ docker compose up --force-recreate # Воссоздает контейнеры, даже если ничего не изменилось
$ docker compose up --build --force-recreate # Полностью перестраивает и воссоздает контейнеры



$ docker compose stop
$ docker compose down # Останавливает и удаляет контейнеры, сети и тома по умолчанию
$ docker compose down --volumes # Удаляет контейнеры, сети и именованные/анонимные тома
$ docker compose down --rmi all # Также удаляет все построенные изображения
$ docker compose rm # Удаляет остановленные контейнеры служб (после остановки)
$ docker compose kill # Принудительно останавливает запуск контейнеров


Списки и профили


$ docker compose ps # Списки запущенных служб и их состояние
$ docker compose logs # Отображение журналов для всех служб
$ docker compose logs -f
$ docker compose exec <service> sh # Открывает оболочку внутри работающего контейнера
$ docker compose config


Итого: подсказки и отредаченные материалы из опыта коллег, преподов и окружающих тебя лиц могут тебе помочь расти, то есть найти свои зоны роста и продвигаться далее. Качайся, это поможет 🙏

#toolchain #appsec #specialty #pmcases #paper #containersecurity
🔥5