Spec-Zone.ru › CouchDB 3.5

/{db}/_security

GET /{db}/_security

Возвращает текущий объект безопасности указанной базы данных.

Объект безопасности состоит из двух обязательных элементов, admins и members, которые используются для указания списков пользователей и/или ролей, имеющих права администратора и участника базы данных соответственно:

  • members: они могут читать документы всех типов из базы данных, а также записывать (и редактировать) документы в базе данных, за исключением документов дизайна.

  • admins: они имеют все права members, а также следующие права: записывать (и редактировать) документы дизайна, добавлять и удалять администраторов и участников базы данных, а также задавать предел числа ревизий базы данных. Они не могут создавать или удалять базу данных.

Объекты members и admins содержат по два поля типа массива:

  • names: список имён пользователей CouchDB

  • roles: список ролей пользователей

Любые дополнительные поля в объекте безопасности являются необязательными. Весь объект безопасности доступен функциям проверки и другим внутренним функциям, чтобы база данных могла управлять функциональностью и ограничивать её.

Если поля имён и ролей в свойствах admins или members являются пустыми массивами или отсутствуют, это означает, что у базы данных нет администраторов или участников.

Если администраторов нет, обновлять документы дизайна и выполнять другие изменения на уровне администратора могут только администраторы сервера (с зарезервированной ролью _admin).

Если участников и ролей нет, любой пользователь может записывать обычные документы (любые документы, не являющиеся документами дизайна) и читать документы из базы данных.

Начиная с CouchDB 3.x, вновь созданным базам данных по умолчанию назначается роль _admin, чтобы предотвратить непреднамеренный доступ.

Если для базы данных указаны имена или роли участников, читать документы из этой базы данных (или выполнять запрос GET /{db}) могут только аутентифицированные пользователи с соответствующим именем или ролью.

Примечание

Если объект безопасности базы данных никогда не задавался, возвращаемое значение будет пустым.

Обратите также внимание, что объекты безопасности не являются обычными версионируемыми документами (то есть на них не распространяются правила MVCC). Это решение было принято для ускорения проверок авторизации (избегая обхода B-дерева документов базы данных).

Параметры:
  • db – Имя базы данных

Заголовки запроса:
  • Accept –

    • application/json

    • text/plain

Заголовки ответа:
  • Content-Type –

    • application/json

    • text/plain; charset=utf-8

Объект JSON ответа:
  • admins (object) – Объект с двумя полями: names и roles. Дополнительную информацию см. в описании выше.

  • members (object) – Объект с двумя полями: names и roles. Дополнительную информацию см. в описании выше.

Коды состояния:
  • 200 OK – Запрос успешно выполнен

  • 401 Unauthorized – Неавторизованный запрос к защищённому API

  • 403 Forbidden – Недостаточно прав / Слишком много запросов с недействительными учётными данными

Запрос:

GET /db/_security HTTP/1.1
Accept: application/json
Host: localhost:5984

Ответ:

HTTP/1.1 200 OK
Cache-Control: must-revalidate
Content-Length: 109
Content-Type: application/json
Date: Mon, 12 Aug 2013 19:05:29 GMT
Server: CouchDB (Erlang/OTP)

{
    "admins": {
        "names": [
            "superuser"
        ],
        "roles": [
            "admins"
        ]
    },
    "members": {
        "names": [
            "user1",
            "user2"
        ],
        "roles": [
            "developers"
        ]
    }
}
PUT /{db}/_security

Задаёт объект безопасности для указанной базы данных.

Параметры:
  • db – Имя базы данных

Заголовки запроса:
  • Accept –

    • application/json

    • text/plain

  • Content-Type – application/json

Объект JSON запроса:
  • admins (object) – Объект с двумя полями: names и roles. Дополнительную информацию см. в описании выше.

  • members (object) – Объект с двумя полями: names и roles. Дополнительную информацию см. в описании выше.

Заголовки ответа:
  • Content-Type –

    • application/json

    • text/plain; charset=utf-8

Объект JSON ответа:
  • ok (boolean) – Статус операции

Коды состояния:
  • 200 OK – Запрос успешно выполнен

  • 401 Unauthorized – Требуются права администратора сервера CouchDB

  • 403 Forbidden – Недостаточно прав / Слишком много запросов с недействительными учётными данными

Запрос:

shell> curl http://adm:pass@localhost:5984/pineapple/_security -X PUT -H 'content-type: application/json' -H 'accept: application/json' -d '{"admins":{"names":["superuser"],"roles":["admins"]},"members":{"names": ["user1","user2"],"roles": ["developers"]}}'
PUT /db/_security HTTP/1.1
Accept: application/json
Content-Length: 121
Content-Type: application/json
Host: localhost:5984

{
    "admins": {
        "names": [
            "superuser"
        ],
        "roles": [
            "admins"
        ]
    },
    "members": {
        "names": [
            "user1",
            "user2"
        ],
        "roles": [
            "developers"
        ]
    }
}

Ответ:

HTTP/1.1 200 OK
Cache-Control: must-revalidate
Content-Length: 12
Content-Type: application/json
Date: Tue, 13 Aug 2013 11:26:28 GMT
Server: CouchDB (Erlang/OTP)

{
    "ok": true
}

Copyright © 2025 The Apache Software Foundation — Licensed under the Apache License 2.0
https://docs.couchdb.org/en/3.5.1/api/database/security.html

Spec-Zone.ru

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