Как масштабировать авторизацию для моей системы управления ресурсами - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть две системы

Одна система управления доступом, где я храню ссылки на ресурсы, пользователей и права доступа между ними.

Одна система управления ресурсами, где я храню данные о ресурсах и предоставляю и API для управления ими и их запроса.

Когда в системе управления ресурсами получен запрос, в систему управления доступом отправляется запрос, чтобы получить список идентификаторов ресурсов, к которым у текущего пользователя есть доступ. , Этот список используется в качестве критерия в базе данных Resource Management PostgreSQL при извлечении данных из нее, поэтому я возвращаю результаты только для данных, к которым у пользователя есть доступ.

Это отлично работает в небольшом масштабе, когда пользователь иметь доступ к нескольким сотням ресурсов, но как мне масштабировать это, чтобы работать для пользователей с доступом к 2000 или 20000 ресурсам? Я не могу передавать 20000 идентификаторов ресурсов между моими системами для каждого запроса!

Ответы [ 2 ]

1 голос
/ 18 февраля 2020

Вы можете создать временную таблицу для идентификаторов ресурсов и выполнить объединение с более постоянными данными в БД. Возможно, стоит попробовать проверить, подходит ли он вашему варианту использования.

1 голос
/ 18 февраля 2020

Кажется, проблема в вашем дизайне.

Странно разделять объекты и управлять их доступом в разных системах. Помимо неэффективности, которую вы испытываете, будет сложно поддерживать синхронизацию систем.

Один проверенный метод (который использует PostgreSQL) - это сохранение разрешений для самих объектов в виде «списка контроля доступа». , Тогда вы узнаете, может ли кто-то получить доступ к объекту или нет без получения дополнительных данных. Еще одним преимуществом является то, что разрешения автоматически удаляются вместе с объектом.

...