従来の UNIX 管理の制限

RBAC では、従来の UNIX システムの管理上の問題をいくつか解決しています。 問題には次のようなものがあります。

ルート管理アカウント

従来は、AIX® および他の UNIX オペレーティング・システムには、ルート (通常は UID の 0 で指定されます) という名前の定義された単一のシステム管理者アカウントがあり、それによってシステム上のすべての特権システム管理タスクを実行することができます。 すべてのシステム管理タスクを単一のユーザーに依存することは、責務の分離に関して問題があります。 単一の管理アカウントは特定の環境で受け入れ可能であり、多くの環境では複数の管理者が必要となり、各管理者はさまざまなシステム管理タスクを受け持ちます。

管理責務をシステムの複数のユーザーで共有するために、従来は root ユーザーのパスワードを共有するか、または root ユーザーと同じ UID をもつ別のユーザーを作成するかのどちらかでした。 この方法でシステム管理責務を共有する場合、それぞれの管理者が完全なシステム制御権をもち、管理者が実行できる操作を制限する方法がないため、セキュリティー上の問題があります。 root ユーザーは最大の特権をもつユーザーであるため、許可されていない操作を実行することができ、そのような活動の監査を消去してこのような管理アクションを追跡できないようにします。

SUID による特権の拡大

UNIX オペレーティング・システムでのアクセス制御は、従来はアクセスを決定するプロセスに関連付けられている UID を使用することによって実行していました。 ただし、ルート UID の 0 によって、従来は許可検査が迂回できていました。 このため、root ユーザーとして実行しているプロセスは、すべてのアクセス検査に合格し、すべての操作を実行することができます。 これは、setuid アプリケーションの UNIX 概念に関するセキュリティー上の問題です。

setuid 概念により、コマンドを別の ID ひいてはコマンドを呼び出したユーザーの下で実行することができます。 これは、通常のユーザーが特権タスクを実行しなければならないときに必要なことです。 この例として、AIX passwd コマンドがあります。 通常のユーザーは、ユーザー・パスワードを保管するファイルにアクセスできないので、ユーザーのパスワードを変更し、passwd コマンドを root ユーザーに対して setuid にするために追加の特権が必要です。 通常のユーザーが passwd コマンドを実行すると、オペレーティング・システムには、root ユーザーがファイルにアクセスしていてそのアクセスが許可されているように見えます。

この概念により確かに希望する機能が提供されますが、一方で固有のリスクを伴います。 setuid プログラムがルート・コンテキストで有効に実行されているため、アタッカーがプログラムの終了前にプログラムを支配することに成功した場合には、アタッカーがルートの全権限をもち、すべてのオペレーティング・システムのアクセス検査を迂回してすべての操作を実行することができます。 より良い解決方法は、root ユーザー特権の一部をプログラムに割り当てて、最小特権の原則に従い脅威を軽減することのみです。