Пользовательская безопасность хранилища данных с помощью предоставленных учетных данных (Java, Objectify) - PullRequest
0 голосов
/ 19 июня 2020

Я создаю библиотеку, которая позволяет своим клиентам использовать Service A (скажем, это сторонний клиент для связи со службой базы данных в облаке - в частности, я говорю об Objectify и Google Cloud Datastore). База данных не имеет защиты на уровне таблиц (у вас может быть доступ на ЧТЕНИЕ / ЗАПИСЬ ко всем или ни к каким ресурсам). Я не хочу давать всем доступ к нему, чтобы предотвратить доступ к ресурсам других клиентов. Служба A может выполнять операции, используя учетные данные / токены по умолчанию (клиентские) или предоставленные учетные данные.

Моя идея состоит в том, чтобы создать Service B , который будет отвечать за получение (из моей настраиваемой службы) учетных данных (с доступом к базе данных) и использование Service A с введенные учетные данные / токен, он также будет проверять (настраиваемым способом) вызовы, чтобы проверить, есть ли у клиента соответствующие разрешения для выполнения операции.

Тем не менее, это не мешает клиентам писать / копировать мои классы и получать учетные данные и ввести их непосредственно в Service A самостоятельно. Можно как-то предотвратить это? Могу ли я как-то отличить guish выборку через библиотеку от клиентского кода? Я хотел бы, чтобы мои клиенты не могли использовать эти учетные данные. Может быть, мне следует использовать другой подход?

Я знаю, что можно настроить другое приложение, полностью управляемое мной, действующее как прокси-сервер, прослушивающий запросы / операции клиентов (save / get et c.) , но это значительно снизит производительность всего приложения и может стать еще одной точкой отказа.

...