hajichan.net technical version

サーバ管理

RBAC

Solarisの機能の1つにRBAC(Role Based Access Control)が有ります。一言で言うとroot権限で実行されるいくつかの役割を特定ユーザに与えるってことだと思います。root権限を分散化でき、セキュリティ強化に繋がります。
フリーソフトのsudoと似てます。その機能をちょっと試してみました。RBACの詳細内容、設定ファイルなどは他のサイト等をご参照下さい。

(例1) パスワード変更roleを作成し一般ユーザに割り当ててみる

前提として、role名をpwrole、割り当てるユーザ名をhogeとします。

(1) 割り当てる承認、プロファイルを検索。

# cd /etc/security
# grep passwd exec_attr
---
Name Service Security:suser:cmd:::/usr/bin/nispasswd:euid=0
User Security:suser:cmd:::/usr/bin/passwd:uid=0

# grep -i password auth_attr
---
solaris.admin.usermgr.pswd:::Change Password::help=AuthUserMgrPswd.html

上記の作業により、どうやらプロファイル名 User Security と承認名 solaris.admin.usermgr 辺りを割り当てれば良さそうだということが分かります。

(2) role作成。

Aオプションで承認名を、Pオプションでプロファイル名を指定します。後は、useraddコマンドのオプションとほぼ同様です。

# roleadd -A "solaris.admin.usermgr.*" -P "User Security" \
-d /export/home/pwrole -c "passwd mente role" \
-s /bin/pfsh -u 3000 -m pwrole

# passwd pwrole

(3) 一般ユーザ作成。

通常通りユーザを作成します。但し、Rオプションにて先ほど作成したrole(pwrole)を指定します。

# useradd -u 4000 -g 10 -d /export/home/hoge -s /bin/sh -m \
-R pwrole hoge

# passwd hoge

(4) ここまでの作業で設定ファイルの内容を確認。

# cat /etc/user_attr
---
pwrole::::type=role;auths=solaris.admin.usermgr.*;profiles=User Security
hoge::::type=normal;roles=pwrole

(5) 動作確認。

では、動作確認です。ここでは、一般ユーザhogeユーザにて、他ユーザuser1のパスワードを変更してみます。パスワード変更が出来れば、正しく設定出来ています。

hogeユーザでログインしてユーザIDを確認します。

$ id
---
uid=4000(hoge) gid=10(staff)

pwroleに移行。ここで、"Roles can only be assumed by authorized users"のエラーが出る場合は、そのユーザに役割が割り当っていないので再度設定を確認してみて下さい。

$ su - pwrole
$ id
---
uid=3000(pwrole) gid=1(other)

他ユーザ(user1ユーザ)のパスワードを変更してみる。

$ passwd user1
---
New Password:
Re-enter new Password:
passwd: password successfully changed for user1

(例2) cron変更roleを作成し一般ユーザに割り当ててみる

前提として、role名をcronrole、割り当てるユーザ名をhoge2とします。

(1) 割り当てる承認、プロファイルを検索。

# cd /etc/security
# grep cron exec_attr
---
Process Management:suser:cmd:::/usr/bin/crontab:euid=0
Cron Management:suser:cmd:::/etc/init.d/cron:uid=0;gid=sys
Process Management:suser:cmd:::/etc/init.d/cron:uid=0;gid=sys
Cron Management:suser:cmd:::/usr/bin/crontab:euid=0

# grep -i cron auth_attr
---
solaris.jobs.grant:::Delegate Cron & At Administration::help=JobsGrant.html

上記の作業により、どうやらプロファイル名 Cron Management と承認名 solaris.jobs.grant 辺りを割り当てれば良さそうだということが分かります。

(2) role作成。

Aオプションで承認名を、Pオプションでプロファイル名を指定します。後は、useraddコマンドのオプションとほぼ同様です。

# roleadd -A "solaris.jobs.grant" -P "Cron Management" \
-d /export/home/cronrole -c "cron mente role" \
-s /bin/pfsh -u 3001 -m cronrole

# passwd cronrole

(3) 一般ユーザ作成。

通常通りユーザを作成します。但し、Rオプションにて先ほど作成したrole(cronrole)を指定します。

# useradd -u 4001 -g 10 -d /export/home/hoge2 -s /bin/sh -m \
-R cronrole hoge2

# passwd hoge2

(4) ここまでの作業で設定ファイルの内容を確認。

# cat /etc/user_attr
---
cronrole::::type=role;auths=solaris.jobs.grant;profiles=Cron Management
hoge2::::type=normal;roles=cronrole

(5) 動作確認。

では、動作確認です。ここでは、一般ユーザhoge2ユーザにて、他ユーザuser1のクーロンの設定を変更してみます。クーロンの設定変更が出来れば、正しく設定出来ています。

hoge2ユーザでログインしてユーザIDを確認します。

$ id
---
uid=4001(hoge2) gid=10(staff)

cronroleに移行。

$ su - cronrole
$ id
---
uid=3001(cronrole) gid=1(other)

他ユーザ(user1ユーザ)のクーロンを設定してみる。

$ crontab -e user1
$ ls -l /var/spool/cron/crontabs
---
-r--------   1 root     other         13 Sep 14 23:09 user1

$ crontab -r user1
ページのトップへ戻る