JavaScript is required to for searching.
ナビゲーションリンクをスキップ
印刷ビューの終了
Oracle Solaris の管理: セキュリティーサービス     Oracle Solaris 11 Information Library (日本語)
search filter icon
search icon

ドキュメントの情報

はじめに

パート I セキュリティーの概要

1.  セキュリティーサービス (概要)

パート II システム、ファイル、およびデバイスのセキュリティー

2.  マシンセキュリティーの管理 (概要)

3.  システムアクセスの制御 (タスク)

4.  ウイルススキャンサービス (タスク)

5.  デバイスアクセスの制御 (タスク)

6.  基本監査報告機能の使用方法 (タスク)

7.  ファイルアクセスの制御 (タスク)

パート III 役割、権利プロファイル、特権

8.  役割と特権の使用 (概要)

9.  役割に基づくアクセス制御の使用 (タスク)

RBAC の使用 (タスク)

RBAC デフォルトの表示および使用 (タスク)

RBAC デフォルトの表示および使用 (タスクマップ)

定義済みのすべてのセキュリティー属性を表示する方法

割り当てられた権限を表示する方法

役割になる方法

管理権限を取得する方法

サイトでの RBAC のカスタマイズ (タスク)

RBAC の初期構成 (タスクマップ)

RBAC の実装を計画する方法

役割を作成する方法

役割を割り当てる方法

役割を監査する方法

権利プロファイルを作成または変更する方法

RBAC プロパティーをレガシーアプリケーションに追加する方法

RBAC と特権の割り当てをトラブルシューティングする方法

RBAC の管理 (タスク)

RBAC の管理(タスクマップ)

役割のパスワードを変更する方法

役割のセキュリティー属性を変更する方法

ユーザーの RBAC プロパティーを変更する方法

ユーザーをデスクトップアプリケーションに制限する方法

管理者を明示的に割り当てられた権限に制限する方法

ユーザーが自分のパスワードを使用して役割になれるようにする方法

root 役割をユーザーに変更する方法

特権の使用 (タスク)

特権の判断 (タスクマップ)

システム上の特権を一覧表示する方法

直接割り当てられた特権を判断する方法

実行可能な特権付きコマンドを判断する方法

特権の管理 (タスクマップ)

プロセスの特権を判断する方法

プログラムが必要とする特権を判断する方法

特権付きのコマンドを含むシェルスクリプトの実行方法

10.  Oracle Solaris のセキュリティー属性 (参照)

パート IV 暗号化サービス

11.  暗号化フレームワーク (概要)

12.  暗号化フレームワーク (タスク)

13.  鍵管理フレームワーク

パート V 認証サービスと安全な通信

14.  ネットワークサービスの認証 (タスク)

15.  PAM の使用

16.  SASL の使用

17.  Secure Shell の使用 (タスク)

18.  Secure Shell (参照)

パート VI Kerberos サービス

19.  Kerberos サービスについて

20.  Kerberos サービスの計画

21.  Kerberos サービスの構成 (タスク)

22.  Kerberos エラーメッセージとトラブルシューティング

23.  Kerberos 主体とポリシーの管理 (タスク)

24.  Kerberos アプリケーションの使用 (タスク)

25.  Kerberos サービス (参照)

パート VII Oracle Solaris での監査

26.  監査 (概要)

27.  監査の計画

28.  監査の管理 (タスク)

29.  監査 (参照)

用語集

索引

サイトでの RBAC のカスタマイズ (タスク)

RBAC の初期構成では、特定の役割になることができるユーザーを作成し、役割を作成して、それらを適切なユーザーに割り当てます。

RBAC の初期構成 (タスクマップ)

次のタスクマップを使用して、サイトでの RBAC の計画と初期実装を行います。一部のタスクは順番に並んでいます。

