Go to main content

マニュアルページ セクション 7: 標準、環境、マクロ、文字セット、その他

印刷ビューの終了

更新: 2022年7月27日
 
 

smf_security(7)

名前

smf_security - サービス管理機能のセキュリティー動作

説明

サービス管理機能の構成サブシステム smf(7) には、サービスの構成を変更するための特権が必要です。ユーザーに特権を付与するには、後述する rbac(7) の承認やプロファイルを usermod コマンド経由でユーザーに関連付けます。詳細は、usermod(8) のマニュアルページを参照してください。

サービスおよびサービスインスタンスの操作には次の承認が使用されます。

solaris.smf.modify

サービス、サービスインスタンス、またはそれらのプロパティーの追加、削除、変更、および保護されたプロパティー値の読み取りが承認されます。

プロパティーグループ承認

smf (7) 構成サブシステムは、各サービスおよびサービスインスタンスにプロパティーを関連付けます。関連するプロパティーはグループ化されています。グループは、実行メソッド、資格情報、アプリケーションデータ、リスタータの状態を表す場合があります。プロパティーグループを作成または変更する機能がある場合、オペレーティングシステム特権を必要とする可能性のあるアクションを smf(7) コンポーネントで実行させることができます。それに従って、フレームワークでは、プロパティーグループを操作するための適切な承認が要求されます。

各プロパティーグループには、その目的に対応するタイプがあります。The core property group types are method, dependency, framework, and application (where application is the recommended type for property groups containing application data).The following basic authorizations apply only to the core property group types:

solaris.smf.modify.method

method タイプのプロパティーグループの値の変更または作成、削除、変更が承認されます。

solaris.smf.modify.dependency

dependency タイプのプロパティーグループの値の変更または作成、削除、変更が承認されます。

solaris.smf.modify.application

application タイプのプロパティーグループの値の変更、保護された値の読み取り、および作成、削除、変更が承認されます。

solaris.smf.modify.framework

framework タイプのプロパティーグループの値の変更または作成、削除、変更が承認されます。

solaris.smf.modify

サービス、サービスインスタンス、またはそれらのプロパティーの追加、削除、変更、および保護されたプロパティー値の読み取りが承認されます。

プロパティーグループ固有の承認は、そのプロパティーグループに含まれているプロパティーによって指定できます。

modify_authorization

承認は、プロパティーグループ内のプロパティーの追加、削除、または変更を許可します。また、プロパティーグループが保護されている場合は、そのグループからプロパティー値を取得することも許可します。

value_authorization

特定のサービスの構成を変更するための承認は、慣例的に solaris.smf.value.<service> 承認を使って付与されます。

read_authorization

保護されたプロパティーグループを読み取るための承認は、慣例的に書き込みアクセス権の付与に使用されるのと同じ承認を使って付与されますが、これは、保護された構成値の書き込みを承認されたユーザーだけがそれらの値を読み取れるようにするためです。

前述の承認プロパティーは、そのタイプが astring の場合だけ使用されます。インスタンスプロパティーグループにいずれかのプロパティーがない場合でも、そのプロパティーと同じ名前を持つプロパティーグループがインスタンスのサービスにあるときは、その値が使用されます。

保護されたプロパティーグループ

通常、リポジトリ内のすべてのプロパティー値は、明示的な承認なしで任意のユーザーが読み取ることができます。framework タイプ以外のプロパティーグループは、値の保護を必要とするプロパティーを格納するために使用できます。適切な承認がない場合、これらは公開できません。プロパティーグループのステータスが保護されたステータスであることは、文字列値の read_authorization プロパティーの存在によって示されます。このプロパティーが存在する場合、そのプロパティーグループに含まれているプロパティーの値は、「プロパティーグループ承認」で説明されている方法によってのみ取得可能です。

機密性が高いとみなされるデータのバックアップをポリシーによって禁止している管理ドメインでは、SMF リポジトリデータベースをバックアップから除外するようにしてください。このようなポリシーが存在するにもかかわらず、svccfg(8) アーカイブコマンドを使用して、保護されたプロパティー値を含まないリポジトリのアーカイブを作成することにより、保護されていないプロパティー値をバックアップできます。

サービスアクション承認

サービスインスタンスに対する特定のアクションは、結果としてサービスを中断または非アクティブ化する場合があります。どのようなサービス拒否も意図的な管理操作であることを保証するために、これらのアクションには承認が必要です。このようなアクションには、refresh メソッドや restart メソッドを実行する要求、サービスインスタンスを保守に配置するなどの非稼働状態にする要求があります。次の承認は、このようなアクションの要求を許可します。

solaris.smf.manage

特定のサービスを有効化、無効化、再起動、リフレッシュ、または管理するための承認は、慣例的に solaris.smf.manage.<service> 承認を使って付与されます。

さらに、general/action_authorization プロパティーで追加の承認を指定して、そのサービスインスタンスに対するサービスアクションの要求を許可できます。このプロパティーを変更するには、solaris.smf.manage 承認が必要です。

定義済み権利プロファイル

smf(7) の一般的な処理を操作するための承認をグループ化した 2 つの権利プロファイルが用意されています。

サービス管理

サービスマネージャーはリポジトリ内のすべてのサービスを任意の方法で操作できます。これは、solaris.smf.manage 承認と solaris.smf.modify 承認に対応します。

pkg コマンドを使用して、サービスマニフェスト内にサービスインベントリを含んでいるソフトウェアパッケージの追加や削除を行うには、少なくともサービス管理プロファイルが必要です。

サービスオペレータ

サービスオペレータは、システムの任意のサービスインスタンスを有効または無効にしたり、その restart メソッドや refresh メソッドの実行を要求したりできます。これは、solaris.smf.manage 承認と solaris.smf.modify.framework 承認に対応します。

サイトでは、必要に応じてカスタマイズした追加の権利プロファイルを定義することもできます。

リモートリポジトリの変更

リモートリポジトリサーバーは、追加の特権確認の結果、変更要求を拒否することがあります。「注意事項」を参照してください。

使用例 1 ユーザーが root にならなくても system/cron サービスを変更できるようにします。

次の行を /etc/user_attr に追加すると、ユーザー「johndoe」は root にならなくても system/cron サービスの再起動、有効化、無効化、またはその他の状態変更を行えるようになります。

usermod -A +solaris.smf.manage.cron
使用例 2 ユーザーが root にならなくてもいずれかのサービスのプロパティーを変更したり、system/cron サービスを変更したりできるようにします。

次の行を /etc/user_attr に追加すると、ユーザー「janedoe」は root にならなくてもいずれかのサービスのプロパティーを変更したり、system/cron サービスの再起動、有効化、無効化、またはその他の状態変更を行なったりできるようになります。

usermod -A +auths=solaris.smf.modify,solaris.smf.manage.cron janedoe

関連項目

auths(1), profiles(1), prof_attr(5), user_attr(5), rbac(7), smf(7), svccfg(8), usermod(8)

smf(7) の現在のバージョンでは、リモートリポジトリはサポートされていません。

サービスが limit_privileges とは異なる特権で root ユーザーとして起動するように構成されている場合、結果として得られるプロセスは特権に対応したものになります。これは、seteuid(<non-zero UID>) によって特権が basic 以下に下がると考えている開発者には予期しないことです。