/{db}/_security
-
GET/{db}/_security -
Возвращает текущий объект безопасности указанной базы данных.
Объект безопасности состоит из двух обязательных элементов,
adminsиmembers, которые используются для указания списков пользователей и/или ролей, имеющих права администратора и участника базы данных соответственно:members: они могут читать документы всех типов из базы данных, а также записывать (и редактировать) документы в базе данных, за исключением документов дизайна.admins: они имеют все праваmembers, а также следующие права: записывать (и редактировать) документы дизайна, добавлять и удалять администраторов и участников базы данных, а также задавать предел числа ревизий базы данных. Они не могут создавать или удалять базу данных.
Объекты
membersиadminsсодержат по два поля типа массива:names: список имён пользователей CouchDBroles: список ролей пользователей
Любые дополнительные поля в объекте безопасности являются необязательными. Весь объект безопасности доступен функциям проверки и другим внутренним функциям, чтобы база данных могла управлять функциональностью и ограничивать её.
Если поля имён и ролей в свойствах admins или members являются пустыми массивами или отсутствуют, это означает, что у базы данных нет администраторов или участников.
Если администраторов нет, обновлять документы дизайна и выполнять другие изменения на уровне администратора могут только администраторы сервера (с зарезервированной ролью
_admin).Если участников и ролей нет, любой пользователь может записывать обычные документы (любые документы, не являющиеся документами дизайна) и читать документы из базы данных.
Начиная с CouchDB 3.x, вновь созданным базам данных по умолчанию назначается роль _admin, чтобы предотвратить непреднамеренный доступ.
Если для базы данных указаны имена или роли участников, читать документы из этой базы данных (или выполнять запрос
GET /{db}) могут только аутентифицированные пользователи с соответствующим именем или ролью.Примечание
Если объект безопасности базы данных никогда не задавался, возвращаемое значение будет пустым.
Обратите также внимание, что объекты безопасности не являются обычными версионируемыми документами (то есть на них не распространяются правила MVCC). Это решение было принято для ускорения проверок авторизации (избегая обхода B-дерева документов базы данных).
- Параметры:
-
db – Имя базы данных
- Заголовки запроса:
-
-
Accept –
application/json
text/plain
-
- Заголовки ответа:
-
-
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. Дополнительную информацию см. в описании выше.
- Заголовки ответа:
-
-
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