タスク
説明
参照先
1. RBAC を計画します。
サイトのセキュリティー要件の調査、およびサイトでの RBAC の使用方法の決定が含まれます。
2. 役割になることができるユーザーを構成します。
管理役割になることができるユーザーが確実に存在するようにします。
3. 役割を作成します。
役割を作成し、それらの役割をユーザーに割り当てます。
(推奨) 役割の動作を監査します。
役割の動作を記録する監査イベントを含む監査クラスを事前選択します。
権利プロファイルを作成または変更します。
権利プロファイルを作成します。あるいは、権利プロファイル内のセキュリティー属性または補助権利プロファイルを変更します。

特権をコマンドに追加します。

レガシーアプリケーションをセキュリティー保護します
レガシーアプリケーションの set ID アクセス権を有効にします。スクリプトでは set ID を有効にしたコマンドを使用できます。必要に応じて、レガシーアプリケーション内で承認を確認できます。
セキュリティー属性の割り当てをトラブルシューティングします。
割り当てられたセキュリティー属性がユーザー、役割、またはプロセスで利用できない原因をデバッグします。

RBAC の実装を計画する方法

RBAC は、組織の情報リソースを管理するときに、重要な役割を果たします。RBAC を計画する際には、RBAC の機能と組織のセキュリティー要件を十分に理解しておく必要があります。


注 - デフォルトの権限は、/etc/security/policy.conf ファイルで割り当てられます。


  1. RBAC の基本概念を理解します。

    「役割に基づくアクセス制御 (概要)」を参照してください。RBAC を使用したシステム管理は、従来の UNIX の管理方法を使用した場合と大きく異なります。実装を開始する前に RBAC の概念をよく理解しておくために、第 10 章Oracle Solaris のセキュリティー属性 (参照)を参照してください。

  2. セキュリティーポリシーを調査します。

    組織のセキュリティーポリシーでは、システムに対する潜在的な脅威を詳細に記述し、各脅威のリスクを評価して、それらの脅威に対抗するための方策を提供します。RBAC を使用したセキュリティー関連のタスクとは切り離して行うことをお勧めします。インストールした RBAC 構成はそのままで使用できますが、セキュリティーポリシーに従ってカスタマイズが必要になる場合もあります。

  3. 組織に必要な RBAC を決定します。

    組織のセキュリティー要件に応じて、さまざまなレベルの RBAC を使用できます。

    • root を役割にする – デフォルトではこの方法が提供されます。これにより、どのユーザーも root としてログインできなくなります。代わりに、ユーザーは割り当てられたログインを使用してログインしてから root 役割を引き受ける必要があります。

    • 個別の役割 – この方法では、提供された権利プロファイルに基づいた役割を作成します。それらの役割は、責任の度合い、タスクの適用範囲、およびタスクのタイプに従って割り当てることができます。たとえば、System Administrator 役割ではスーパーユーザーが実行できる多数のタスクを行うことができ、Network IPsec Management 役割では IPsec を管理できます。

      また、セキュリティーの責務をほかの責務と切り離すこともできます。User Management 役割ではユーザーを作成でき、User Security 役割では役割や権利プロファイルなどのセキュリティー属性を割り当てることができます。ただし、User Security 役割ではユーザーを作成できず、User Management 役割では権利プロファイルをユーザーに割り当てることはできません。

    • root 役割を使用しない – この方法では、システムのデフォルトの構成を変更する必要があります。この構成では、root のパスワードを知っているユーザーはだれでもシステムにログインしてシステムを変更できます。どのユーザーがスーパーユーザーとなっていたかは判別できません。

  4. 組織に適した役割を決定します。

    推奨される役割とそのデフォルトの権利プロファイルの機能を確認します。デフォルトの権利プロファイルにより、管理者は単一のプロファイルを使用して推奨される役割を構成することができます。

    権利プロファイルについてさらに詳しく調べるには、次のいずれかを行なってください。

    • システムで利用できる権利プロファイルについては、getent prof_attr コマンドを使用します。

    • このドキュメントで、一般的な権利プロファイルを要約した 「権利プロファイル」を参照してください。

  5. 追加する任意の役割または権利プロファイルが組織に適切であるかどうかを判断します。

    使用するサイトで、アクセスを制限する必要があるアプリケーションを調べます。セキュリティーに影響するアプリケーション、サービス拒否が発生する可能性のあるアプリケーション、特別な管理者教育を必要とするアプリケーションには、RBAC を適用することをお勧めします。役割や権利プロファイルをカスタマイズして、組織のセキュリティー要件に対応することができます。

    1. 新しいタスクに必要なコマンドを決定します。
    2. このタスクに適切な権利プロファイルを決定します。

      既存の権利プロファイルがこのタスクに割り当てられていないか、または別の権利プロファイルを作成する必要がないかどうかを確認します。


      注 - Media Backup および Media Restore 権利プロファイルは、ルートファイルシステム全体へのアクセスを提供します。そのため、これらの権利プロファイルは信頼できるユーザーにのみ適切に割り当てます。あるいは、これらの権利プロファイルを割り当てないことも選択できます。デフォルトでは、root 役割のみがバックアップと復元を任せられています。


    3. この権利プロファイルに適した役割を決定します。

      このタスクの権利プロファイルを既存の役割に割り当てるかどうか、または新しい役割を作成するかどうかを決定します。既存の役割を使用する場合は、この役割を割り当てるユーザーにその役割の元の権利プロファイルが適していることを確認します。コマンドがその必要な特権で実行されるように新しい権利プロファイルを順序付けます。順序付けについては、「割り当てられたセキュリティー属性の検索順序」を参照してください。

  6. どの役割にどのユーザーを割り当てるかを決定します。

    最少特権の原則に従って、ユーザーの信頼レベルに適した役割にユーザーを割り当てます。実行する必要のないタスクをユーザーが実行できないようにすると、問題が発生する可能性が減少します。

