Spec-Zone.ru › RethinkDB python

Команда 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 будет содержать один объект, описывающий новые значения разрешений и старые значения, от которых они были изменены (которые могут быть None).

Разрешения, не определенные на локальном уровне, будут унаследованы от следующей по значимости области. Например, операция записи в таблицу сначала проверяет, установлены ли разрешения 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": { null }
        }
    ]

Пример: Запретить права записи для учетной записи 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': None}).run(conn)

Указав None, разрешение на уровне таблицы 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/python/grant/

Spec-Zone.ru

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