Безопасность
Принцип
Безопасность сервиса полагается на следующий принцип:
Знание сервиса не должно давать возможностей для взлома.
"Безопасность через неясность" принимается как антипаттерн, одновременно плохо сказывающийся как на безопасности, так и на разработке, эксплуатации и развитии сервиса.
Особенности
Исходя из этого принципа реализован подход, имеющий следующие особенности:
- Детали программного кода, доступ к документации и знание любых нечувствительных данных не даёт потенциальным злоумышленникам какого-либо способа взлома;
- Знание о местонахождении чувствительных данных не даёт доступа к ним;
- Чувствительными данными являются переменные окружения, файл с переменными окружения и содержимое базы данных;
- Доступ даже к конкретной сборке контейнера не предполагает возможности повлиять на работоспособность самого сервиса в другом окружении.
Таким образом, текущая документация может дать представление о деталях работы сервиса, но при этом не является чувствительной информацией.
Следствия
Ограничения доступа
Для неавторизованных лиц должен быть запрещён доступ:
- К файлу
configs/.envна сервере; - К переменным окружения, влияющим на сервис;
- К запущенному контейнеру на сервере;
- К логам сервиса.
Доступ к файлам можно ограничить либо запретом на подключение по SSH или RDP, либо соответствующими правами на сам файл.
Доступ к переменным окружения подразумевает не только переменные сервера, но и переменные окружения в CI/CD-пайплайне.
В данном случае, при использовании Gitlab необходимо убедиться, что доступ к переменным окружения глобальным или локальным для репозитория отсутствует для неавторизованных пользователей.
Чувствительные данные теоретически могут оказаться в логах сервиса — в этом случае доступа к таким логам также не должно быть у неавторизованных пользователей.
Логи могут присутствовать в Sentry, либо в Grafana с источником Loki.
Важное следствие
Программный код и документация могут быть публичными, но при этом в них должна отсутствовать чувствительная информация — пароли, персональные данные, коммерческая тайна или иные сведения, не предназначенные для публичного доступа.