役割を作成する方法

役割は、ローカルに作成することも LDAP リポジトリに作成することもできます。

始める前に

役割を作成し、その最初のパスワードを割り当てるには、User Management 権利プロファイルが割り当てられている必要があります。その役割にセキュリティー属性を割り当てるには、User Security 権利プロファイルが割り当てられている必要があります。

  1. 必要なセキュリティー属性を持つ管理者になります。

    詳細は、「管理権限を取得する方法」を参照してください。

  2. 役割を作成するには、roleadd コマンドを使用します。

    そのコマンドの RBAC 引数は次のとおりです。

    # roleadd [-e expire] [-f inactive] [-s shell] [-m] [-S repository] \
    [-A authorization-list] -K key=value] rolename
    -e expire

    役割が期限切れになる日付です。このオプションは、一時的な役割を作成するために使用します。

    -f inactive

    役割を次回使用するまでの最大許容日数です。inactive 値を超えると、その役割は使用できなくなります。デフォルト値は 0 で、有効期限はありません。

    -m

    デフォルトの場所に rolename のホームディレクトリを作成します。

    -s shell

    rolename のログインシェルです。このシェルはプロファイルシェルである必要があります。プロファイルシェルの一覧については、pfexec(1) のマニュアルページを参照してください。


    ヒント - プロファイルシェルは、ls /usr/bin/pf*sh のように、システム上の /usr/bin ディレクトリから一覧表示することもできます。


    -S repository

    files または ldap のいずれかです。デフォルトはローカルファイルです。

    -A authorization-list

    コンマで区切られた 1 つ以上の承認です。承認の一覧については、/etc/security/auth_attr ファイルを参照してください。

    -K key=value

    key=value ペアです。このオプションは繰り返すことができます。次の鍵を使用できます。audit_flagsauthsprofilesprojectdefaultprivlimitprivlock_after_retries、 および roleauth。それらの鍵、その値、および値の設定に必要な承認については、user_attr(4) のマニュアルページを参照してください。

    rolename

    新しい役割の名前です。許容される文字列の制限については、roleadd(1M) のマニュアルページを参照してください。


    ヒント - 役割の名前が権利プロファイルの名前を反映している場合は、その役割の目的を簡単に理解できます。たとえば、Audit Review 権利プロファイルを auditreview 役割に割り当てて、その役割で監査記録の読み取り、フィルタ処理、およびアーカイブを行えるようにします。


    たとえば、次のコマンドではローカルの User Administrator 役割とホームディレクトリを作成します。

    # roleadd -c "User Administrator role, local" -s /usr/bin/pfbash \
    -m -K profiles="User Security,User Management" useradm
    80 blocks
    # ls /export/home/useradm
    local.cshrc     local.login     local.profile
  3. その役割の最初のパスワードを作成します。
    # passwd -r files useradmPassword: <Type useradm password>
    Confirm Password: <Retype useradm password>
    #

    注 - 一般に、役割アカウントは複数のユーザーに割り当てられます。そのため、管理者は役割パスワードを作成し、その役割パスワードを通常の通信手段以外の手段でユーザーに伝えます。


  4. その役割をユーザーに割り当てるには、usermod コマンドを実行します。

    手順については、「役割を割り当てる方法」および例 9-10 を参照してください。

