2013-01-01 1 views
5

私は、ソフトウェアシステム内のリソースにアクセスするための高度なアクセスコントロールをユーザーに提供することに興味があります。私は医療ITで働き、若い私は頻繁にrole-based access control in healthcareの複雑さを過小評価しています。しかし、この質問は、複雑なACL要件を持つ人すべてに適用する必要があります。アドバンスドアクセスコントロールライブラリ

かなりの間、Health ITシステム内の非常に複雑なACL制御の問題を処理する目的で、php gaclが私のgo-toライブラリでした。しかし、私は現在、一般的なjavascriptやノードを使って具体的に取り組んでいます。私はアクセスコントロールを一般化可能な方法で行うためにライブラリをnpmで検索しました。

ユーザとリソース(2ではなく3層)ではなく、アクションを定義するサポートがありたいと思います。ユーザ、アクション、リソースグループを持ちたいと思い、ACLの継承。そのライブラリへthe Star Wars themed manualから

古典的な例のようなルールです:している乗組員の

  • すべてのメンバー(の訪問は、設定、および使用) 銃、エンジン、コックピット、ラウンジへのアクセスのために期待チューイ。
  • すべてのドロイドはコックピットにアクセスできますが、R2D2には エンジンへのアクセスが設定されています。
  • 漢はすべて 種類のリソースにすべてのタイプのアクセス権を持っています。

ここでの基本的な概念には、ユーザーのグループ(クルー、乗客またはドロイド)または個人(Han、Chewie)に適用されるルールを作成し、さまざまな種類のアクセス(戦闘所=コックピット+銃)にグループ化できる別のリソース(エンジンとコックピット)へのアクセス(訪問、設定、使用)またはアクセスグループ(メインテナンスアクセス= configure +修復+使用)

これにより、比較的単純なグループベースの管理で、非常に複雑なアクセス制御ルールを設定できます。

これまでのところ、私はphp-gaclの外では何も見たことがありません。私はすばらしいjavascriptベースのACLプロジェクトを見てきましたが、そのすべてが包括性ではなくシンプルさと使いやすさを宣伝しています。これは、他の典型的なPHP ACLライブラリ(つまりZend ACL)でも当てはまります

ノードの「高度なACL」プロジェクトで作業している人はいますか?どこかで探しているはずのはるかに良いアプローチはありますか?

のphp-のGaCl 3つの部分、1は、PHPベースの管理GUI(それは確かに過剰に複雑である)、およびルールのCRUDのためのAPIである(それは簡単だと思うRESTインターフェースに変換することができる)が付属しています

ACLチェック機能を提供する非常に小さなファイルです。

技術的には、そのソフトウェアモデルが機能するには、最後のタイプだけをノードに完全に移植する必要がありますか?

さらに深いところでは、どのようなアプローチがこの問題を処理するために正常に使用されたのかを理解したいと思います。この問題はどのようにして解決されますか?ノード/ javascript、おそらく特定のデータベースアプローチ(リレーショナルと非リレーショナル)の面でこの問題を効果的に議論する人のためのボーナスポイント。この正誤を行うための理論的基礎がたくさんあることを理解しています(つまり、RBACとACLの比較ではかなりの意見があります)。私が欲しいのは、理論的には堅実なものであり、まだライブラリーの立場からは「ちょうどよい」ものです。私はJavascriptに焦点を当てていますが、他の言語が実際にこの問題をどのように解決しているかを理解することはうれしいでしょう。

+0

これはスタックオーバーフローに関するトピックです。 –

答えて

3

どのような種類のACLを使用することもできない場合は、通常はより良い方法です。それらは管理するのが複雑です。リソースのチェックインの際

  1. URL/IPアドレス/または他のアクセスポイントのセキュリティチェック
  2. 方法:あなたはセキュリティチェックのモデリング三つのレベルほうが良いでしょう。どんなエンティティでも変更や操作をしたい場合は、権限チェックを行います。 I.ビジネスルールタイプのアクセス。
  3. エンティティリソースチェック。ユーザー/ API/OAuthトークンがエンティティにAT ALLアクセスする場合

これはRBACを使用して実行できます。組織/サイトの役割には、アクセス権、変更権限、操作権限が割り当てられています。ユーザーには役割が割り当てられていますが、3つのレベルのチェックでは役割ではなく、PERMISSIONSがチェックされます。

私はSpring SecurityとRBACをGoogle検索として見て、それをモデル化します。ここで私が有用であることが分かってきたいくつかのリンクがあります:

http://www.xaprb.com/blog/2006/08/18/role-based-access-control-in-sql-part-2/

http://www.xaprb.com/blog/2006/08/16/how-to-build-role-based-access-control-in-sql/

(春のセキュリティのすべての「原始」の例と夢中になって名付けチェックは、あなたが提供する記事を読むことをお勧めしますので、代替名の使用と春の許可「hasRoleも()」チェックのために使用しています。次の資料は、RBACのデザインでこれを議論)

http://springinpractice.com/2010/10/27/quick-tip-spring-security-role-based-authorization-and-permissions/

(RBAC含むスプリングセキュリティの柔軟な用途に優れたプレゼンテーション)

http://www.infoq.com/presentations/Spring-Security-3

(以下では、RBACの問題と解決策の良好な説明を与え、PHPのために設計されている)

http://www.tonymarston.net/php-mysql/role-based-access-control.html RBAC実装と

A PHPのフレームワーク:

http://trac.symfony-project.org/wiki/UserRbac

最後に、Spring Securityのクラス図。保護されているエンティティーに、PARALLELテーブルのセキュリティー情報を入れることができます。これは仕様によるもので、Spring Securityを後から追加したり、取り出したり、簡単に置き換えたりすることができます。しかし、それはまた、より多くのテーブルを意味します。

http://code.google.com/p/uclm-esi-alarcos/source/browse/trunk/documentation/memoria-pfc/Figuras/Cap5/spring-security-class-diagram.png?r=295