web-dev-qa-db-ja.com

ロールベースの承認とクレームベースの承認

「ロールベースの承認」と「クレームベースの承認」の違いは何ですか?これらの承認モデルのそれぞれを実装することが適切なのはどのような状況ですか?

34
user960567

クレームはユーザーに関する情報を提供する方法であり、ロールはユーザーがどのロールに属しているかを示すユーザーの説明です。

クレームは、ロールメンバーシップ情報を含む任意のデータを含むことができるため、一般的にはより有用です。例えば。特定のアプリケーションに役立つものは何でも。

クレームベースのIDはより便利ですが、最初にクレームを取得するために多くの設定が必要になるため、使用するのが難しくなる傾向があります。 RBAC IDは役割の集まりにすぎないため、あまり有用ではありませんが、一般的にセットアップが簡単です。

.NETスタック、およびWindows全体が主張し始めています。 Windows認証チケットはクレームであり、Active Directoryは特定の機能のクレームを使用できるようになりました。 .NETスタックは、クレームIDを基本IDオブジェクトとしてデフォルトで使用するようになりました。

28
Steve

@SteveSが言ったように、RBACは承認モデルであり、クレームはユーザーに関する情報を提供する方法です。役割の概念を一般化します。以前は、IDサーバーはアプリケーションにユーザー名とロール/グループのリストを提供するだけでした。クレームはこれを一般化して、任意のユーザー属性を使用するアプリケーションに渡すことができるようにします。

承認自体は、クレームと独自のロジックを使用して承認を処理します。 Microsot SharePointとWindows Server 2012は、クレームを使用してきめ細かい承認を提供するアプリケーションの良い例です。 SharePointは、ユーザーがサイト/ドキュメントにも割り当てられているクレームを少なくとも1つ持っている場合、アクセスが許可されると想定しています。 Windows Server 2012には、ユーザーの要求とファイル分類情報を組み合わせるために使用できるSDDLと呼ばれる言語があります。

ただし、一般的には、RBAC(役割ベースのアクセス制御)とABAC(属性ベースのアクセス制御)を比較します。どちらもNISTによって定義された承認モデルです。どちらもクレームを使用できますが、必ずしもそうとは限りません。また、クレームは非常にユーザー中心ですが、ABACでは、ユーザー属性(クレーム)、リソース(オブジェクト)属性、およびコンテキスト(時間帯など)に基づいて承認を定義できます。

ABACは、属性ベースおよびポリシーベースのアクセス制御を提供するOASIS XACML標準(eXtensible Access Control Markup Language)で実装されています。

ここにあなたがチェックできるいくつかの良い参照があります:

19
David Brossard