例 9-7 LDAP リポジトリでの User Administrator 役割の作成

この例では、管理者のサイトで LDAP リポジトリを使用します。次のコマンドを実行することで、管理者は User Administrator 役割を LDAP に作成します。

# roleadd -c "User Administrator role, LDAP" -s /usr/bin/pfbash \
-m -S ldap -K profiles="User Security,User Management" useradm

例 9-8 責務を分離するための役割の作成

この例では、管理者のサイトで LDAP リポジトリを使用します。次のコマンドを実行することで、管理者は 2 つの役割を作成します。usermgt 役割では、ユーザーを作成し、彼らにホームディレクトリを提供し、最初のパスワードを割り当て、セキュリティー以外のタスクを実行できます。usersec 役割では、ユーザーを作成できませんが、ユーザーのパスワードを変更したり、ほかの RBAC プロパティーを変更したりできます。

# roleadd -c "User Management role, LDAP" -s /usr/bin/pfbash \
-m -S ldap -K profiles="User Management" usermgt
# roleadd -c "User Security role, LDAP" -s /usr/bin/pfbash \
-m -S ldap -K profiles="User Security" usersec

例 9-9 Device and File Security 役割の作成

この例では、管理者はこのシステム用に Device and File Security 役割を作成します。

# roleadd -c "Device and File System Security admin, local" -s /usr/bin/pfbash \
-m -K profiles="Device Security,File System Security" devflsec

役割を割り当てる方法

この手順では、役割をユーザーに割り当て、ネームキャッシュデーモンを再起動したあと、ユーザーが役割を引き受ける方法を示します。

始める前に

「役割を作成する方法」の説明に従って、役割を追加し、その役割にパスワードを割り当ててあります。

ユーザーのほとんどのセキュリティー属性を変更するには、User Security 権利プロファイルが割り当てられている必要があります。ユーザーの監査フラグを変更するには、スーパーユーザーである必要があります。ほかの属性を変更するには、User Management 権利プロファイルが割り当てられている必要があります。

  1. 必要なセキュリティー属性を持つ管理者になります。

    詳細は、「管理権限を取得する方法」を参照してください。

  2. 役割をユーザーに割り当てます。
    usermod [-S repository] [RBAC-arguments] login

    たとえば、役割をローカルユーザーに割り当てます。

    # usermod -R +useradm jdoe-local

    usermod コマンドのオプションについては、usermod(1M) のマニュアルページまたは 「役割を作成する方法」手順 2 の説明を参照してください。

  3. 変更を有効にするには、ネームサービスキャッシュデーモンを再起動します。
    # svcadm restart system/name-service-cache

