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

ドキュメントの情報

はじめに

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

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

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

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

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

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

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

6.  BART を使用したファイル整合性の検証 (タスク)

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

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

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

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

RBAC の使用 (タスク)

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

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

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

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

役割になる方法

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

割り当てられている管理権限を使用する方法

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

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

RBAC の実装を計画する方法

役割を作成する方法

役割を割り当てる方法

役割を監査する方法

権利プロファイルを作成する方法

システム権利プロファイルをクローニングおよび変更する方法

承認を作成する方法

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

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

RBAC の管理 (タスク)

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

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

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

割り当てられているセキュリティー属性の順序を変更する方法

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

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

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

特権の使用 (タスク)

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

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

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

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

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

ポートに拡張特権ポリシーを適用する方法

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

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

パート IV 暗号化サービス

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

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

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

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

14.  プラグイン可能認証モジュールの使用

15.  Secure Shell の使用

16.  Secure Shell (参照)

17.  簡易認証セキュリティー層の使用

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

パート 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. 役割を作成します。
役割を作成し、それらの役割をユーザーに割り当てます。
(推奨) 役割の動作を監査します。
役割の動作を記録する監査イベントを含む監査クラスを事前選択します。
権利プロファイルを作成します。
権利プロファイルを作成します。
権利プロファイルを変更します。
権利プロファイル内の特権の割り当てを変更します。

特権を権利プロファイルのコマンドに追加します。

既存の権利プロファイルをクローニングします。
システム権利プロファイルから権利プロファイルを作成します。

solaris.admin.edit/file 承認を権利プロファイルに追加します。

権利プロファイルから承認を削除します。

承認を作成します。
承認を作成します。

権利プロファイルで新しい承認を使用します。

レガシーアプリケーションをセキュリティー保護します。
レガシーアプリケーションの 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. 役割を作成するには、roleadd コマンドを使用します。

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

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

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


    このコマンドの RBAC 引数は、user_attr(4) のマニュアルページに記載され、「ユーザーのセキュリティー属性を変更する方法」手順 1 に示されているように、usermod コマンドの引数に似ています。たとえば、次のコマンドではローカルの 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
  2. その役割の最初のパスワードを作成します。
    # passwd -r files useradm
    Password: <Type useradm password>
    Confirm Password: <Retype useradm password>
    #

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


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

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

例 9-11 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-12 責務を分離するための役割の作成

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

# 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-13 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 権利プロファイルが割り当てられている管理者になる必要があります。ユーザーの監査フラグを変更するには、root 役割になる必要があります。その他の属性を変更するには、User Management 権利プロファイルが割り当てられている管理者になる必要があります。root 役割は、ユーザーのすべての属性を変更できます。詳細は、「割り当てられている管理権限を使用する方法」を参照してください。

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

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

# 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

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 権利プロファイルが割り当てられている管理者になる必要があります。root 役割は、この手順内のすべてのタスクを実行できます。詳細は、「割り当てられている管理権限を使用する方法」を参照してください。

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

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

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

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

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

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

  3. 監査サービスを有効にするか、リフレッシュします。
    # audit -s

権利プロファイルを作成する方法

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

始める前に

権利プロファイルを作成するには、File Security 権利プロファイルが割り当てられている管理者になる必要があります。詳細は、「割り当てられている管理権限を使用する方法」を参照してください。

  1. 権利プロファイルを作成します。
    # profiles -p [-S repository] profile-name

    説明を入力するよう求められます。

  2. 権利プロファイルに内容を追加します。

    1 つの値を持つプロファイルプロパティーには set サブコマンドを使用します (set desc など)。複数の値を持つプロパティーには add サブコマンドを使用します (add cmd など)。

    たとえば、次のコマンドでは、「すべてのユーザーに新しい権利ポリシーを割り当てる方法」にあるカスタム PAM 権利プロファイルを対話的に作成します。名前は、表示のために短縮されています。

    # profiles -p -S LDAP "Site PAM LDAP"
    profiles:Site PAM LDAP> set desc="Profile which sets pam_policy=ldap"
    ...LDAP> set pam_policy=ldap
    ...LDAP> commit
    ...LDAP> end
    ...LDAP> exit

例 9-15 Sun Ray Users 権利プロファイルの作成

この例では、管理者は、LDAP リポジトリ内に Sun Ray ユーザーのための権利プロファイルを作成します。管理者は、すでに Basic Solaris User 権利プロファイルの Sun Ray バージョンを作成し、Sun Ray サーバー上の policy.conf ファイルからすべての権利プロファイルを削除しています。

