Перейти к содержанию

Безопасность

Принцип

Безопасность сервиса полагается на следующий принцип:

Знание сервиса не должно давать возможностей для взлома.

"Безопасность через неясность" принимается как антипаттерн, одновременно плохо сказывающийся как на безопасности, так и на разработке, эксплуатации и развитии сервиса.

Особенности

Исходя из этого принципа реализован подход, имеющий следующие особенности:

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

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

Следствия

Ограничения доступа

Для неавторизованных лиц должен быть запрещён доступ:

  • К файлу configs/.env на сервере;
  • К переменным окружения, влияющим на сервис;
  • К запущенному контейнеру на сервере;
  • К логам сервиса.

Доступ к файлам можно ограничить либо запретом на подключение по SSH или RDP, либо соответствующими правами на сам файл.

Доступ к переменным окружения подразумевает не только переменные сервера, но и переменные окружения в CI/CD-пайплайне.

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

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

Логи могут присутствовать в Sentry, либо в Grafana с источником Loki.

Важное следствие

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