例 9-10 暗号化を管理するための役割の作成と割り当て

この例では、LDAP ネットワーク上の管理者が暗号化フレームワークを管理するための役割を作成して、その役割を UID 1111 に割り当てます。管理者は、その割り当てを有効にするために nscd デーモンを再起動します。

# roleadd -c "Cryptographic Services manager" \
-g 14 -m -u 104 -s /usr/bin/pfksh \
-S ldap -K profiles="Crypto Management" cryptmgt
# passwd cryptmgt
New Password:  <Type cryptmgt password>
Confirm password: <Retype cryptmgt password>
# usermod -u 1111 -R +cryptmgt
# svcadm restart system/name-service-cache

UID 1111 を持つユーザーは、ログインしたあと、その役割を引き受けて、割り当てられたセキュリティー属性を表示します。

% su - cryptmgt
Password: <Type cryptmgt password>
Confirm Password: <Retype cryptmgt password>
$ profiles -l
      Crypto Management
          /usr/bin/kmfcfg            euid=0
          /usr/sbin/cryptoadm        euid=0
          /usr/sfw/bin/CA.pl         euid=0
          /usr/sfw/bin/openssl       euid=0
$

暗号化フレームワークについては、第 11 章暗号化フレームワーク (概要)を参照してください。フレームワークの管理方法については、「暗号化フレームワークの管理 (タスクマップ)」を参照してください。

役割を監査する方法

役割が行う動作を監査することができます。監査記録に含まれるのは、役割を引き受けたユーザーのログイン名、役割名、および役割が行った動作です。116:AUE_PFEXEC:execve(2) with pfexec enabled:ps,ex,ua,as 監査イベントによって役割の動作が取り込まれます。asexps、または ua クラスを事前選択することで、役割の動作が監査されます。

始める前に

監査を構成するには、Audit Configuration 権利プロファイルが割り当てられている必要があります。監査サービスを有効にするか、更新するには、Audit Control 権利プロファイルが割り当てられている必要があります。

  1. 役割の監査を監査計画に組み込みます。

    計画については、第 27 章監査の計画を参照してください。

  2. 必要なセキュリティー属性を持つ管理者になります。

    詳細は、「管理権限を取得する方法」を参照してください。

  3. asexps、または ua のいずれかのクラスを事前選択します。
    • 監査サービスが有効になっている場合は、事前選択されたクラスを確認します。
      # auditconfig -getflags

      asexps、または ua のいずれかのクラスが事前選択されている場合は、役割の動作が監査中です。そうでない場合は、これらのクラスのいずれかを既存のクラスに追加します。

      # auditconfig -setflags existing preselections,as
    • 監査がまだ有効になっていない場合は、役割の動作を監査するクラスを事前選択します。
      # auditconfig -setflags as

      この例では、管理者は as クラスを選択しています。このクラスには、ほかの監査イベントも含まれます。クラスに含まれている監査イベントを表示するには、例 28-25 に示すように、auditrecord コマンドを使用します。

  4. 監査サービスを有効にするか、更新します。
    # audit -s

権利プロファイルを作成または変更する方法

提供された権利プロファイルに、必要な一連のセキュリティー属性が含まれていない場合は、権利プロファイルを作成または変更できます。権利プロファイルの詳細については、「RBAC の権利プロファイル」を参照してください。

新しい権利プロファイルを作成するもっとも簡単な方法は、既存の権利プロファイルをコピーして変更することです。

始める前に

権利プロファイルを作成または変更するには、File Security 権利プロファイルが割り当てられている必要があります。

  1. 必要なセキュリティー属性を持つ管理者になります。

    詳細は、「管理権限を取得する方法」を参照してください。

  2. 既存のプロファイルから新しい権利プロファイルを作成します。
    # profiles [-S repository] existing-profile-name

    新しい名前の入力を求められます。既存の権利プロファイルの内容が新しいプロファイルに複製されます。

  3. 続けて新しい権利プロファイルを変更します。

    次の例に示すように、補助権利プロファイル、承認、およびその他のセキュリティー属性を追加または削除します。

