SUDO レコードの定義(タスクの委任)
SUDO クラスのレコードには、コマンド スクリプトが格納されています。ユーザは、借用した権限でそのスクリプトを実行できます。SUDO レコードは、スクリプトを実行する sesudo コマンドと同様に、権限を借用する機能を制御します。
capamsc141
SUDO クラスのレコードには、コマンド スクリプトが格納されています。ユーザは、借用した権限でそのスクリプトを実行できます。SUDO レコードは、スクリプトを実行する sesudo コマンドと同様に、権限を借用する機能を制御します。
対話型の Windows アプリケーション用の SUDO レコードを作成する場合、SUDO レコード用の対話型のフラグを設定してください。対話型のフラグを設定しない場合、アプリケーションはバックグラウンドで実行されるため、ユーザは操作できません。詳細については、「トラブルシューティング ガイド」を参照してください。
SUDO レコードでは、comment プロパティを特別な目的に使用します。このプロパティは多くの場合に data プロパティとも呼ばれます。
comment プロパティの値は、コマンド スクリプトです。禁止(prohibited)または許可(permitted)するスクリプト パラメータ値が必要に応じて追加される場合もあります。comment プロパティの値全体は、一重引用符で囲む必要があります。トロイの木馬の侵入を防ぐために、実行可能ファイルは完全パス名で参照してください。
comment プロパティの形式は以下のとおりです。
comment('cmd[;[prohibited-values][;permitted-values]] ')
prohibited 値および permitted 値のリストは省略できるため、comment プロパティの値は以下のように簡略化することもできます。
newres SUDO NET comment('net use')
このコマンドに指定されている簡略化された値は、sesudoNET コマンドで「net use」コマンドを実行することを表します。特定のスクリプト パラメータ値が禁止されていないため、すべての値が許可されます。
ワイルドカードと強力な変数を使用すると、prohibited パラメータおよび permitted パラメータを柔軟に指定できるようになります。使用できるワイルドカードは、Windows の標準的なワイルドカードです。禁止するパラメータおよび許可するパラメータには、以下の変数を指定することもできます。
変数 | 説明 |
$A | 英字 |
$G | 既存の CA Privileged Access Manager グループ名 |
$H | (UNIX のみ)ユーザのホーム ディレクトリで始まるパラメータ |
$N | 数値 |
$O | sesudo を実行するユーザの CA Privileged Access Manager での名前 |
$U | 既存の CA Privileged Access Manager ユーザ名 |
$e | 空のエントリ。 このエントリを使用して、ルールに対してパラメータが指定されていない SUDO コマンドを指定します。 |
$f | 既存のファイル名 |
$g | 既存の Windows グループ名 |
$h | 既存のホスト名 |
$r | Windows 読み取りアクセス権がある既存のファイル |
$u | 既存の Windows ユーザ名 |
$w | Windows 書き込みアクセス権がある既存のファイル |
$x | Windows 実行アクセス権がある既存のファイル |
prohibited パラメータ値のリストをスクリプトに追加する場合は、以下のようにします。
- スクリプトと prohibited パラメータの値をセミコロンで区切り、全体を一重引用符で囲みます。たとえば、ユーザに対して -start の使用は禁止するが、それ以外のすべてのパラメータの使用は許可する場合、以下のコマンドを入力します。newres SUDO scriptname comment('cmd;-start')ここで、cmdはユーザのスクリプトを表します。また、パラメータ値を許可せず、すべてのパラメータをデフォルトに設定する場合は、SUDO レコードを以下のように定義します。newres SUDO scriptname comment('cmd;*')
- 1 つのスクリプト パラメータに対して複数の prohibited 値を指定する場合は、スペース文字を区切り記号として使用します。たとえば、ユーザに対して -start および -stop の使用は禁止するが、それ以外のすべてのパラメータの使用は許可する場合は、以下のコマンドを入力します。newres SUDO scriptname comment('cmd;-start -stop')
- 複数のスクリプト パラメータに対して prohibited 値を指定する場合は、パイプ(|)を区切り記号として使用して、それぞれの prohibited 値セットの間を区切ります。たとえば、スクリプトの最初のパラメータで -start および -stop を使用することを禁止し、2 番目のパラメータで既存の Windows ユーザ名(前出の変数の表を参照)を使用することを禁止する場合は、以下のコマンドを入力します。newres SUDO scriptname comment('cmd;-start -stop | $u')指定したパラメータよりスクリプトのパラメータが多い場合は、指定した最後の prohibited パラメータのセットが、残りすべてのパラメータに適用されます。
permitted パラメータ値のリストをスクリプトに追加する場合は、以下の操作を行います。
- sesudo ユーティリティがパラメータ値について以下の項目をチェックします。
- 対応するprohibited値のいずれとも一致しないこと。
- 対応する少なくとも 1 つのpermitted値と一致すること。
つまり、prohibited リストにあるパラメータ値は、permitted リストにも指定されていても、permitted にはなりません。permitted値のリストとprohibited値のリストをセミコロンで区切り、全体を一重引用符で囲みます。prohibited 値のリストを指定しない場合でも、セミコロンは必要です。セミコロンがないと、permitted 値として指定した値が、prohibited 値として処理されます。たとえば、スクリプトのパラメータ値として値 NAME のみを許可する場合は、以下のコマンドを入力します。newres SUDO scriptname comment('cmd;;NAME') - 他のリストの指定も同様に行います。
- 1 つのスクリプト パラメータに対して複数の permitted 値を指定する場合は、スペース文字を区切り記号として使用します。
- 複数のスクリプト パラメータに permitted 値を指定する場合は、パイプ(|)を区切り記号として使用して、それぞれの permitted の値セットの間を区切ります。
たとえば、2 つのパラメータがあるとします。最初のパラメータには Windows のユーザ名にしてはならない数字を指定し、2 番目のパラメータには Windows のグループ名にしてはならない英字を指定する必要がある場合は、以下のコマンドを入力します。newres SUDO scriptname comment('cmd;$u | $g ;$N | $A')スクリプトのパラメータが指定したパラメータより多い場合は、指定した最後の permitted パラメータのセットが、残りすべてのパラメータに適用されます。
したがって、comment プロパティ全体の形式は、スクリプト、パラメータごとの prohibited 値、パラメータごとの permitted 値の順になります。
comment('cmd; \ param1_prohib1 param1_prohib2 ... param1_prohibN | \ param2_prohib1 param2_prohib2 ... param2_prohibN | \ ... paramN_prohib1 paramN_prohib2 ... paramN_prohibN ; \ param1_permit1 param1_permit2 ... param1_permitN | \ param2_permit1 param2_permit2 ... param2_permitN | ... paramN_permit1 paramN_permit2 ... paramN_permitN')
sesudo ユーティリティでは、ユーザが入力した各パラメータを以下の方法でチェックします。
- パラメータ N と permitted パラメータ N が一致するかどうかをテストします(pemitted パラメータ N が存在しない場合、最後の permitted パラメータが使用されます)。
- パラメータ N と prohibited パラメータ N が一致するかどうかをテストします(prohibited パラメータ N が存在しない場合、最後の prohibited パラメータが使用されます)。
すべてのパラメータが permitted パラメータと一致し、prohibited パラメータと一致するパラメータが存在しない場合、sesudo はコマンドを実行します。
例: ユーザに net send の実行を許可するタスクの委任をセットアップする
以下の手順では、ユーザ Takashi に net send コマンドの実行を許可して、net start コマンドの実行を許可しない方法を示します。
- CA Privileged Access Managerエンドポイント管理で、[ユーザ]タブをクリックし、次に[権限および委任]サブタブをクリックします。[権限および委任]メニュー オプションが左側に表示されます。
- [タスク委任]をクリックします。[タスク委任]ページが表示されます。
- [タスクの作成]をクリックします。[タスクの作成]ページが表示されます。
- 以下のようにダイアログのフィールドに入力します。
フィールド | 値 |
名前 | NET |
データ | net;start;send * |
Owner | nobody |
デフォルト アクセス | なし(オプションの選択なし) |
許可されたアクセサ | ユーザ: Takashi 許可: 実行 |
- [保存]をクリックします。新しいタスクの委任(SUDO)レコードが作成されます。
- タスクの委任ルールを確認します。
- Takashi でログインします。
- コマンド プロンプトを開き、以下のコマンドを実行します。
sesudo -do NET start sesudo: you are not allowed to use 'start' as parameter number 1. sesudo: you are not allowed to use 'start' as parameter number 1. sesudo -do NET send comp message sesudo -do NET send comp message以下のメッセージが表示されます。net startは prohibited 値として定義されたので、実行されません。 - 次の値を実行します。NET send
- コマンドが実行されます。
例: 対話式アプリケーションを使用して、権限を必要とする操作を実行する権限をユーザに付与する
以下の例で示すように、ユーザは任意のスナップイン MSC モジュールを使用して、高い権限を必要とする操作を実行できます。
- CA Privileged Access Managerエンドポイント管理で、[ユーザ]タブをクリックし、次に[権限および委任]サブタブをクリックします。[権限および委任]メニュー オプションが左側に表示されます。
- [タスク委任]をクリックします。[タスク委任]ページが表示されます。
- [タスクの作成]をクリックします。[タスクの作成]ページが表示されます。
- 以下のようにダイアログのフィールドに入力します。
フィールド | 値 |
名前 | サービス |
データ | c:\winnt\system32\mmc.exe |
Owner | nobody |
オプション | 対話式(オプションの選択あり) |
デフォルト アクセス | なし(オプションの選択なし) |
許可されたアクセサ | ユーザ: Tori 許可: 実行 |
- [保存]をクリックします。新しいタスクの委任(SUDO)レコードが作成されます。この[対話式]オプションは、サービスが開始されている状態のときに、ログインしたすべてのユーザが使用できるデスクトップ ユーザ インターフェースを提供します。このインターフェースは、サービスが LocalSystem アカウントとして実行されている場合にのみ使用可能です。
- タスクの委任ルールを確認します。
- Tori でログインします。
- コマンド プロンプトを開き、以下のコマンドを実行します。
sesudo -do services- mmc.exewill を起動します。