Как закрывать бекенд API от «левого» доступа?
Вы можете делать как это делают платежные сервисы. Имеется секретный ключ, известный Вашего публичному и Вашему "приватному" серверу с API. Передаваемые данные собираются в кучу и хэшируются с секретным ключом. Это хэш для проверки отправляется дополнительным параметром для валидации на стороне приватного сервера. Кто не знает секретный ключ, не сможет правильно составить запрос.
Ну или Вам вполне можно разместить API сервер во внутренней сети с публичным сервером, если на приватный не нужен доступ из вне.
Для авторизации в API можно использовать JWT.