例 9-11 既存のプロファイルからの新しい権利プロファイルの作成

この例では、管理者は LDAP リポジトリに含まれる Console User 権利プロファイルをカスタマイズします。

# profiles -S ldap Console User
New name: ExampleCo Console User
ExampleCo Console User >
Description > Manage MyCompany Systems as the Console User
Help > ExCoConsUser.html

管理者は、この権利プロファイルに対して roleauth 属性を設定します。

roleauth=yes

例 9-12 権利プロファイルからの基本特権の削除

次の例では、徹底的なテストのあとで、セキュリティー管理者は、SunRayUser 権利プロファイルが割り当てられているすべてのユーザーから基本特権を削除します。彼らは proc_session 特権を使用できなくなります。つまり、これらのユーザーはユーザーの現在のセッション以外でプロセスを調査できません。

$ profiles -K defaultpriv=basic,!proc_session SunRayUser

例 9-13 権利プロファイルの制限セットからの特権の削除

次の例では、徹底的なテストのあとで、セキュリティー管理者は、SunRayUser 権利プロファイルが割り当てられているすべてのユーザーから制限特権を削除します。この削除により、これらのユーザーはほかのユーザーのプロセスを表示できなくなります。

$ profiles -K limitpriv=all,!proc_session SunRayUser

例 9-14 コマンドへの特権の追加

この例では、セキュリティー管理者が権利プロファイル内の特権をアプリケーションに追加します。このアプリケーションは特権を認識できます。

# profiles -p SiteApp
profiles:SiteApp> set desc="Site application"
profiles:SiteApp> add cmd=/opt/site-app/bin/site-cmd
profiles:SiteApp:site-cmd> add privs=proc_fork,proc_taskid
profiles:SiteApp:site-cmd> end
profiles:SiteApp> exit

確認するには、管理者は site-cmd を選択します。

# profiles -p SiteApp "select cmd=/opt/site-app/bin/site-cmd; info;end"
Found profile in files repository.
  id=/opt/site-app/bin/site-cmd
  privs=proc_fork,proc_taskid

参照

セキュリティー属性の割り当てをトラブルシューティングするには、「RBAC と特権の割り当てをトラブルシューティングする方法」を参照してください。背景情報については、「割り当てられたセキュリティー属性の検索順序」を参照してください。

RBAC プロパティーをレガシーアプリケーションに追加する方法

レガシーアプリケーションは、コマンドまたはコマンドのセットです。セキュリティー属性は、権利プロファイルのコマンドごとに設定します。その後、権利プロファイルを役割に含めます。役割を引き受けるユーザーは、セキュリティー属性を指定したレガシーアプリケーションを実行することができます。

始める前に

権利プロファイルを作成するには、Information Security または Rights Management 権利プロファイルが割り当てられている必要があります。権利プロファイルを割り当てるには、User Security 権利プロファイルが割り当てられている必要があります。

  1. レガシーアプリケーションを実装するコマンドにセキュリティー属性を追加します。

    レガシーアプリケーションにセキュリティー属性を追加するときは、コマンドに追加する場合と同じ方法で追加します。セキュリティー属性を指定したコマンドを権利プロファイルに追加する必要があります。レガシーコマンドに対して、euid=0 または uid=0 のセキュリティー属性を指定します。手順の詳細については、「権利プロファイルを作成または変更する方法」を参照してください。

    1. レガシーアプリケーション用に新しい権利プロファイルを作成します。

      手順については、「権利プロファイルを作成または変更する方法」を参照してください。

    2. 必要なセキュリティー属性を持つコマンドを追加します。

      例については、例 9-14 を参照してください。

  2. その権利プロファイルを役割のプロファイルリストに含めます。

    権利プロファイルを役割に割り当てるには、例 9-10 を参照してください。

