Как защитить конечные точки API REST, обслуживаемые через GCP Cloud Run? - PullRequest
2 голосов
/ 21 октября 2019

У меня есть простой веб-сайт, размещенный в Firebase, и он выполняет вызовы AJAX для конечных точек API REST в GCP Cloud Run.

Я хотел бы ограничить эти конечные точки только вызовами, исходящими с этого сайта, размещенного в Firebase. Любой вызов, исходящий из любого другого источника, не должен быть в состоянии использовать конечные точки. Каков наилучший способ сделать это?

Когда я не использовал GCP Cloud Run, я выполнял проверку хоста на стороне API, чтобы убедиться, что запрос приходит от моего клиента, но теперь с Cloud Run этоэто невозможно. Что еще можно сделать?

Обратите внимание, что веб-сайт, размещенный в Firebase, очень прост и не выполняет никакой аутентификации пользователя.

1 Ответ

1 голос
/ 24 октября 2019

Задача: ограничить доступ к службе Cloud Run отдельным веб-приложением, не полагаясь на:

  • Ограничение доступа к веб-приложению
  • Установление проверки подлинности для пользователей

Эта сложность не характерна для Cloud Run. Это общая проблема для статических сайтов, поддерживаемых API, и причина, по которой многие сайты имеют аутентификацию. Как упоминалось в комментариях к вопросу, проверка «хоста» на стороне сервера не является значимым уровнем безопасности, поскольку все в HTTP-запросе может быть подделано. Я настоятельно рекомендую вам не беспокоиться о том, чтобы ваш API оставался закрытым, или добавьте аутентификацию пользователя , чтобы сделать систему простой и подотчетной.

Если это невозможно, вы все равно можетеиспользуйте подход аутентификации, создав отдельного пользователя, встраивая учетные данные в сайт и регулярно меняя их (путем повторного развертывания в Firebase Hosting), чтобы предотвратить кражу учетных данных из-за неограниченного доступа к вашему API. Иметь Firebase Auth в середине лучше, чем простой ключ API, потому что он предотвращает доступ повторных атак к вашему API.

...