2006年 4月 17日 月曜日
やっぱり Sun がスキ!
二人ルール
二人ルール・・・もうひとつのセキュリティ
コンピューターセキュリティに係わる事件は収まるどころかまだまだ出そうな勢いですが、事件の原因を見てみると、外部からの攻撃と同様に、内部からの攻撃、人的ミス、組織の問題に起因するケースが多々あるように思われます。もちろんコンピュータはこれらの問題に対して無力ではありませんし、Sun Microsystems からもアイデンティティ管理やシンクライアント、Solaris 組み込みのセキュリティ機能など、様々なソリューションが提供されており、これらの機能を正しく使えば、相当強固なセキュリティを確保できます。しかし極めて重要な作業を行う場合、個人への役割付与では、たとえ権限を細かく分割しても不十分な場合もあります。
たとえば「二人ルール」。核ミサイルの発射スイッチを2人同時に操作するアレですが、これは個人の暴走やミスを防止するのに極めて有効です。コンピュータ管理にもこのような仕組みがあると良いと思いませんか? 実は Solaris の RBAC をうまく使うとこの「二人ルール」を実現できるのです。以下の例を見てください。一連の設定の後、このシステムでは端末の前に二人揃わないとスーパーユーザ権限を行使できなくなります。
RBACを使った「二人ルール」の実装 (基本編)
まず担当者2人を決定します。仮に Aさん、Bさんと呼びます。
root 役割を引き受けることができるローカルユーザ(admuser)を用意します。パスワードは Aさんが管理します。
# useradd -c "Local administrative user" -d /export/home1 admuser
# passwd -r files admuser
root としてログインしていないことを確認します。
# who
jdoe console May 24 13:51 (:0)
jdoe pts/5 May 24 13:51 (:0.0)
jdoe pts/4 May 24 13:51 (:0.0)
jdoe pts/10 May 24 13:51 (:0.0)
root ユーザを役割に変更します。root パスワードは Bさんが管理します。
# usermod -K type=role root
root が役割であることを確認します。user_attr ファイルの root エントリは、次のようになります。
root::::type=role;auths=solaris.*,solaris.grant;profiles=Web Console
Management,All;lock_after_retries=no
root 役割を先に用意したローカルユーザ(admuser)に割り当てます。
# usermod -R root admuser
新しい端末ウィンドウを開き、root 役割を引き受けます。
% su admuser
Enter password: ( Aさんが admuser パスワードを入力する)
% roles
root
% su root
Enter password: ( Bさんが root パスワードを入力する)
#
これで Aさん、Bさんの二人が揃わないと root権限を行使できなくなりました。しかし、いざという時、どちらかが休みや出張では困るので代理を立てたいところです。上の例を少しひねって、管理者グループの誰か二人が揃えば root権限を行使できるようにしてみましょう。
RBACを使った「二人ルール」の実装 (応用編)
管理者グループのメンバを userA, userB, userC の三人とします。各メンバにはスーパーユーザ権限を持った役割 roleA, roleB, roleC を与えますが、各自自分の持つ役割にだけは su できないようにしておきます。こうすることで、スーパーユーザ権限を使うためにグループの他のメンバが必要となるわけです。
まず、それぞれのメンバに割り当てる役割 roleA, roleB, roleC を作成します。
jws50# roleadd -d /export/home/roleA -m roleA jws50# roleadd -d /export/home/roleB -m roleB jws50# roleadd -d /export/home/roleC -m roleC jws50# getent passwd roleA roleB roleC roleA:x:202732:1::/export/home/roleA:/bin/pfsh roleB:x:202733:1::/export/home/roleB:/bin/pfsh roleC:x:202804:1::/export/home/roleC:/bin/pfsh
作成した役割に、スーパーユーザ権限を持つ Primary Administrator 権利プロファイルを割り当てます。
jws50# rolemod -P "Primary Administrator" roleA
jws50# rolemod -P "Primary Administrator" roleB
jws50# rolemod -P "Primary Administrator" roleC
jws50# profiles -l roleA roleB roleC
Primary Administrator:
* uid=0, gid=0
All:
*
Primary Administrator:
* uid=0, gid=0
All:
*
Primary Administrator:
* uid=0, gid=0
All:
*
各役割を管理グループメンバに割り当てます。各自自身の管理する役割には su できないことに注目してください。
jws50# usermod -R roleB,roleC userA jws50# usermod -R roleC,roleA userB jws50# usermod -R roleA,roleB userC jws50# roles userA userB userC userA : roleB,roleC userB : roleC,roleA userC : roleA,roleB
役割のパスワードを設定します。roleA のパスワードは userA、roleB のパスワードは userB、roleC のパスワードは userC が管理します。
jws50# passwd roleA 新しいパスワード: 新しいパスワードを再入力してください: ( userA が管理) passwd: roleA のパスワードが変更されました jws50# passwd roleB 新しいパスワード 新しいパスワードを再入力してください: ( userB が管理) passwd: roleB のパスワードが変更されました jws50# passwd roleC 新しいパスワード 新しいパスワードを再入力してください: ( userC が管理) passwd: roleC のパスワードが変更されました
これで管理グループメンバ (userA, userB, userC) のうち二人が揃えばスーパーユーザ権限を行使できるようになりました。実際のシステムでは audit 設定や端末入出力ログ採取など運用のルールを決めておく方が良いでしょう。
- Solaris のシステム管理 (セキュリティサービス) - パートIII 役割、権利プロファイル、特権
- Enforcing the Two-Person Rule Via Role-Based Access Control in the Solaris 10 Operating System
Posted at 08:10午後 4 17, 2006 by masahiko in Sun | 投稿されたコメント[0]