У вас тут явно фундаментальные проблемы с безопасностью. У вас про Threat Analysis, SAST/DAST/SIEM, security champion roles и т.п. не слышали? Удобно конечно повесть всех собак на последнего индуса (в данном случае я их не выгораживаю, там много балбесов).
Но знаете, чтоб авиация стала безопасна, нужно все сто тысяч компонентов правильно дизайнить from ground up. Так же и здесь.
В гихабе есть Secret scanning with push protection: если секрет обнаружен прямо во время git push, GitHub блокирует пуш и показывает ошибку. Чтобы пропустить, разработчик должен либо убрать секрет, либо явно подтвердить, что это не секрет.
Причёт тут Гитхаб, он про секреты в логах пишет. Эту глупость делает конкретная строка в коде, которая отслеживается средствами SAST, независимо от глупости девелопера. Если всё-таки пропустили - тогда включается уровень SIEM, при правильной настройке она отлавливает в логах и алертит. Ну и в принципе, long lived credentials уже не кошерно, пора на динамические переходить (JWT, OIDC…) стильно-модно-молодёжно. На процессуальном уровне прогонять девелоперов через хотя бы базовые секьюрити тренинги, и бить по башке за не сданные тесты после них.
Это называется Swiss Cheese Principle, multi layer defense.
Ну дак а кто ее строил еще. Все хранилось в гитлабе в environment variables типа aws_secret_dev, aws_secret_prod и так далее. Потом они получали эти секреты, присваивали в конфиг объект и печатали его в логи. Хотя в гитлабе можно настроить чтобы в зависимости от окружения нужный ключ выдавался, но они этого не знали видимо. Сейчас сделали и авторотейшн и никто кроме самого гитлаба не может их получить. Даже я их не знаю.
Ну это уже в рамках best practices. Можно пойти дальше и прикрутить внешний secrets manager типа Vault, это будет совсем красота. Дорого и сложно, но максимально гибко.
Я, когда пришел в свою контору самообучившимся зелёным новичком, то в ней было всего пара индусов, которые говорили на разных языках и исповедывали разные религии. Но это не помешало мне в течение первых полгода указать своей команде (где все в основном местные), что у них все логины и пароли пользователей в продакшине логятся на стороннем сервисе DataDog. Нашел API ключи там же в логах, в сценариях, когда запрос фэйлился, а это происходило каждый второй раз. Увидел в настройках сервера, что весь бандл кода веб-приложения отправляется единым 3-мегабайтным куском без какой-либо компрессии. Я всё это починил, настроил сервер, разбил код на чанки. Сказал об этом команде, они - окей. Уже 4-й год жду хоть единого бонуса, хоть единого повышения самой маленькой в команде зарплаты. А контора - 100% американская, одна из крупнейших в США
А да, забыл, там ещё в логи шла вся информация при регистрации новых пользователей, включая последние 5 цифр SSN.
Кстати, к вопросу, к чему это привело. Я имею в виду, что мне даже спасибо не сказали. Теперь я, когда вижу, что кто-то из команды стреляет себе в ногу, я просто жду момента, когда можно идти за порцией поп-корна. Я молча беру, не споря, и прикручиваю два аналогичных запроса, каждый из которых обращается к одному и тому же ресурсу с целью чисто получения данных, но один из них GET, а другой POST. Я молчу, потому что знаю, что им не ведомо, как посылать параметры в GET запросах. Короче, там вот такой уровень. Если укажешь на что-то подобное, то тебе сначала огрызнутся, потом позже втихую исправят. Нет, я лучше буду с берега смотреть, как корабль тонет.
Глупо беседовать с теми, кто не “шарит” в теме как ты, но все время в нее лезет. Постоянно “мимо кассы”, но лезешь в предметную область. Позоришься, эникейщик.