web-dev-qa-db-ja.com

RBACとDAC / ACLの違いは何ですか?

それぞれのメリットは何ですか。また、いつどちらを選ぶべきですか。これらをマージする必要がある状況はありますか?

一般的な使用例はありますか?

そして、MACはどうですか、それはどこに適合しますか?

64
AviD

RBAC(役割ベースのアクセス制御)は、ビジネス役割のリストを定義し、システム内の各ユーザーを1つ以上の役割に追加することに基づいています。その後、アクセス許可と特権が各ロールに付与され、ユーザーはロールのメンバーシップを介してそれらを受け取ります(グループとほぼ同じです)。アプリケーションは通常、特定のロールのメンバーシップについてユーザーをテストし、それに基づいてアクセスを許可または拒否します。
任意アクセス制御(DAC)により、ユーザーまたは管理者は特定のリソース(ファイル、レジストリキー、データベーステーブル、OSオブジェクトなど)にアクセス制御リスト(ACL)を定義できます。このリストにはエントリが含まれます(ACE)リソースにアクセスできる各ユーザーと、そのリソースに対する彼女の特権を定義します。

DACに対するRBACの主な利点は、管理が容易であることです。原則として、ユーザー数に関係なく、一元的に管理されるロールはほとんどなく、各ユーザーに適切なロールを付与するという問題があります。 DACとは対照的に、新しいユーザー(またはユーザーの変更、削除など)ごとに、アクセスする必要のあるすべてのリソースに移動し、それらをリストに追加する必要があります。
一方、DACは、多くの場合、より単純で、一般的にはより詳細です。また、DACモデルでは、データ所有者は誰がアクセス権を持っているか(データに対するアクセス許可がある場合)を決定し、リストにユーザーを追加または削除できます。

DACの非常に一般的な例は、Windowsファイルシステムです。一方、RBACの非常に一般的な例は、企業ファイルサーバー上のDACです。 "Sales" ActiveDirectoryグループのすべてのユーザーが、\ Sales \共有フォルダーにアクセスできます。より一般的には、WindowsのAdministratorsグループです。

MACは必須アクセス制御です。これは分類またはプライバシーレベルと見なすことができます。これは、軍事システムで最も頻繁に使用され、メインフレーム時代に使用されます。 Vista/Win7の整合性レベルなど、現在のOSはこれのフレーバーを実装していますが、あまり使用されていません。

違いを要約するには:

  • DACは個人の権限に基づいており、RBACは「グループ」レベルの権限に基づいています
  • DACはデータ所有者によって設定され、RBACはシステム所有者によって設定されます(通常、開発者は各役割に与えられるアクセスを定義し、運用管理者はユーザーを役割に割り当てます)
  • 通常、DAC定義はデータ/リソースにアタッチされますが、RBACは通常、コード/構成/メタデータ(ロールアクセス)とユーザーオブジェクト(またはテーブル-各ユーザーが持つロール)の2つの場所で定義されます。
  • 一方、RBACの役割は一元的に管理され(誰がどの役割に関連付けられているか)、DACは「リソース上」で管理されます(つまり、各リソースを個別に管理します)。
  • ロールごとの権限の定義は通常RBACでは静的であり、ユーザーにはロールのみが付与されます。 DACでは、リソースごとのアクセス許可が実行時に変更されることがよくあります。
  • DACは「誰がデータにアクセスできるか」を列挙していると見なされ、RBACは「このユーザーができること」を定義しています。
87
AviD