Spec-Zone.ru › RethinkDB ruby

Команда ReQL: grant

Синтаксис команды

r.grant("username", {:permission => bool[, ...]}) → object
db.grant("username", {:permission => bool[, ...]}) → object
table.grant("username", {:permission => bool[, ...]}) → object

Описание

Назначение или отмена разрешений доступа для учетной записи пользователя, глобально или по базе данных или по таблице.

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

  • read позволяет читать данные в таблицах.
  • write позволяет изменять данные, включая вставку, замену/обновление и удаление.
  • connect позволяет пользователю открывать HTTP-соединения через команду http. Это разрешение может быть предоставлено только на глобальном уровне.
  • config позволяет пользователям создавать/удалять вторичные индексы в таблице и изменять конфигурацию кластера; создавать и удалять таблицы, если разрешение предоставлено на уровне базы данных; и создавать и удалять базы данных, если разрешение предоставлено глобально.

Разрешения могут быть предоставлены на глобальном уровне или для определенной таблицы или базы данных. Область действия определяется вызовом grant самостоятельно (например, r.grant(), в таблице (r.table().grant()) или в базе данных (r.db().grant()).

Команда grant возвращает объект следующего формата:

{
    :granted => 1,
    :permissions_changes => [
        {
            :new_val => { new permissions },
            :old_val => { original permissions }
        }
    ]

Поле granted всегда будет 1, а список permissions_changes будет содержать один объект, описывающий новые значения разрешений и старые значения, с которых они были изменены (которые могут быть nil).

Разрешения, не определенные на локальном уровне, наследуются от следующей по объему области. Например, операция записи в таблицу сначала проверит, установлены ли разрешения write явным образом в true или false для этой комбинации таблицы и учетной записи; если нет, будут использоваться разрешения write для базы данных, если они явно установлены; а если ни для таблицы, ни для базы данных разрешения для этой учетной записи не установлены, будут использоваться глобальные разрешения write для этой учетной записи.

Примечание: Для всех учетных записей, кроме специальной, определенной системой admin учетной записи, разрешения, которые не заданы явно ни в какой области, фактически будут false. Когда вы создаете новую учетную запись пользователя, вставив запись в систему таблиц, эта учетная запись не будет иметь никаких разрешений, пока они явно не будут предоставлены.

Для получения полного описания разрешений, ознакомьтесь с разрешениями и учетными записями пользователей.

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

> r.db('users').grant('chatapp', {:read => True, :write => true}).run(conn)

{
    :granted => 1,
    :permissions_changes => [
        {
            :new_val => { :read => true, :write => true },
            :old_val => { nil }
        }
    ]

Пример: Запретить разрешения на запись для учетной записи chatapp для таблицы admin.

r.db('users').table('admin').grant('chatapp', {'write': false}).run(conn)

Это переопределит разрешения write: true предоставленные в первом примере, но только для этой таблицы. Другие таблицы в базе данных users будут наследовать разрешения от базы данных.

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

r.db('users').table('admin').grant('chatapp', {'write': nil}).run(conn)

Указанием nil, разрешение табличного уровня write удаляется, и оно снова будет наследовать разрешения от следующей по объему области (базы данных или глобальной).

Пример: Предоставить chatapp возможность использования HTTP-соединений.

r.grant('chatapp', {'connect': true}).run(conn)

Это разрешение может быть предоставлено только на глобальном уровне.

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

r.grant('monitor', {'read': true}).run(conn)

© RethinkDB contributors
Licensed under the Creative Commons Attribution-ShareAlike 3.0 Unported License.
https://rethinkdb.com/api/ruby/grant/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API