ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris の管理: セキュリティーサービス Oracle Solaris 11 Information Library (日本語) |
パート II システム、ファイル、およびデバイスのセキュリティー
RBAC プロパティーをレガシーアプリケーションに追加する方法
ユーザーが自分のパスワードを使用して役割になれるようにする方法
10. Oracle Solaris のセキュリティー属性 (参照)
22. Kerberos エラーメッセージとトラブルシューティング
ユーザーにはデフォルトで権限が割り当てられます。システムの全ユーザーの権限は、/etc/security/policy.conf ファイルで割り当てられます。
Oracle Solaris のインストール時に、システムはユーザー権限とプロセス権限を使って構成されます。それ以上の構成がない場合は、次のタスクマップを使用して RBAC を表示および使用します。
|
システム上のすべての承認、権利プロファイル、およびセキュリティー属性を持つコマンドを一覧表示するには、次のコマンドを使用します。定義済みのすべての特権を一覧表示するには、「システム上の特権を一覧表示する方法」を参照してください。
% getent auth_attr | more solaris.:::All Solaris Authorizations::help=AllSolAuthsHeader.html solaris.account.:::Account Management::help=AccountHeader.html ... solaris.zone.login:::Zone Login::help=ZoneLogin.html solaris.zone.manage:::Zone Deployment::help=ZoneManage.html
% getent prof_attr | more All:::Execute any command as the user or role:help=RtAll.html Audit Configuration:::Configure Solaris Audit:auths=solaris.smf.value.audit; help=RtAuditCfg.html ... Zone Management:::Zones Virtual Application Environment Administration: help=RtZoneMngmnt.html Zone Security:::Zones Virtual Application Environment Security:auths=solaris.zone.*, solaris.auth.delegate;help=RtZoneSecurity.html ...
% getent exec_attr | more All:solaris:cmd:::*: Audit Configuration:solaris:cmd:::/usr/sbin/auditconfig:privs=sys_audit ... Zone Security:solaris:cmd:::/usr/sbin/txzonemgr:uid=0 Zone Security:solaris:cmd:::/usr/sbin/zonecfg:uid=0 ...
RBAC の割り当てを表示するには、次のコマンドを使用します。割り当てることができるすべての権限を表示するには、「定義済みのすべてのセキュリティー属性を表示する方法」を参照してください。
% auths solaris.device.cdrw,solaris.device.mount.removable,solaris.mail.mailq
デフォルトでは、これらの承認はすべてのユーザーに割り当てられます。
% profiles Basic Solaris User All
デフォルトでは、これらの権利プロファイルはすべてのユーザーに割り当てられます。
% roles root
デフォルトでは、この役割は最初のユーザーに割り当てられます。No roles は、役割が割り当てられないことを示します。
% ppriv $$ 1234: /bin/csh flags = <none> E: basic I: basic P: basic L: all
デフォルトでは、どのユーザーにも基本特権セットが割り当てられます。制限セットはすべての特権です。
% ppriv -vl basic file_link_any Allows a process to create hardlinks to files owned by a uid different from the process' effective uid. file_read Allows a process to read objects in the filesystem. file_write Allows a process to modify objects in the filesystem. net_access Allows a process to open a TCP, UDP, SDP or SCTP network endpoint. proc_exec Allows a process to call execve(). proc_fork Allows a process to call fork1()/forkall()/vfork() proc_info Allows a process to examine the status of processes other than those it can send signals to. Processes which cannot be examined cannot be seen in /proc and appear not to exist. proc_session Allows a process to send signals or trace processes outside its session.
% profiles -l Basic Solaris User /usr/bin/cdda2wav.bin privs=file_dac_read,sys_devices, proc_priocntl,net_privaddr /usr/bin/cdrecord.bin privs=file_dac_read,sys_devices, proc_lock_memory,proc_priocntl,net_privaddr /usr/bin/readcd.bin privs=file_dac_read,sys_devices,net_privaddr All *
ユーザーの権利プロファイルには、特定の特権で実行されるコマンドを含めることができます。Basic Solaris User プロファイルには、ユーザーが CD-ROM への読み取りと書き込みを行えるコマンドが含まれています。
例 9-1 ユーザーの承認の一覧表示
% auths username solaris.device.cdrw,solaris.device.mount.removable,solaris.mail.mailq
例 9-2 ユーザーまたは役割の権利プロファイルの一覧表示
次のコマンドでは、特定のユーザーの権利プロファイルを一覧表示します。
% profiles jdoe jdoe: Basic Solaris User All
次のコマンドでは、cryptomgt 役割の権利プロファイルを一覧表示します。
% profiles cryptomgt cryptomgt: Crypto Management Basic Solaris User All
次のコマンドでは、root 役割の権利プロファイルを一覧表示します。
% profiles root root: All Console User Network Wifi Info Desktop Removable Media User Suspend To RAM Suspend To Disk Brightness CPU Power Management Network Autoconf User Basic Solaris User
例 9-3 ユーザーの割り当てられた役割の一覧表示
次のコマンドでは、特定のユーザーの割り当てられた役割を一覧表示します。
% roles jdoe root
例 9-4 特定のコマンドに対するユーザーの特権の一覧表示
次のコマンドでは、通常ユーザーの権利プロファイルに含まれる特権付きコマンドを一覧表示します。
% profiles -l jdoe jdoe: Basic Solaris User /usr/bin/cdda2wav.bin privs=file_dac_read,sys_devices, proc_priocntl,net_privaddr /usr/bin/cdrecord.bin privs=file_dac_read,sys_devices, proc_lock_memory,proc_priocntl,net_privaddr /usr/bin/readcd.bin privs=file_dac_read,sys_devices,net_privaddr All *
始める前に
役割がすでに割り当てられている必要があります。その情報でネームサービスを更新する必要があります。
% roles Comma-separated list of role names is displayed
% su - rolename Password: <Type rolename password> $
su - rolename コマンドを実行すると、シェルがその役割のプロファイルシェルに変わります。プロファイルシェルは、承認、特権、set ID ビットなどのセキュリティー属性を認識します。
$ /usr/bin/whoami rolename
端末ウィンドウで役割のタスクを実行できるようになりました。
手順については、「割り当てられた権限を表示する方法」を参照してください。
例 9-5 root 役割になる
次の例では、最初のユーザーが root 役割になり、その役割のシェルで特権を一覧表示します。
% roles root % su - root Password: <Type root password> # Prompt changes to root prompt # ppriv $$ 1200: pfksh flags = <none> E: all I: basic P: all L: all
特権の詳細については、「特権 (概要)」を参照してください。
管理権限は、プロファイルシェルを実行しているときに有効になります。デフォルトでは、役割アカウントにプロファイルシェルが割り当てられます。役割とは、特定の管理権限が割り当てられている特殊なアカウントであり、通常は監査ファイルの確認など、関連した一連の管理アクティビティーに割り当てられます。
root 役割では、最初のユーザーにすべての管理権限が与えられます。つまり、最初のユーザーはスーパーユーザーになります。root 役割はほかの役割を作成できます。
始める前に
システムを管理するには、通常のユーザーには割り当てられない権限を持つ必要があります。スーパーユーザーでない場合は、役割、管理権利プロファイル、または特定の特権か承認が割り当てられる必要があります。
端末ウィンドウを開きます。
% su - Password: Type the root password #
注 - この方法は、root がユーザーと役割のどちらであっても有効です。ポンド記号 (#) のプロンプトは、ユーザーが現在スーパーユーザーであることを示します。
次の例では、ネットワーク管理の役割になります。この役割には、Network Management 権利プロファイルが含まれています。
% su - networkadmin Password: Type the networkadmin password $
現在プロファイルシェルになっています。このシェルでは、snoop、route、dladm などのコマンドを実行できます。プロファイルシェルの詳細は、「プロファイルシェルと RBAC」を参照してください。
たとえば、次の一連のコマンドでは pfbash シェルでネットワークパケットを調べることができます。
% pfbash $ anoop
net_observability 特権が割り当てられていない場合、snoop コマンドは、「snoop: cannot open "net0": Permission denied (snoop: "net0" を開けません: アクセス権がありません)」のようなエラーメッセージを表示して失敗します。この特権が直接割り当てられているか、権利プロファイルまたは役割を通じて割り当てられている場合、このコマンドは成功します。また、このシェルではその他の特権付きコマンドも実行できます。
ユーザーの権利プロファイルに含まれる特権付きコマンドの名前を指定して pfexec コマンドを実行します。たとえば、次のコマンドではネットワークパケットを調べることができます。
% pfexec snoop
pfbash と同じ特権の制限が pfexec にも適用されます。ただし、別の特権付きコマンドを実行するためには、その特権付きコマンドを入力する前に pfexec を再度入力する必要があります。
例 9-6 役割の使用を容易にするために認証をキャッシュする
この例では、管理者はネットワークを管理するように役割を構成しますが、ユーザーの認証をキャッシュに書き込むことで使用が容易になります。最初に、管理者は役割を作成して割り当てます。
# roleadd -K roleauth=user -P "Network Management" netmgt # usermod -R +netmgt jdoe
その役割への切り替え時に jdoe が -c オプションを使用した場合は、snoop の出力が表示される前にパスワードが必要になります。
% su - netmgt -c snoop options Password: snoop output
認証がキャッシュに書き込まれていない場合は、jdoe がそのコマンドをすぐに再実行しても、パスワードプロンプトが表示されます。
管理者は、認証がキャッシュに書き込まれるように pam.conf ファイルを構成します。その結果、最初はパスワードが要求されますが、それ以降は一定の時間が過ぎるまで要求されなくなります。管理者は、pam.conf のカスタマイズされたすべてのスタックをそのファイルの終わりに配置します。
# vi /etc/pam.conf ... # ## Cache authentication for switched user # su auth required pam_unix_cred.so.1 su auth sufficient pam_tty_tickets.so.1 su auth requisite pam_authtok_get.so.1 su auth required pam_dhkeys.so.1 su auth required pam_unix_auth.so.1
エントリの作成後、管理者はそれらのエントリでタイポ、脱字、または繰り返しを調べます。
完全な su スタックが必要です。pam_tty_tickets.so.1 モジュールはキャッシュを提供します。PAM の詳細は、pam.conf(4) のマニュアルページおよび第 15 章PAM の使用を参照してください。
su PAM スタックを pam.conf ファイルに追加したあとは、一連のコマンドの実行時に、netmgt 役割は一度しかパスワードの入力を求められません。
% su - netmgt -c snoop options Password: snoop output % su - netmgt -c snoop options snoop output ...