# profiles -p -S LDAP "Sun Ray Users"
profiles:Sun Ray Users> set desc="For all users of Sun Rays"
... Ray Users> add profiles="Sun Ray Basic User"
... Ray Users> set defaultpriv="basic,!proc_info"
... Ray Users> set limitpriv="basic,!proc_info"
... Ray Users> end
... Ray Users> exit

管理者は、内容を確認します。

# profiles -p "Sun Ray Users"
Found profile in LDAP repository.
profiles:Sun Ray Users> info
        name=Sun Ray Users
        desc=For all users of Sun Rays
        defaultpriv=basic,!proc_info,
        limitpriv=basic,!proc_info,
        profiles=Sun Ray Basic User

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

次の例では、徹底的なテストのあとで、セキュリティー管理者は Sun Ray Users 権利プロファイルから別の基本特権を削除します。例 9-15 では、管理者は 1 つの特権を削除しました。この権利プロファイルが変更されて 2 つの基本特権が削除されます。このプロファイルが割り当てられているユーザーは、現在のセッションの外部ではどのプロセスも検査できず、さらに別のセッションを追加することもできません。

$ profiles -p "Sun Ray Users"
profiles:Sun Ray Users> set defaultpriv="basic,!proc_session,!proc_info"
profiles:Sun Ray Users> end
profiles:Sun Ray Users> exit

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

次の例では、徹底的なテストのあとで、セキュリティー管理者は Sun Ray Users 権利プロファイルから 2 つの制限特権を削除します。

$ profiles -p "Sun Ray Users"
profiles:Sun Ray Users> set limitpriv="all,!proc_session,!proc_info"
profiles:Sun Ray Users> end
profiles:Sun Ray Users> exit

例 9-18 特権付きコマンドを含む権利プロファイルの作成

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

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

システム権利プロファイルをクローニングおよび変更する方法

Oracle Solaris が提供する権利プロファイルは読み取り専用です。提供された権利プロファイルの一連のセキュリティー属性が不十分な場合は、変更のためにそれらの権利プロファイルをクローニングできます。たとえば、提供された権利プロファイルに solaris.admin.edit/path-to-system-file 承認を追加することもできます。

始める前に

権利プロファイルを作成または変更するには、File Security 権利プロファイルが割り当てられている管理者になる必要があります。詳細は、「割り当てられている管理権限を使用する方法」を参照してください。

  1. 既存のプロファイルから新しい権利プロファイルを作成します。
    # profiles -p [-S repository] existing-profile-name
    • 既存の権利プロファイルを拡張するには、新しいプロファイルを作成します。

      既存の権利プロファイルを補助権利プロファイルとして追加してから、拡張機能を追加します。例については、例 9-19 を参照してください。

    • 既存の権利プロファイルから内容を削除するには、そのプロファイルをクローニングします。

      次に、その名前を変更してから変更します。例については、例 9-20 を参照してください。

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

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

例 9-19 Network IPsec Management 権利プロファイルのクローニングと拡張

この例では、管理者は、サイトの IPsec Management 権利プロファイルにいくつかの solaris.admin.edit 承認を追加します。

管理者は、Network IPsec Management 権利プロファイルを変更できないことを確認します。

# profiles -p "Network IPsec Management"
profiles:Network IPsec Management> add auths="solaris.admin.edit/etc/hosts"
Cannot add. Profile cannot be modified

次に、管理者は、Network IPsec Management プロファイルを含む権利プロファイルを作成します。

# profiles -p "Total IPsec Mgt"
... IPsec Mgt> set desc="Network IPsec Mgt plus edit authorization"
... IPsec Mgt> add profiles="Network IPsec Management"
... IPsec Mgt> add auths="solaris.admin.edit/etc/hosts"
... IPsec Mgt> add auths="solaris.admin.edit/etc/inet/ipsecinit.conf"
... IPsec Mgt> add auths="solaris.admin.edit/etc/inet/ike/config"
... IPsec Mgt> add auths="solaris.admin.edit/etc/inet/secret/ipseckeys"
... IPsec Mgt> end
... IPsec Mgt> exit

管理者は、内容を確認します。

# profiles -p "Total IPsec Mgt" info
        name=Total IPsec Mgt
        desc=Network IPsec Mgt plus edit authorization
        auths=solaris.admin.edit/etc/hosts,
              solaris.admin.edit/etc/inet/ipsecinit.conf,
              solaris.admin.edit/etc/inet/ike/config,
              solaris.admin.edit/etc/inet/secret/ipseckeys
        profiles=Network IPsec Management

