トップページ » Solaris10最小特権(Least Privilege)機能 » RBACと最小特権機能を組み合わせて一部のコマンドに限定して特権を与える
カテゴリー
My Yahoo!に追加
Sun社提供情報
Solarisパッケージダウンロード
Sunマシンは買うには
blogs.sun.com
お勧めサイト
プライベートリンク

RBACと最小特権機能を組み合わせて一部のコマンドに限定して特権を与える

今回はRBAC(Role-Based Access Control)に最小特権機能(Least Privilege機能)を絡めて、より精度の高いアクセスコントロールを設定する方法を紹介する。

RBACとはSolaris 8 からの機能で、役割(Role)を実ユーザにアサインすることでroot権限でしか実行することのできないコマンド群を一般ユーザにも実行できるようにす るものだ。RBACに関しては常識なのでここでは具体的な説明はせず、Solaris10から実装された最小特権機能との絡みを中心に紹介していく。

一般ユーザに file_dac_read 特権のついた cat コマンドを実行できるようにすることを例にして説明する。
ログイン時に file_dac_read 特権を与える方法はこちらで紹介しているが、ここではさらにコマンドを限定して、しかも以前のRBAC機能のように root権限を全面的に与えない設定方法を紹介する。この方法を応用すれば、セキュリティレベルを保ちながら特定のユーザやアプリケーションに本来の権限 以上のことを実行させることが容易になる。

まず、以下のように/etc/security/prof_attrファイルにPrivTestという権利プロファイルを定義するエントリを追加する。
# tail -1 /etc/security/prof_attr
PrivTest:::Priv Test profile:

さらに/etc/security/exec_attrファイルに/usr/bin/catコマンドにfile_dac_read特権を割り当てる。
ポイントは今までのRBACのようにuid=0やeuid=0などを指定していないところだ。
Solaris10では、root権限全般ではなく、特定の特権に絞って割り当てることができるようになっている。

# tail -1 /etc/security/exec_attr
PrivTest:suser:cmd:::/usr/bin/cat:privs=file_dac_read

あとは通常のRBAC設定同様にPrivTest権利プロファイルを持つ、役割を作成して、一般ユーザに割り当てる。

# roleadd -d /export/home/rootcat -m -P PrivTest,All rootcat
64 ブロック
# passwd rootcat
新しいパスワード:
新しいパスワードを再入力してください:
passwd: rootcat のパスワードが変更されました
# usermod -R rootcat user1

上記設定でPrivTest権利をrootcat役割に持たせ、実ユーザuser1にrootcat役割をアサインしている。
/etc/user_attrファイルは以下の2行が追加される。

# tail -2 /etc/user_attr
rootcat::::type=role;profiles=PrivTest,All
user1::::type=normal;roles=rootcat

あとは動作確認だ。

# su - user1
Sun Microsystems Inc.   SunOS 5.10      Generic January 2005
$ more /etc/shadow
/etc/shadow: アクセス権がありません。
$ cat /etc/shadow
cat: /etc/shadow をオープンできません。

当然、rootcat役割をまだ担っていないのでmoreコマンドだろうがcatコマンドだろうがアクセス権のないファイルは読み込めない。

$ su - rootcat
Password: xxxxxx
$ id -p
uid=2001(rootcat) gid=1(other) projid=3(default)
$ more /etc/shadow
/etc/shadow: アクセス権がありません。
$ cat /etc/shadow
...
...
listen:*LK*:::::::
gdm:*LK*:::::::
webservd:*LK*:::::::
nobody:*LK*:6445::::::
noaccess:*LK*:6445::::::
nobody4:*LK*:6445::::::
user1:AxEfnuHATDQB2:12930::::::

上記のようにrootcat役割に変更後はcatコマンドでのみアクセス権のないファイルを読み取ることが可能になる。
また、以下のpprivコマンドの結果から プロファイルシェルpfshに特別な特権がついていないこともわかる。

$ ppriv $$
1085:   -pfsh
flags = <none>
        E: basic
        I: basic
        P: basic
        L: all


========================================
※詳しい情報は以下のトレーニングコース参照
Solaris10新機能(システム管理編)
Solaris10 OSセキュリティ
========================================

Solaris10最小特権(Least Privilege)機能のその他のリンク

Solaris系技術トレーニング一覧

Solaris10システム管理基本コース
Solaris10ネットワーク・インターネットサーバー管理コース
セキュリティ・パフォーマンス管理・トラブルシューティング等
Sun Cluster、ボリューム管理ソフトウェア
仮想化技術全般
シンクライアント、SunRay、デスクトップソフトウェア
アイデンティティマネージメントサービス
アプリケーションサーバーとWebポータル
サーバー(ハードウェア)メンテナンス
Sun Java CAPS
MySQL