3

非常に複雑なアクセス制御ルールを持つWebアプリケーションの場合、常にACLを使用しますか?

ユーザーの特権を決定する際には、次のような多くの考慮事項があります。

  • 彼らはログインしていますか?
  • 彼らは管理者ですか、それとも通常のユーザーですか?
  • 彼らはグラフのノードを閲覧していますか?
  • 彼らはどのタイプのノードを閲覧していますか?
  • ノードとの関係(つまり、ノードへのパス)は何ですか?
  • ユーザーのデフォルト設定は何ですか?
  • ノードのデフォルト設定は何ですか?
  • ユーザーをノードに接続するグラフエッジの設定は何ですか?

ACLの開発は困難であることが証明されていました。しばらくして、すべてのアクションの上部にある基本的な属性に対して「if/then」チェックを実行することにしました。if(isAdmin) {...}

これは問題なく機能しているようで、永続的な解決策としてそのままにしておくべきかどうか疑問に思っています。したがって、質問:アクセス制御の複雑さがACLを超えるポイントが来るのでしょうか。それとも、もう少し頑張る必要があるというだけですか?

4

2 に答える 2

7

アクセスがユーザーのIDのみに基づくものではなくなったためにアクセス制御モデルが複雑になりすぎた場合は、別のアクセス制御モデルに移行する必要があります。

権限が役割にグループ化され、役割がユーザーに割り当てられる役割ベースのアクセス制御(RBAC)を使用できます。Active Directoryおよびその他のLDAP製品を使用すると、役割ベースのアクセス制御を行うことができます。

ただし、ロールだけでなく、特に関係、グラフ、グラフエッジを考慮したい場合は、属性ベースのアクセス制御(ABAC)を使用する必要があります。属性ベースのアクセス制御では、ユーザー属性(役割、部門、場所、年齢、市民権など)とリソース属性(グラフ内のノードの場所、エッジなど)を考慮した承認ロジックを実装できます。 。)およびノー​​ドとユーザーの関係。

私はABACにビデオをアップロードしました:www.youtube.com/watch?v = xUEbBKnxWSo CERIASにもいくつかの素晴らしいものがあります:www.youtube.com/watch?v = 3ZCoupGHmwo

今日ABACを実装する主な標準は、eXtensible Access ControlMarkupLanguageであるXACMLです。私はXACMLを調べます(免責事項-私はXACMLベンダーであるAxiomaticsで働いています)。

チェックアウトできるベンダーおよびオープンソースのXACML実装があります。

XACMLを使用すると、if(isAdmin)ステートメントとif(validCitizen)ステートメントの束を使用する代わりに、単一のif(isAuthorized())ステートメントを使用することになります。実際の承認ロジックは、XACMLで表現されたポリシー内に集中化されています。これは、外部認証とも呼ばれます。

于 2013-03-20T14:46:25.137 に答える
1

頭字語ACLは、アクセス制御リストの略です。したがって、定義ごとに、ユーザーがどのユーザーであるか、またはどのグループに属しているかに基づいて、どのユーザーがアクセスできるかを制御するとすぐに、ACLが作成されます。

したがって、最初の質問に対する簡単な答えは、はい、常にACLを使用するということです。

他の質問については、両方とも「はい」と言います

ACLは、制御しているアプリケーションが必要とするよりも複雑になる可能性があります。たとえば、ユーザーが実行できることを細かく制御したい場合などです。したがって、複雑になっていると思われる場合は、いくつかのACOをグループ化するか、削除する(そしてすべてのユーザーにアクセスを許可する)ことで、少し「気を悪くする」ことができないかどうかを確認してください。

于 2013-03-19T21:19:00.063 に答える