例 9-20 権利プロファイルのセキュリティー属性のクローニングと削除

この例では、管理者は VSCAN サービスのプロパティーの管理を、このサービスを有効および無効にする機能から分離します。

最初に、管理者は、Oracle Solaris が提供する権利プロファイルの内容を一覧表示します。

% profiles -p "VSCAN Management" info
        name=VSCAN Management
        desc=Manage the VSCAN service
        auths=solaris.smf.manage.vscan,solaris.smf.value.vscan,
              solaris.smf.modify.application
        help=RtVscanMngmnt.html

次に、管理者は、サービスを有効および無効にするための権利プロファイルを作成します。

# profiles -p "VSCAN Management"
profiles:VSCAN Management> set name="VSCAN Control"
profiles:VSCAN Control> set desc="Start and stop the VSCAN service"
... VSCAN Control> remove auths="solaris.smf.value.vscan"
... VSCAN Control> remove auths="solaris.smf.modify.application"
... VSCAN Control> end
... VSCAN Control> exit

次に、管理者は、サービスのプロパティーを変更できる権利プロファイルを作成します。

# profiles -p "VSCAN Management"
profiles:VSCAN Management> set name="VSCAN Properties"
profiles:VSCAN Properties> set desc="Modify VSCAN service properties"
... VSCAN Properties> remove auths="solaris.smf.manage.vscan"
... VSCAN Properties> end
... VSCAN Properties> exit

管理者は、新しい権利プロファイルの内容を確認します。

# profiles -p "VSCAN Control" info
        name=VSCAN Control
        desc=Start and stop the VSCAN service
        auths=solaris.smf.manage.vscan
# profiles -p "VSCAN Properties" info
        name=VSCAN Properties
        desc=Modify VSCAN service properties
        auths=solaris.smf.value.vscan,solaris.smf.modify.application

参照

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

承認を作成する方法

提供された承認に、必要な承認が含まれていない場合は、承認を作成できます。承認の詳細は、「RBAC の承認」を参照してください。

始める前に

保護しているプログラムで、承認を定義して使用しています。手順については、『Oracle Solaris 11 セキュリティーサービス開発ガイド』および『Oracle Solaris 11 セキュリティーサービス開発ガイド』の「承認について」を参照してください。

  1. (省略可能) 新しい承認のヘルプファイルを作成します。

    たとえば、ユーザーがアプリケーション内のデータを変更できるようにするための承認のヘルプファイルを作成します。

    # pfedit /docs/helps/NewcoSiteAppModData.html
    <HTML>
    -- Copyright 2012 Newco.  All rights reserved.
    -- NewcoSiteAppModData.html 
    -->
    <HEAD>
         <TITLE>NewCo Modify SiteApp Data Authorization</TITLE>
    </HEAD>
    <BODY>
    The com.newco.siteapp.data.modify authorization authorizes you 
    to modify existing data in the application.
    <p>
    Only authorized accounts are permitted to modify data. 
    Use this authorization with care.
    <p>
    </BODY>
    </HTML>
  2. 承認を作成します。

    たとえば、ローカルシステム上に com.newco.siteapp.data.modify 承認を作成します。

    # auths add -t "SiteApp Data Modify Authorized" \
    -h /docs/helps/NewcoSiteAppModData.html com.newco.siteapp.data.modify

    これで、その承認を権利プロファイルに追加し、そのプロファイルを役割またはユーザーに割り当てることができるようになりました。

例 9-21 権利プロファイルへの承認の追加

この例では、管理者は、ユーザーによるアプリケーションの実行を許可する前にサイトのアプリケーションがチェックする承認を追加します。

承認を作成したあと、セキュリティー管理者は、既存の権利に com.newco.siteapp.data.modify 承認を追加します。管理者は、例 9-18 にあるプロファイルを作成しました。

# profiles -p "SiteApp"
profiles:SiteApp> add auths="com.newco.siteapp.data.modify"
profiles:SiteApp> end
profiles:SiteApp> exit

確認するために、管理者はプロファイルの内容を一覧表示します。

# profiles -p SiteApp
Found profile in files repository.
  id=/opt/site-app/bin/site-cmd
  auths=com.newco.siteapp.data.modify

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

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

始める前に

