2014-11-06 2 views
1

В Accumulo вы можете обеспечить выполнение тех записей, которые возвращают итераторы Authorizations и/или сервера.Выполнение редактирования и/или редактирование обновлений в mongodb

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

Кроме того, как вы можете обеспечить, чтобы кто-то не выполнял обновление документа, если у них нет достаточных прав для обновления?

ответ

0

Авторизация MongoDB с 2,6 уровня коллекций и контроль действий, которые может выполнять пользователь, в отличие от документов, которые они могут видеть. Это означает, например, что если у пользователя есть разрешение на выполнение find в коллекции, они могут видеть все документы в коллекции, и нет возможности скрывать от них определенные документы.

Вы можете применять привилегии обновления в коллекции, удерживая привилегии обновления от пользователя, например, предоставляя им только роль read.

Существует также концептуальный обзор модели безопасности MongoDB в руководстве по эксплуатации security section.

+0

Так что, в принципе, ответ: «Нет, нет способа контролировать доступ к данным (сбор). Это все или ничего, и в этот момент вы в своей честь документируете документы, которые вы не должны видеть» – FuriousGeorge

+0

Есть абсолютно способы контролировать доступ к коллекции с использованием модели безопасности на основе ролей и привилегий, как я описал. Если у вас есть права на чтение в коллекции и напрямую подключаются к базе данных, вы сможете увидеть все части всех документов в коллекции. Но, как показано, например, [в документах '$ redact'] (http://docs.mongodb.org/manual/reference/operator/aggregation/redact/) вы можете контролировать доступ к частям документов с использованием промежуточного программного обеспечения и $ redact. – wdberkeley

+0

Так, как вы сказали - вы не можете сделать это * в БД * (например, Accumulo). У вас должно быть решение промежуточного уровня, которое вы должны навязать людям. Пример. У меня есть коллекция записей сотрудников. Мне нужна команда, чтобы иметь возможность видеть контактную информацию о своих подчиненных, но я не хочу, чтобы они видели информацию о зарплате. HR должен уметь все видеть. Оба будут иметь доступ READ, но руководители команд смогут увидеть информацию о зарплате, если я не заставлю их пройти через прокси. Это не очень хорошо подходит для общих решений. – FuriousGeorge

Смежные вопросы