管理者役割とセキュリティ管理者役割は、 一緒に実行して新しい役割のアカウントを設定します。また、 セキュリティ管理者役割は管理者役割とともに新しいアカウントを 構成する前に、新しい役割のプロファイルを作成する必要があります。作成方法については、後述の手順を参照してください。
役割のための新しいプロファイルを作成する前に、セキュリティ管理者はその役割が作業の実行に使用するコマンドがどのような特権を必要とするかを分析しなければなりません。詳細は、第 16 章「ソフトウェアの追加」および priv_desc(4) のマニュアルページを参照してください。このマニュアルページには、そのようなコマンドに必要となる必須特権および無効化特権を決定する方法が述べてあります。
あるコマンドまたはそのオプションの実行には特権が必要となる場合、そのような特権を「必須特権」(または「操作特権」)と呼びます。必須特権は、Trusted Solaris のマニュアルページでは「なければなりません (must have)」という説明付きで示されています。たとえば、「ifconfig(1M) コマンドはネットワークインタフェースを変更するための sys_net_config privilege
特権を持っていなければなりません」という具合です。
必須特権がコマンドに強制されていない場合、あるいは、secadmin がユーザーの実行プロファイル内のコマンドに必須特権を指定していない場合、そのコマンドまたはオプションは動作しません。
「1 つまたは複数の DAC または MAC 検査にパスしなかった場合には、そのコマンドは失敗する」には、「無効化特権」が必要となります。必須特権と同じように、無効化特権は、それを与えることによりユーザーの権限がユーザーの信頼レベルを超過しないこと、およびそのプロファイルに指定されている作業の範囲を超えた動作を可能にしないことを確認の上、セキュリティ管理者の指示により割り当てられます。マニュアルページでは、このようなアクセス制限を無効化するのに使われる特権の名前は ERRORS セクションに記述されています。ファイルやディレクトリに関する DAC または MAC 検査を無効化するのに使われる無効化特権を次に説明します。
DAC 無効化特権には、file_dac_read
と file_dac_write
があります。ユーザーがファイルに対する DAC アクセスを持たない場合、セキュリティ管理者は、そのファイルに対するアクセスの種類 (読み取り、書き込み、またはその両方) に合わせて、どちらかの特権を対応するコマンドに割り当てます。
MAC 無効化特権には、file_mac_read
と file_mac_write
があります。ユーザーがファイルに対する MAC アクセスを持たない場合、セキュリティ管理者は、そのファイルに対するアクセスの種類 (読み取り、書き込み、またはその両方) に合わせて、どちらかの特権を対応するコマンドに割り当てます。
プロファイル機構を使うと、セキュリティ管理者役割は、プログラムが代替 UID または GID、あるいは特定のラベルを使って、無効化特権を使わずに動作できることを指定できます。たとえば、DAC 特権の必要性をなくすには、セキュリティ管理者は、コマンドが別のユーザー ID (通常は、root ID 0) または別のグループ ID を使って、そのアクセス権または ACL に基づいてファイルまたはディレクトリにアクセスできることを実行プロファイルに指定します。
また、たとえば、あるプログラムがあるラベルのファイルを書き込みまたは読み取る必要があるとき、MAC 特権の必要性をなくすには、セキュリティ管理者は、そのプログラムが指定されている実行プロファイルにそのラベルを指定します。
コマンドがその作業の実行に必要とする特権や他のセキュリティ属性を確認した後、セキュリティ管理者役割は、そのコマンドおよび役割が、サイトのセキュリティポリシーに違反することなく、特権やその他のセキュリティ属性を使用できるだけの信頼性があることを確認する必要があります。
mount(1M) コマンドは、管理者役割に割り当てられている System Maintenance プロファイルに指定されています。ここでは、セキュリティ属性の指定がどのように行われるかを示す非常に簡単な例を示すことにします。Solaris および他の UNIX オペレーティングシステムでは、一般ユーザーがオプションなしの mount コマンドを実行すると、現在マウントされているファイルシステムの名前が表示されます。ただし、root になって実行するとき、mount コマンドは、管理者 (スーパーユーザー) によって、そのコマンド行や vfstab(4) に指定したファイルシステムをマウントするのに使われる場合もあります。この場合、mount コマンドはそれを呼び出したユーザーの UID が 0 であるかどうかを検査します。
Trusted Solaris では、一般ユーザーが使用する mount コマンドの動作は Solaris の場合と同じです。しかし、管理作業を行うとき、mount は root の UID だけではなく特権も検査します。
mount(1M) のマニュアルページには、ファイルシステムをマウントするときに使われるコマンドには sys_mount
特権が必須特権であると記述されています。また、mount コマンドは、マウントポイントとマウントされるデバイスの両方に DAC と MAC の両方のアクセス権を持っている必要があります。これらのアクセス権を持っていない場合は、DAC または MAC 無効化特権が必要です (Intro(2) のマニュアルページを参照)。マウントされるファイルシステムにマウント時間セキュリティ属性が (-S オプションで) 指定されている場合、追加の無効化特権が必要になる可能性もあります。
mount (1M) のマニュアルページには、mount がファイルシステムを任意のラベルでマウントする場合、あるいは、すべてのマウント時間属性を指定する場合、セキュリティ管理者はプロファイルにおいて、次のすべての操作特権および必須特権 (file_mac_read
、file_dac_read
、file_mac_write
、file_dac_write
、 file_mac_search
、file_dac_search
、net_privaddr
、proc_setsl
、 proc_setil
、sys_mount
、 および sys_trans_label
) を mount コマンドに割り当てる必要があると記述されています。