ロールベースアクセス制御

ロールベースアクセス制御（）は、認められたユーザーのシステムアクセスを制限するコンピュータセキュリティの手法の一種。強制アクセス制御 (MAC) や任意アクセス制御 (DAC) よりも新しい手法である。
概要.
RBAC は、ポリシーを柔軟に設定できるアクセス制御法であって、任意アクセス制御 (DAC)も強制アクセス制御 (MAC)もシミュレート可能である。
RBAC が開発されるまで、アクセス制御法としては MAC と DAC しかなかった。従って、MAC を使っていないなら DAC を、DAC を使っていないなら MAC を使っていると思ってほぼ間違いなかった。90年代後半の研究では、RBAC はそのどちらにも分類されていない。
組織において、「ロール（役割）」とは仕事上の機能を表す。ある操作を実行する許可（パーミッション）は、特定のロールに対して割り当てられる。各従業員には特定の（場合によっては複数の）ロールが割り当てられ、それによって特定のシステム機能を実行するパーミッションが与えられる。コンテキストベースアクセス制御 (CBAC) とは異なり、RBAC はメッセージのコンテキスト（コネクションがどこから起動されているかなど）を考慮しない。
ユーザーに対して直接パーミッションが与えられるわけではなく、ロールを通して与えられるため、各人のアクセス権の管理はユーザーへのロールの適切な割り当てに単純化され、ユーザーアカウントの追加やユーザーの部門間の異動などにも容易に対応できる。
RBAC は従来からあるアクセス制御手法であるアクセス制御リスト (ACL) とも異なる。ACL はデータオブジェクトについてアクセス権を設定するが、RBAC は組織内での意味を考慮して操作そのものにアクセス権を設定する。例えば、ACL は特定のシステムファイルへの書き込みを許可/拒否するが、そのファイルをどう変更すべきかは規定しない。一方 RBAC では、銀行口座の開設操作のパーミッションとか、血糖値検査結果を記録するパーミッションといった規定が可能である。すなわち、利用者にとって意味のある形式で細かくパーミッションを設定可能である。
ロール階層と制限の概念をあわせて採用すると、RBAC によってラティスベースアクセス制御 (LBAC) も構築できる。従って、RBAC は LBAC も包含していると見なすことができる。
RBACモデルを定義する場合、以下のような略記法が便利である。
制限を置くことで、相反するロールを1人の個人が持つことがないようにする。つまり、職務の適切な分離を達成する。例えば、1人の個人がログインアカウントの作成とアカウント作成のための手続きが可能になっているのは適切ではない。
集合論的記法を使うと、次のようになる。
x ≥ y と書いた場合、x が y のパーミッションを継承することを意味する。
ユーザー権限の管理をRBACで行うことは、ベストプラクティスとして単一システムやアプリケーションでは広く使われている手法である。マイクロソフトの Active Directory、SELinux、FreeBSD、Solaris、Oracle DBMS、PostgreSQL 8.1、SAP R/3 などで RBAC が何らかの形で実装されている。
異機種混在型のIT基盤のある大きな組織では、ロールを階層化しないとRBACを全体で運用することは非常に複雑で困難となる。このような大規模な権限設定についての戦略は、Beyond Roles: A Practical Approach to Enterprise User Provisioning で論じられている。RBAC の企業全体への展開の問題に対処するため、NISTモデルを拡張した新たなシステムもある。このテーマの研究論文はいくつかあり、商用システムでこれを実装した Beyond NIST がある。