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 ユーティリティでは、ユーザが入力した各パラメータを以下の方法でチェックします。
  1. パラメータ N と permitted パラメータ N が一致するかどうかをテストします(pemitted パラメータ N が存在しない場合、最後の permitted パラメータが使用されます)。
  2. パラメータ N と prohibited パラメータ N が一致するかどうかをテストします(prohibited パラメータ N が存在しない場合、最後の prohibited パラメータが使用されます)。
すべてのパラメータが permitted パラメータと一致し、prohibited パラメータと一致するパラメータが存在しない場合、sesudo はコマンドを実行します。
例: ユーザに net send の実行を許可するタスクの委任をセットアップする
以下の手順では、ユーザ Takashi に net send コマンドの実行を許可して、net start コマンドの実行を許可しない方法を示します。
  1. CA Privileged Access Manager
    エンドポイント管理で、[ユーザ]タブをクリックし、次に[権限および委任]サブタブをクリックします。
    [権限および委任]メニュー オプションが左側に表示されます。
  2. [タスク委任]をクリックします。
    [タスク委任]ページが表示されます。
  3. [タスクの作成]をクリックします。
    [タスクの作成]ページが表示されます。
  4. 以下のようにダイアログのフィールドに入力します。
フィールド
名前
NET
データ
net;start;send *
Owner
nobody
デフォルト アクセス
なし(オプションの選択なし)
許可されたアクセサ
ユーザ: Takashi
許可: 実行
      1. [保存]をクリックします。
        新しいタスクの委任(SUDO)レコードが作成されます。
      2. タスクの委任ルールを確認します。
        1. Takashi でログインします。
        2. コマンド プロンプトを開き、以下のコマンドを実行します。
        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 値として定義されたので、実行されません。
      3. 次の値を実行します。NET send
      4. コマンドが実行されます。
例: 対話式アプリケーションを使用して、権限を必要とする操作を実行する権限をユーザに付与する
以下の例で示すように、ユーザは任意のスナップイン MSC モジュールを使用して、高い権限を必要とする操作を実行できます。
  1. CA Privileged Access Manager
    エンドポイント管理で、[ユーザ]タブをクリックし、次に[権限および委任]サブタブをクリックします。
    [権限および委任]メニュー オプションが左側に表示されます。
  2. [タスク委任]をクリックします。
    [タスク委任]ページが表示されます。
  3. [タスクの作成]をクリックします。
    [タスクの作成]ページが表示されます。
  4. 以下のようにダイアログのフィールドに入力します。
フィールド
名前
サービス
データ
c:\winnt\system32\mmc.exe
Owner
nobody
オプション
対話式(オプションの選択あり)
デフォルト アクセス
なし(オプションの選択なし)
許可されたアクセサ
ユーザ: Tori
許可: 実行
  1. [保存]をクリックします。
    新しいタスクの委任(SUDO)レコードが作成されます。この[対話式]オプションは、サービスが開始されている状態のときに、ログインしたすべてのユーザが使用できるデスクトップ ユーザ インターフェースを提供します。このインターフェースは、サービスが LocalSystem アカウントとして実行されている場合にのみ使用可能です。
  2. タスクの委任ルールを確認します。
    1. Tori でログインします。
    2. コマンド プロンプトを開き、以下のコマンドを実行します。
    sesudo -do services
    1. mmc.exewill を起動します。