Как ограничить доступ для разработчика-стажера?
В самом вопросе уже находится ответ :) Если у вас есть отдельные сервера для тестирования и отдельная виртуальная машина для разработки, то нужно просто закрыть доступ на продакшн базы/сервера.

А на тестовых серверах использовать тестовые базы. Если нужно много данных, нагенерить их.
1. Чтобы я бы сделал — разграничил всё решение — на отдельные проекты — компонентов, в отдельные репозитории.
2. Дал доступ новому разработчику на нужные ему репозитории, пусть развлекается там, изменения его кода пусть апрувят более продвинутые разработчики после проверки его кода, например.

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