答えて
はい、CouchDBは許可されていない読み取りを防止できます。残念ながら、それはやや単純です。
秘密のオークションアプリケーションを想像してみてください。あなたは$ 20を入札し、$ 10を入札します。それぞれの入札はソファーの文書に記載されています。カウチは私たち自身の入札書類を読むことができますが、他にはありません。 しかし、には、平均を示すmap-reduceビューがあります。私はビューを読み込み、平均値が$ 15だから、あなたの入札額が$ 20だと判断し、私はセキュリティポリシーを壊しました。 出力を表示すると、ドキュメントの情報の一部またはすべてが漏れる可能性があります。ドキュメントレベルでセキュリティを施行することは現実的ではありません。そのため、読み取りアクセスはデータベースレベルで行われます。
私は知っている、それは吸う。しかし、これが唯一正しいスケーラブルな答えです。
これは、多くのデータベース—を1人(またはそれ以上!)で作成するという理由からです。データベースへの読み取り権限は、データベース_security
オブジェクトのreaders
の値に設定されています。 (それはまた、DBへの書き込みも誰指定するので、CouchDBのトランクに、フィールドreaders was renamed to membersに注意してください。)
技術は、このように動作します:
- は、各ユーザー用のデータベースを作成します。ユーザーが読むことができるすべての文書を保持します。ユーザー(またはユーザーの役割)を
_security
オブジェクトに追加します。 - masterデータベースで、読み取りポリシーを実装するフィルタ関数を作成します。 (
validate_doc_update
とコードを共有できます) ?filter=my_filter_function
を使用して、マスターデータベースからユーザーのデータベースにレプリケートします。- ユーザーがデータベースを読み込む(またはデータベースから複製する)ことを許可します。
もちろん、これはすべて純粋なCouchアプリケーションであり、ユーザーはCouchに直接アクセスします。中間レイヤー(MVCコントローラーまたは逆HTTPプロキシーのみ)を使用している場合は、ユーザーとソファの間にポリシーを適用することができます。しかし、は注意してください。たとえば、_show
関数または_rewrite
ルールを使用すると、ポリシーにもかかわらずユーザーはビューまたはドキュメントを読み込むことができます。
幸運を祈る!
- 1. HKHealthStoreの読み取り権限
- 2. IBM MQ - 権限 - 読み取りパースペクティブ
- 3. NETWORK SERVICEの読み取り権限を許可する方法
- 4. BigQuery - 読み取り権限を付与するがデータセット作成権限を持たない
- 5. 快適なWebサービス、部分的な読み取り権限
- 6. IISで読み取り専用権限を削除する
- 7. 読み取り/書き込みと作成/読み取り/更新/削除の権限の違い
- 8. 1つのリクエストで読み取り権限と公開権限を取得する
- 9. 読み込み防止ページ
- 10. DublinCoreメタデータとPlone 4の読み取り権限の変更
- 11. Oracle:ロールに読取り権限と作成権限を付与する方法
- 12. ファイルへの読み取り書き込み権限を与えます
- 13. ElasticSearch/Kibana:読み取り専用ユーザー権限
- 14. 読み取り/書き込みファイル権限のないプロセスをlauchする方法
- 15. Facebookからの読み取りアクセス権を取得した後にpublish_action権限を取得します
- 16. Cocoaでのファイルアクセス権の読み取り
- 17. Django REST API:カーテン権限レベルでフィールドを読み取り専用にする
- 18. Googleドライブのユーザーにファイルを読み取る権限がありません
- 19. Sitecore:ユーザーが読み取りアクセス権を持たないレンダリングアイテム
- 20. グループの読み取り、書き込み、実行の権限がないファイルを見つけよう
- 21. SDカードからデータを読み取る権限
- 22. Androidで画像を読み取る権限外部ストレージ
- 23. Firebaseルール:各ユーザがノードを読み取る権限
- 24. JSONファイルのキャッシュからの読み込みを防止する
- 25. Oracleアカウントの読取り権限を付与します
- 26. "インストール時に基本的な読み取り権限を要求する必要があります"
- 27. ng-token-authエラー - アプリケーションの読み込みを防止する
- 28. スティッキーメニュー - ページリフレッシュ時の読み込みを防止する
- 29. 直接Ajaxコンテンツの読み込みを防止する
- 30. AMQP自動メッセージの読み込みを防止する
ありがとうございます!あなたは_showと_rewriteが私をかむことができる方法を詳しく説明できますか?また、 "unfriend someone - > upload photo"のような競争条件を避け、未公開の人が決してその写真を見ることができないことを100%保証するにはどうすればいいですか? – nornagon
URLに基づいて、ユーザーごとにドキュメントごとにアクセスを許可/拒否するリバースプロキシがあるとします。後で、_list関数を使用して新しいフィーチャーを追加し、すべての_list照会がプロキシーによって許可されます。ユーザーは_listを使用して、彼がしてはならない文書を見る方法を理解するかもしれません。同様に、_rewriteルールは、通常の '/ db/doc_id'パスのないドキュメントを見る方法を提供します。だから、あなたのプロキシに穴がないことを非常に*確実にしなければなりません。 – JasonSmith
あなたの2番目の質問は**読み取りアクセスを**取り消すこと** readアクセスを許可すること以上のことです。新鮮な質問をすることを提案します(「CouchDBセキュリティモデルの読み込みアクセスを取り消す方法」)。私ができるなら、私は答えに一発撃ちます! – JasonSmith