ナビゲーションリンクをスキップ | |
印刷ビューの終了 | |
Oracle Solaris 11 セキュリティーサービス開発ガイド Oracle Solaris 11 Information Library (日本語) |
1. Oracle Solaris の開発者向けセキュリティー機能 (概要)
3. PAM アプリケーションおよび PAM サービスの記述
8. Oracle Solaris 暗号化フレームワークの紹介
9. ユーザーレベルの暗号化アプリケーションとプロバイダの記述
承認は、/etc/security/auth_attr ファイル内に格納されます。 承認を使用するアプリケーションを開発するには、次の手順に従います。
次のように getent コマンドを使用して、auth_attr データベース内のエントリをスキャンします。
% getent auth_attr | sort | more
getent コマンドは auth_attr データベース内の承認の一覧を取得し、類似した名前の承認をまとめてソートします。 承認は、構成された順序で取得されます。 getent コマンドの使用については、getent(1M) のマニュアルページを参照してください。
プログラム開始時に、chkauthattr(3C) 関数を使って必要な承認の有無を検査します。
chkauthattr() 関数は、次の場所で順に承認を検索します。
policy.conf(4) データベース内の AUTHS_GRANTED キー – AUTHS_GRANTED は、デフォルトで割り当てられた承認を示します。
policy.conf(4) データベース内の PROFS_GRANTED キー – PROFS_GRANTED は、デフォルトで割り当てられた権利プロファイルを示します。chkauthattr() は、これらの権利プロファイルに指定された承認が含まれているかどうかを検査します。
user_attr(4) データベース – このデータベースには、ユーザーに割り当てられたセキュリティー属性が格納されています。
prof_attr(4) データベース – このデータベースには、ユーザーに割り当てられた権利プロファイルが格納されています。
chkauthattr() 実行時に正しい承認がこれらのどの場所にも見つからなかった場合、そのユーザーはプログラムへのアクセスを拒否されます。 chkauthattr() 関数が Stop プロファイルを検出した場合、AUTHS_GRANTED、PROFS_GRANTED、および /etc/security/policy.conf から検出される承認およびプロファイルは無視されます。 したがって、Stop プロファイルは /etc/security/policy.conf ファイル内の PROFS_GRANTED および AUTHS_GRANTED キーを使用して一覧表示されるプロファイルを無視するために使用できます。
提供されたセキュリティー属性を使用する方法、新しいセキュリティー属性を追加する方法、およびセキュリティー属性をユーザーおよびプロセスに割り当てる方法については、『Oracle Solaris の管理: セキュリティーサービス』の第 9 章「役割に基づくアクセス制御の使用 (タスク)」を参照してください。
注 - ユーザーは auth_attr()、exec_attr()、および prof_attr() データベースにエントリを追加できます。 ただし、Oracle Solaris 承認はこれらのデータベース内に保管されません。
例 2-3 承認の検査
次のコードは、chkauthattr() 関数を使ってあるユーザーの承認を検査する方法を示したものです。 この場合、プログラムは solaris.job.admin 承認の有無を検査しています。 このユーザーがこの承認を持っている場合、このユーザーはほかのユーザーのファイルを読み書きできます。 この承認がない場合、このユーザーが操作できるのは、自身が所有するファイルだけになります。
/* Define override privileges */ priv_set_t *override_privs = priv_allocset(); /* Clear privilege set before adding privileges. */ priv_set(PRIV_OFF, PRIV_EFFECTIVE, PRIV_FILE_DAC_READ, priv_FILE_DAC_WRITE, NULL); priv_addset(override_privs, PRIV_FILE_DAC_READ); priv_addset(override_privs, PRIV_FILE_DAC_WRITE); if (!chkauthattr("solaris.jobs.admin", username)) { /* turn off privileges */ setppriv(PRIV_OFF, PRIV_EFFECTIVE, override_privs); } /* Authorized users continue to run with privileges */ /* Other users can read or write to their own files only */