権利プロファイルを作成するには、Information Security または Rights Management 権利プロファイルが割り当てられている管理者になる必要があります。権利プロファイルを割り当てるには、User Security 権利プロファイルが割り当てられている管理者になる必要があります。root 役割は、この手順内のすべてのタスクを実行できます。詳細は、「割り当てられている管理権限を使用する方法」を参照してください。

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

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

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

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

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

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

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

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

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

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

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

承認を確認するには、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. ユーザーまたは役割のセキュリティー割り当てが、システムで有効になっているネームサービス内にあることを確認します。
      # svccfg -s name-service/switch
      svc:/system/name-service/switch> listprop config
      config                      application
      config/value_authorization  astring  solaris.smf.value.name-service.switch
      config/default              astring  files ldap
      config/host                 astring  "files dns mdns ldap"
      config/netgroup             astring  ldap
      config/printer              astring  "user files"

      この出力では、明示的に示されていないサービスはすべて、デフォルトの値 files ldap を継承します。そのため、passwd (したがって user_attr)、auth_attr、および prof_attr がまずファイル内で、次に LDAP 内で検索されます。

    2. ネームサービスキャッシュ svc:/system/name-service/cache を再起動します。

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

      # svcadm restart name-service/cache
  2. セキュリティー属性がユーザーに割り当てられている場所を判定します。

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

    # userattr -v audit_flags jdoe Indicates modified system defaults
    user_attr: fw:no
    # userattr -v auths jdoe Indicates no added auths
    Basic Solaris User :solaris.mail.mailq,solaris.network.autoconf.read,
    solaris.admin.wusb.read
    Console User :solaris.system.shutdown,solaris.device.cdrw,
    solaris.device.mount.removable,solaris.smf.manage.vbiosd,solaris.smf.value.vbiosd
    # userattr -v defaultpriv jdoe Indicates basic user privileges only
    # userattr -v limitpriv jdoe Indicates default limit privileges 
    # userattr -v lock_after_retries jdoe Indicates no automatic lockout
    # userattr -v pam_policy jdoe Assigned per-user PAM policy
    # userattr -v profiles jdoe Indicates assigned rights profiles
    user_attr: Audit Review,Stop
    # userattr roles jdoe Assigned roles
    user_attr : cryptomgt,infosec

    この出力は、jdoe に監査フラグ、2 つの権利プロファイル、および 2 つの役割が直接割り当てられていることを示しています。そのため、権利プロファイル内の監査フラグの値はすべて無視されます。ある役割になると、その役割内の監査フラグによってユーザーの監査フラグが置き換えられます。

  3. 割り当てられている承認のスペルが正しいことを確認します。

    承認はユーザーに対して累積されるため、承認の割り当てのソースは重要ではありません。ただし、スペルが正しくない承認は暗黙のうちに失敗します。

  4. 自分が作成した権利プロファイルについて、そのプロファイル内のコマンドに適切なセキュリティー属性を割り当てたことを確認します。

    たとえば、成功するには euid=0 ではなく uid=0 が必要なコマンドもあります。また、オプションに承認が必要になることがあるコマンドもあります。

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

      手順 2 に示すように、userattr コマンドを使用します。

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

        リスト内のもっとも古い権利プロファイルに含まれる属性の値は、カーネル内の値です。この値が正しくない場合は、その権利プロファイル内の値を変更するか、またはプロファイルを正しい順序で再割り当てします。

        特権付きコマンドについては、特権が defaultpriv キーワードで割り当てられているか、または limitpriv キーワードで削除されているかを確認します。

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

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

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

      特権を直接割り当てるのではなく、特権が必要なコマンドにその特権を割り当て、必要な承認を追加し、そのコマンドと承認を権利プロファイル内に配置してから、そのプロファイルをユーザーに割り当てます。

    2. 必要な承認を含む権利プロファイルが存在するかどうかを確認します。

      存在する場合は、それをユーザーに割り当てます。その権利プロファイルを、そのコマンドが含まれるほかの権利プロファイルの前に順序付けます。

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

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

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

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

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

        権利プロファイルのリスト内のもっとも古い値は、カーネル内の値です。この値が正しくない場合は、その権利プロファイル内の値を変更するか、またはプロファイルを正しい順序で再割り当てします。

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

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

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

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

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

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

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

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

      権利プロファイルのリスト内のもっとも古い値は、カーネル内の値です。この値が正しくない場合は、その権利プロファイル内の値を変更するか、またはプロファイルを正しい順序で再割り当てします。