rad - リモート管理デーモン
/usr/lib/rad [-d] [-s] [-S fmri] [-M module [ -M module ]...] [-m moduledir [ -m moduledir ]...] [-t transpec [ -t transpec ]...] [-e timeout]
rad は、プログラムによるシステム管理インタフェースおよびモニタリングインタフェースをさまざまな高レベルの言語でコンシューマに対してセキュアに公開する機能です。
rad は次の方法で使用できます。
サービスとして:
サービスとして実行した場合、rad は getpeerucred(3C) または pam(3PAM) を使用して接続を認証します。この方法を使用する場合、消費される API は認証されたユーザーとして実行されます。この操作モードでは、自らの特権操作の実行を分離することを求めるローカルコンシューマと、リモートコンシューマの両方を念頭に置いて提供されます。
非特権プログラムとして:
非特権プログラムとして実行する場合、rad はそのクライアントとそれが公開する管理 API の間のブリッジとしてのみ機能します。この方法を使用する場合、消費されるすべてのインタフェースは、rad プロセスによって保持されている権利を使用して実行されます。
rad はモジュール型です。rad によって公開される API は、共有オブジェクトとして、それによって理解されるプロトコルとして、およびそれが通信に使用できるトランスポートとして提供されます。rad の複数インスタンスを同時に実行させることができ、それぞれが他と独立して機能し、異なるコンシューマに異なるサービスを提供し、異なるポートまたはインタフェース上で異なるタイプの接続を待機できます。rad は、コマンド行オプション、smf(7)、または両者の組み合わせから構成を取得します。
次のオプションをコマンド行で使用できます。
詳細デバッグ出力を出力します。
接続タイムアウトを秒単位で指定します。デフォルト値は 180 秒です。
モジュールをスキャンおよびロードするディレクトリのリストに moduledir を追加します。–m オプションを複数回使用すると、複数のモジュールディレクトリを追加できます。
ロードするモジュールのリストに module を追加します。module は、絶対パス名または現在の作業用ディレクトリの相対パス名にする必要があります。–M でロードされたモジュールは、–m を使用して見つかったモジュールよりも優先されます。–M オプションを複数回使用すると、複数のモジュールを追加できます。
トランスポート仕様 transpec によって指定されたトランスポートをインスタンス化します。トランスポート仕様の形式は次のとおりです。
transport[:option[=value][,option2[=value2]]...]
svc.startd(8) 開始メソッドとして動作します。このオプションには、次の効果があります。
–S オプションが指定されない場合、rad は、scf_myname() によって識別されるサービスからその構成を読み取ります (scf_handle_create(3SCF) を参照してください)。
rad は、smf_method(7) と互換性のある終了ステータスを使用します。
rad はデーモン化され、要求を処理する準備ができたら成功のみ返します。
fmri によって指定された SMF サービスインスタンスから構成を読み取ります。–s オプションが指定されない場合、実行中のサービスとのエンドポイント競合を回避するために、構成されているトランスポートはサービスから読み取られません。
コマンド行で指定されたモジュールディレクトリが SMF で構成されているモジュールディレクトリよりも先に検索されることで、コマンド行構成が SMF 構成をオーバーライドできます。
rad がその構成を smf から読み取るとき、全般的な構成は、application タイプの config と呼ばれるプロパティーグループから読み取られ、任意の数の各トランスポートについての構成は、xport_XYZ タイプの一連のプロパティーグループから読み取られます。ここで、XYZ はトランスポートタイプの名前で置換されます。特定のトランスポートタイプの複数のインスタンスを、対応するタイプの複数のプロパティーグループを作成することによって構成できます。トランスポートを構成するために使用されるプロパティーグループの名前は重要ではありません。
config プロパティーグループには、次のプロパティーが含まれています。
astring のリスト。モジュールをスキャンおよびロードするディレクトリ。
astring のリスト。ロードする特定モジュールのファイル名。
ブール値。true の場合は、rad は詳細なデバッグ出力を出力します。デフォルトは false です。
整数。認証中にクライアントからの個々の応答を待機する、秒単位の最大時間。デフォルトは 180 です。
svc:/system/rad SMF サービスの 2 つのインスタンスが /usr/lib/rad/rad を実行するように構成されます。
unix トランスポートを使用するように rad を構成し、次の AF_UNIX ソケットを使用します。
/system/volatile/rad/radsocket (getpeerucred(3C) - 認証済み接続の場合)。
/system/volatile/rad/radsocket-unauth (pam(3PAM) 認証済み接続の場合)
/system/volatile/rad/radsocket-http (getpeerucred(3C) - 認証済み接続の場合)。
/system/volatile/rad/radsocket-unauth-http (pam(3PAM) - 認証済み接続の場合)。
rad プロトコルの対話は最初の 2 つのソケットでサポートされ、HTTP プロトコルの対話は 2 番目の 2 つのソケットでサポートされています。
tls および gss トランスポートを使用するように rad を構成します。TLS トランスポートには、RAD RPC プロトコル用 (12302) と RAD HTTP/JSON プロトコル用 (6788) の両方のポートが備わっています。
各サービスは、その moduledir 設定内で次のディレクトリを使用して構成されます。
コンテンツ固有のモジュール
トランスポートモジュール
プロトコルモジュール
サイト固有モジュール
異なるプロトコルに対するサポートは、モジュール形式で提供されます。次のプロトコルのモジュールがデフォルトで提供されます。rad (RAD RPC プロトコル)、rad-http (HTTP/JSON)。rad インスタンスは複数のトランスポートをサポートでき、各トランスポートでは、サポートするプロトコルを proto オプションによって指定します。詳細は、「トランスポート」のセクションを参照してください。
異なるトランスポートタイプに対するサポートは、モジュール形式で提供されます。パイプ (pipe)、Generic Security Services API (gss)、TCP ソケット (tcp)、TLS ソケット (tls)、および UNIX ドメインソケット (unix) のトランスポートに対するモジュールが、システムに提供されています。各トランスポートタイプには、独自の構成プロパティーのセットがあります。トランスポートタイプのインスタンスのオプションは、SMF プロパティーグループ内のプロパティーを定義するか、または –t コマンド行オプションにサブオプションを指定することによって構成されます。
gss トランスポートは、GSS-API プロトコルを使用してクライアントとサーバーの間の通信をセキュリティー保護します。TCP ソケット上で GSS-API 接続を待機します。gss トランスポートには次のオプションがあります。
astring。このトランスポートインスタンスで使用するプロトコル。デフォルトは rad です。
整数。接続を待機するポートです。
ブール値。true の場合、rad はローカルマシンからの接続のみ待機します。デフォルトは true です。
astring。認証時に使用する pam サービス名。デフォルトは rad-gss です。後述の「PAM を使用した認証」のセクションを参照してください。
pipe トランスポートは、プロセスがパイプを使用して子の rad プロセスと通信するときに必要になるように、特定のファイル記述子からの読み取りおよび特定のファイル記述子への書き込みを行います。パイプトランスポートには次のオプションがあります。
astring。このトランスポートインスタンスで使用するプロトコル。デフォルトは rad です。
整数。読み取りおよび書き込みを行うファイル記述子。
ブール値。true の場合、rad は、パイプ経由の通信が終了するときに終了します。デフォルトは false です。
tcp トランスポートは、TCP ソケット上の平文接続を待機します。tcp トランスポートには次のオプションがあります。
astring。このトランスポートインスタンスで使用するプロトコル。デフォルトは rad です。
整数。接続を待機するポートです。
ブール値。true の場合、rad はローカルマシンからの接続のみ待機します。デフォルトは true です。
astring。認証時に使用する pam(3PAM) サービス名。デフォルトは rad-tcp です。後述の「PAM を使用した認証」のセクションを参照してください。
tls トランスポートは、TCP ソケットの TLS 接続を待機します。tls トランスポートには次のオプションがあります。
astring。このトランスポートインスタンスで使用するプロトコル。デフォルトは rad です。
整数。接続を待機するポートです。
ブール値。true の場合、rad はローカルマシンからの接続のみ待機します。デフォルトは true です。
astring。使用する PEM 形式の x509 証明書の場所。
astring。使用する PEM 形式の秘密鍵の場所。
astring。認証時に使用する pam(3PAM) サービス名。デフォルトは rad-tls です。後述の「PAM を使用した認証」のセクションを参照してください。
unix トランスポートは AF_UNIX ソケット上で接続を待機します。unix トランスポートには次のオプションがあります。
astring。このトランスポートインスタンスで使用するプロトコル。デフォルトは rad です。
astring。待機するパスです。
ブール値。true の場合、rad は getpeerucred(3C) を使用して、接続を自動認証しようとします。デフォルトは true です。
astring。認証時に使用する pam(3PAM) サービス名。デフォルトは rad-unix です。後述の「PAM を使用した認証」のセクションを参照してください。
rad がサービスとして実行され、使用中のトランスポートに getpeerucred(3C) が適用されない場合、pam(3PAM) を使用して接続を認証します。使用される PAM サービス名はトランスポートに依存します。
gss トランスポートによって接続するとき
tls トランスポートによって接続するとき
tcp トランスポートによって接続するとき
unix トランスポートを使用して接続するとき (かつ peercred が false の場合)
ほかのトランスポートを使用して接続するとき
まれに、管理者は使用される PAM サービス名をトランスポート単位でオーバーライドすることが必要な場合があります。たとえば、単一の rad インスタンスを提供する 2 つの rad TLS トランスポートがあって、一方がローカルの (信頼性の高い) ネットワーク上で待機し、もう一方がリモートの (信頼性の低い) ネットワーク上で待機する場合、異なる PAM 構成が必要になることがあります。
このような場合、管理者はトランスポート構成プロパティーとして使用するように PAM サービスの名前を指定できます (前述の「トランスポート」のセクションを参照してください)。
すべての PAM サービスと同様に、PAM は rad 用の PAM サービスに対応するエントリを、最初に /etc/pam.conf から探し、次に /etc/pam.d/service から探します。エントリが見つからない場合、PAM は「その他」のサービスに対応するエントリを /etc/pam.conf から探します。「その他」のエントリが見つからない場合、PAM は最後に /etc/pam.d/other からエントリを探します。
リモート rad インスタンス (svc:/system/rad:remote) が証明書を格納する場所。このファイルは、すべてのユーザーから読み取り可能です。
リモート rad インスタンス (svc:/system/rad:remote) が秘密鍵を格納する場所。
getpeerucred(3C) によって暗黙的に認証される接続をローカル rad インスタンス (svc:/system/rad:local) が受け入れる、AF_UNIX ソケット。
pam(3PAM) を使用して明示的に認証する必要がある接続をローカル rad インスタンス (svc:/system/rad:local) が受け入れる、AF_UNIX ソケット。
getpeerucred(3C) を使用して暗黙的に認証される HTTP プロトコル (rad-http) 接続をローカル rad インスタンス (svc:/system/rad:local) が受け入れる、AF_UNIX ソケット。
pam(3PAM) を使用して明示的に認証する必要がある HTTP プロトコル (rad-http) 接続をローカル rad インスタンス (svc:/system/rad:local) が受け入れる AF_UNIX ソケット。
属性についての詳細は、マニュアルページの attributes(7) を参照してください。
|
usermgr-1(3rad), radadrgen(1), pipe(2), getpeerucred(3C), pam(3PAM), scf_handle_create(3SCF), attributes(7), smf(7), smf_method(7), svc.startd(8)
Managing User Accounts and User Environments in Oracle Solaris 11.4
rad の 2 つのインスタンスがシステムによって提供され、デフォルトで有効になっています。
svc:/system/rad:local は次のパスにある AF_UNIX 接続を待機します。
/system/volatile/rad/rad socket
/system/volatile/rad/radsocket-unauth
/system/volatile/rad/radsocket-http
/system/volatile/rad/radsocket-unauth-http
最初と 3 番目の AF_UNIX ソケットは、getpeerucred(3C) を使用して接続中のプロセスを自動的に認証するのに対して、ほかの 2 つでは、接続中のプロセスを明示的に認証する必要があります。
svc:/system/rad:remote は、ポート 12302 (RAD RPC) および 6788 (HTTP/JSON) で TLS 接続を待機し、ポート 6789 で GSS-API (RAD RPC プロトコル) 接続を待機します。このサービスは、デフォルトで無効になっています。
これらのポートでは、すべてのクライアントを明示的に認証する必要があります。
デスクトップの管理ユーザーインタフェースなどのほかのシステムコンポーネントは、rad のローカルインスタンス (svc:/system/rad:local) に依存しています。