例 9-15 スクリプトのコマンドへのセキュリティー属性の追加

スクリプトのコマンドが setuid ビットまたは setgid ビットセットを持つ必要がある場合、実行可能なスクリプトおよびコマンドに対して、権利プロファイルでセキュリティー属性を追加する必要があります。その後、権利プロファイルを役割に含め、含めた役割をユーザーに割り当てます。ユーザーが、役割を引き受け、スクリプトを実行すると、コマンドはそのセキュリティー属性で実行されます。

例 9-16 スクリプトまたはプログラム内の承認の確認

承認用のスクリプトを用意するには、auths コマンドに基づいたテストを追加する必要があります。このコマンドの詳細については、auths(1) のマニュアルページを参照してください。

たとえば、次の行では、$1 引数に指定した承認がユーザーに与えられているかどうかをテストします。

if [ `/usr/bin/auths|/usr/xpg4/bin/grep $1` ]; then
        echo Auth granted
else
        echo Auth denied
fi

より万全を期すために、テストにはワイルドカードを使用するほかの承認を確認するロジックを含める必要があります。たとえば、solaris.system.date 承認がユーザーにあるかどうかをテストするには、次の文字列を確認する必要があります。

プログラムを作成している場合は、getauthattr() 関数を使用して、承認をテストします。

RBAC と特権の割り当てをトラブルシューティングする方法

割り当てられたセキュリティー属性でユーザーまたは役割のプロセスが実行されないのは、いくつかの要因が影響している可能性があります。

始める前に

