エンドユーザーに対して非表示にする必要がある特定のメニュー項目を含むWebサイトがあります。
WebサイトのPHP=フロントエンドとJavaとSpringがバックエンドにあり、VMインフラストラクチャ。ただし、完全なテクノロジースタックはレガシーシステムであり、完全に文書化されていないため、完全には理解されていません。
アクセス制御に基づいてサイトと機能を保護する必要があります-ユーザーはグループにマップされ、グループはさまざまなメニュー項目(機能)にアクセスできます。また、管理者が機能とグループのマッピングを変更するためのインターフェースを提供する必要があります。また、さまざまな読み取り/書き込みメソッドアクセスのレベルを細かく制御する必要があります。
ACLが必要だと思います。そのような要件のベストプラクティス設計とは何ですか?
オプションと質問:
さらに質問:
外部化された承認が必要です。クレームベースの承認(Microsoft固有)またはより広範な属性ベースのアクセス制御(ABAC)。
ABACは最近NISTによって定義されたものであり、そのレポートをダウンロードできます ここ 。
あなたの質問では、LDAPとグループを指しています。次に、機能をグループ/ロールに関連付ける必要があることを説明します。 LDAP、ロール、およびグループは、属性を表します。他のソース(データベースなど)から取得することもできます。不足しているのは、承認ロジック、つまりグループと関数の間のマッピングです。
ABACでは、そのロジックは承認ポリシーとして表現されます。 OASISには、XACML(eXtensible Access Control Markup Language)と呼ばれる標準があります。 XACMLでは、属性を使用して、どのアクセスを許可または拒否するかを定義します。
例えば:
役割マネージャーとグループFinanceを持つユーザーは、financeメニューを表示できます。
私はこれをIdentity Managementに分類しません。これはアクセス管理の質問です。アクセス管理ソリューションを外部化することをお勧めします。間違いなく、LDAPをストアとして使用しないソリューションについては知りません。
きめの細かいアクセス制御は、同じページまたはURL内に表示される要素へのアクセスを定義します。クエリ文字列を無視してページレベル、つまりhtml、jsp、phpページでのみサポートする粗い粒度のアクセス制御ソリューションとは異なり、細かい粒度のアクセス制御をサポートする製品では、クエリ文字列パラメータを持つURLを「アクセス管理」できます。パラメータまたはその他のボタン、ページ内のリンク。
1つの解決策は(アクセス管理ソリューションがきめ細かいアクセス制御を提供しないと仮定します-多くはそうではありません)、アクセス管理製品とカスタムコードを組み合わせて、きめ細かいアクセス制御を実装することです。アクセス管理製品でカスタムグループ/属性を定義します。これらのカスタム定義には、トラバース、読み取り、書き込みアクセスが必要です。したがって、たとえば一部のボタン/リンクは、同じhttp URLの管理者にのみ表示されます。また、カスタムデータベースで同じ値を定義し(必要な場合)、それらをユーザーの権限/タイプとカスタムグループにマップします。
ユーザーがWebサイトにログインするときに、ユーザーのアクセス権をhttpヘッダーとしてWebサイトに渡します。これらのヘッダーを読み取り、これらの値を解析し、ユーザータイプと権限に基づいて、ユーザーのボタン/リンクを表示します。例えばヘッダーに属性としてRが含まれ、ユーザータイプが管理者でない場合、Rの基準を満たすがマネージャーの基準を満たさないボタンは表示されません。これはデータベースで検索できます。
上記のソリューションは、きめの細かいアクセス制御をサポートするアクセス管理ソリューションを取得できた場合は関係ありませんが、コストが問題になる場合は、上記のソリューションを簡単に実装できるはずです。