Документальная база ACL - PullRequest
0 голосов
/ 24 мая 2019

Это гораздо более концептуальный вопрос, чем другие.Мне интересно, есть ли лучшая практика и где я могу прочитать об этом, а также не знаю, как спросить об этом в Google.

Я работаю над моделированием базы данных mongodb.Допустим, у нас есть коллекция chair, которая должна храниться в отдельной коллекции от коллекции user, потому что стул может принадлежать нескольким пользователям и иметь к ним доступ.Это поднимает проблему списка контроля доступа.Обычно в других проектах меня использовали для определения разрешений для пользовательской коллекции:

{
  _id: 5ce3f94a6591bd5a3accd22e,
  permissions: [
    {
      collection: 'chairs',
      path: 'serialNumber',
      allowedValues: /^AU-1234-.*/ig,
      roles: ['read']
    }
  ]
}

Таким образом, мы можем предоставить пользователю доступ к каждому креслу, для которого его serialNumber начинается с 1234.

Прямо сейчас мне интересно, не будет ли лучше определить кресло с разрешенными пользователями:

{
    _id: ...,
    serialNumber: 'AU-1234-567',
    allowedUsers: [{
      user: 5ce3f94a6591bd5a3accd22e,
      roles: ['read'],
    },
    ... ]
}

Это больше похожий подход к файловым системам Unix, где любой файлимеет своего владельца и группу, и каждый пользователь может принадлежать к нескольким группам.Имеет ли это смысл в mongodb?

Я видел, что, например, модуль acl хранит отдельные коллекции, чтобы предоставить пользователю доступ к ресурсам, но кажется убийственным решением и сложным в обслуживании.Есть ли какие-либо рекомендации или просто Do as much better as you can.

...