root 役割になっている必要があります。

  1. ネームサービスを確認して再起動します。
    1. ユーザーまたは役割のセキュリティー割り当てが、システムで有効になっているネームサービス内にあることを確認します。
    2. ネームサービスキャッシュ svc:/system/name-service/cache を再起動します。

      nscd デーモンには長い有効期間を設定することができます。デーモンを再起動して、現在のデータでネームサービスを更新します。

  2. セキュリティー属性が割り当てられている場所を調べます。

    セキュリティー属性を userattr -v コマンドの値として使用します。たとえば、次のコマンドは割り当てられているセキュリティー属性と、その割り当てがユーザー jdoe に対して行われた場所を示しています。

    # userattr -v audit_flags jdoe Modifications to the system defaults
    user_attr: fw:no
    # userattr -v auths jdoe Assigned authorizations
    solaris.admin.wusb.read,solaris.device.cdrw,solaris.device.mount.removable,
    solaris.mail.mailq,solaris.profmgr.read,solaris.smf.manage.audit,
    solaris.smf.value.audit
    # userattr -v audit_flags jdoe Modifications to audit preselection mask
    # userattr -v auths jdoe Assigned authorizations
    # userattr -v defaultpriv jdoe Modifications to basic user privileges
    # userattr -v limitpriv jdoe Modifications to limit privileges 
    # userattr -v lock_after_retries jdoe Automatic lockout attribute
    # userattr -v profiles jdoe Assigned rights profiles
    user_attr: Audit Review,Stop
    # userattr roles jdoe Assigned roles
    user_attr : cryptomgt,infosec
  3. 作成済みの権利プロファイルについて、適切なセキュリティー属性がコマンドに割り当てられていることを確認します。

    たとえば、成功するためには euid=0 ではなく uid=0 が必要なコマンドもあります。状況によっては承認が必要となるコマンドもあります。

  4. ユーザーがセキュリティー属性を使用できない場合は、次を確認します。
    1. セキュリティー属性がユーザーに直接割り当てられているかどうかを確認します。

      userattr コマンドを使用します。

    2. セキュリティー属性が直接割り当てられていない場合は、ユーザーに直接割り当てられている権利プロファイルを確認します。
      1. 順番に、権利プロファイルリストでセキュリティー属性の割り当てを確認します。

        リスト内のもっとも古い権利プロファイルに含まれる属性の値がユーザーの使用できる値です。この値が正しくない場合は、その権利プロファイルで値を変更するか、またはプロファイルリストの順番を変えます。

        特権付きのコマンドについては、特権が defaultpriv キーワードで割り当てられているかどうかを確認します。この割り当ては、特定のコマンドの特権に追加されます。

      2. 属性の割り当てが表示されない場合は、ユーザーに割り当てられている役割を確認します。

        属性が 1 つの役割に割り当てられている場合、ユーザーはその役割を引き受けてセキュリティー属性を取得する必要があります。属性が複数の役割に割り当てられている場合、リスト内のもっとも古い役割での割り当てが有効です。この値が正しくない場合は、正しい値をリスト内の最初の役割に割り当てるか、または役割の割り当ての順番を変えます。

  5. 特権をユーザーまたは役割に直接割り当てた場合は、失敗したコマンドが成功するために承認が必要かどうかを確認します。

    注 - 状況によっては承認が必要となるコマンドもあります。ベストプラクティスは、特権を直接割り当てるのではなく、管理コマンドが含まれている権利プロファイルを割り当てることです。


    管理コマンドが含まれている権利プロファイルを確認します。承認が含まれている権利プロファイルが存在する場合は、単に特権だけではなく、その権利プロファイルをユーザーに割り当てます。その権利プロファイルを、そのコマンドが含まれるほかの権利プロファイルの前に順序付けます。

  6. ユーザーが原因でコマンドが引き続き失敗する場合は、次を確認します。
    1. ユーザーがそのコマンドをプロファイルシェルで実行していることを確認します。

      管理コマンドは、プロファイルシェルで実行する必要があります。ユーザーエラーを軽減するために、プロファイルシェルをユーザーのログインシェルとして割り当てることができます。あるいは、管理コマンドをプロファイルシェルで実行するようユーザーに注意を促すこともできます。

    2. ユーザーに直接割り当てられているセキュリティー属性がコマンドの成功を妨げているかどうかを確認します。

      特に、ユーザーの defaultpriv および limitpriv 属性の値を確認します。

    3. どの権利プロファイルまたは役割にそのコマンドが含まれているのかを調べます。
      1. 順番に、権利プロファイルリストでセキュリティー属性を持つコマンドを確認します。

        権利プロファイルリスト内のもっとも古い値がユーザーの使用できる値です。この値が正しくない場合は、その権利プロファイルで値を変更するか、またはプロファイルリストの順番を変えます。

        特に、プロファイルの defaultpriv および limitpriv 属性の値を確認します。

      2. 属性の割り当てが表示されない場合は、ユーザーに割り当てられている役割を確認します。

        コマンドが 1 つの役割に割り当てられている場合、ユーザーはその役割を引き受けてセキュリティー属性を取得する必要があります。属性が複数の役割に割り当てられている場合、リスト内のもっとも古い役割での割り当てが有効です。この値が正しくない場合は、正しい値をリスト内の最初の役割に割り当てるか、または役割の割り当ての順番を変えます。

  7. 役割が原因でコマンドが失敗する場合は、次を確認します。

    管理コマンドを成功させるためには特権が必要です。状況によっては承認が必要となるコマンドもあります。ベストプラクティスは、管理コマンドが含まれている権利プロファイルを割り当てることです。

    1. 役割に直接割り当てられているセキュリティー属性がコマンドの成功を妨げているかどうかを確認します。

      特に、役割の defaultpriv および limitpriv 属性の値を確認します。

    2. 順番に、権利プロファイルリストでセキュリティー属性を持つコマンドを確認します。

      権利プロファイルリスト内のもっとも古い値がユーザーの使用できる値です。この値が正しくない場合は、その権利プロファイルで値を変更するか、またはプロファイルリストの順番を変えます。