http://guide.couchdb.org/draft/security.htmlを読みました
および前の質問 データベースごとの CouchDB 認可 および http://wiki.apache.org/couchdb/Security_Features_Overview
私は現在Apache CouchDB 1.2.0を使用しており、布団を介して管理者を追加すると、たとえば_usersにユーザーが追加されます
_id
org.couchdb.user:stackoverflow
_rev
1-b9f223532b662d4ac52d14082d81e6a5
name
stackoverflow
password
null
roles
[ ]
type
user
したがって、最初の質問は、なぜ管理者が管理者ではなくタイプ ユーザーとして追加されるのかということです。このユーザーは、任意のデータベースで何でもできるため管理者であり、ロールは空ですが、_users ドキュメントを保護しました
["admin"]
唯一のメンバーとしてのロールと管理者のみがこれにアクセスできます (_users ドキュメントでのロールが空の場合でも)。
この保護では、新しい「通常の」ユーザーの作成が許可されないため、futon の「signup」コマンドはサインアップ エラーを返します: このデータベースにアクセスする権限がありません。
この設定が唯一の論理的な設定だと思います。誰でもデータベースにユーザーを作成できるようにしたいのはなぜですか??
データベースで読み取りアクセスを 1 人の管理者のみに指定しても、すべての管理者がアクセスできます
(
" admins" : {
"names" : ["guru"],
"roles" : ["boss"]
},
"readers" : {
"names" : ["guru"],
"roles" : ["boss"]
}
}
上記のケースは、上記の例のように新しく作成された stackoverflow 管理者には影響しません。
したがって、futon 経由で作成された管理者は、関係なくすべてのことを行うことができると思います。唯一の紛らわしい論理部分は、特別なタイプ (ユーザー) も特別なロールも持たない _users ドキュメントです。
具体的な質問に戻ります: - futon を介して管理者を追加する場合、_users ドキュメント内で管理者としてマークされていないのはなぜですか? また、そのドキュメントから CouchDB はどのようにしてそれがシステム全体の管理者であると判断しますか? - サインアップを許可せずに通常のユーザーを作成したい場合 (futon または直接 HTTP リクエストを介して)、_users ドキュメントを保護する必要があります。しかし、自分のデータベースで読み取り/書き込みを行うユーザーを作成するにはどうすればよいでしょうか? - ユーザー (CouchDB Docs による) には DB に対する読み取り/書き込み権限がありますが、設計ドキュメントを作成する可能性はないため、DB を使用して開発する人にはビューが必要になるため、実際に効率的に使用するにはどうすればよいでしょうか?
http://www.iriscouch.com/に提供されている共有 CouchDB があるため、セキュリティを危険にさらすことなく、通常の単純なマルチ ホスティングを使用できるはずです。ユーザーは自分のデータベースを持っており、このデータベースだけで何でもできます。とにかく管理者の役割は「ユーザー」であるため、_users テーブルで非管理者とどのように区別しますか?