5

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 テーブルで非管理者とどのように区別しますか?

4

1 に答える 1

9

Why is the admin added as a normal user and not an admin?

CouchDB is similar to Windows's Active Directory, or Unix NIS and LDAP: most users have "normal" accounts, however the admin account (e.g. Windows "Administrator", or Unix "root") does not use the normal accounting system, but rather a much simpler system (the local.ini config file).

If the account and authentication system ever has a problem, you can still log in as the admin and fix it.

Do I need to add the "_admin" role to a user?

No, the admin role (the role "_admin") does not come from the user's document, but only from the configuration, in the "admins" section.

How come all admins can read the database?

By creating an admin in the global configuration (either editing the local.ini file, or using Futon's "Configuration" tab, or clicking the "Fix this" link in Admin Party), you created a system admin. System admins have access to all data, always (similar to Windows Administrator and Unix root).

CouchDB supports database admins which are normal users. Those users have admin access only to a database, not to anything else, such as other databases, or the server config. Database admins are set in the "Security" section, by adding a user's name or role to the "Admins" lists.

The concrete question: - when adding an admin via futon why is it not marked as admin inside the _users document and how does CouchDB from that document determine that it is a wide system admin?

When adding an admin via Futon, two things happen

  1. A normal user is created (with no valid password in fact)
  2. The same user name is added to the system configuration "admins" section. GET /_config/admins/the_username to see it. (That's what Futon's configuration tab does.)

In other words, CouchDB does not know it is a wide system admin from the document but rather from the config. If you delete that config entry, the user is "demoted" back to a normal user.

Side note about Iris Couch

It can be a little confusing at first, but the CouchDB user and security system is pretty simple and powerful once you learn it. But each Iris Couch users have entire CouchDB servers. If you sign up, you have an account at Iris Couch, but you have an entire CouchDB server to use. Inside that server, you can create multiple users for your own applications.

于 2012-04-29T00:36:21.380 に答える