別のユーザとしての実行の保護

内容
capamsc141
内容
Privileged Access Manager
で SURROGATE クラスを有効にすると、別のユーザとしての実行の保護が有効になります。別のユーザとしての実行の保護では、特定のルールで変更が許可されている場合にのみ、あるユーザまたはグループが SID (セキュリティ識別子)を別の SID に変更できるように指定できます。この保護機能を使用すると、ユーザに権限がない場合、ユーザが別のユーザの識別子に変更できないようにします。
セキュリティ識別子とは、オペレーティング システムに対してユーザまたはグループを識別する数値です。
たとえば、どのユーザも管理者として実行できないように
Privileged Access Manager
のルールを定義するとします。ユーザ Tom がいくつかのタスクを管理者として実行するプログラムを実行します。この場合、Tom は管理者として実行する権限を持たないため、
Privileged Access Manager
はこのプログラムの実行を許可しません。
別のユーザとしての実行の保護は、以下の 2 つのモードで実行できます。
  • ユーザ モード インターセプト
  • カーネル モード インターセプト
ユーザ モード インターセプト
ユーザ モード インターセプトを有効にすると、
Privileged Access Manager
は Windows の RunAs ユーティリティから開始される、別のユーザとしての実行要求のみをインターセプトします。ユーザ モード インターセプトは、サポートされるすべての Windows バージョンで使用可能です。
別のユーザとしての実行の保護を有効にする(SURROGATE クラスを有効にする)場合、ユーザ モード インターセプトはデフォルトで有効になります。
ユーザ モード インターセプトには、以下のメリットがあります。
  • Privileged Access Manager
    は、別のユーザとしての実行を要求したユーザを識別します。
    RunAs ユーティリティを含む多くの Windows アプリケーションでは、NT AUTHORITY\SYSTEM ユーザが要求を実行したユーザの代理となり、別のユーザとしての実行要求を行います。ユーザ モード インターセプトでは、要求を行う NT AUTHORITY\SYSTEM ユーザではなく、ユーティリティを実行したユーザを識別します。たとえば、Tom が管理者として実行するために RunAs を実行すると、NT AUTHORITY\SYSTEM ユーザが別のユーザとしての実行要求を行い、
    Privileged Access Manager
    は要求を行っているユーザが Tom であることを識別します。
  • ユーザが RunAs ユーティリティを実行した場合にのみ、
    Privileged Access Manager
    は別のユーザとしての実行要求をインターセプトします。
    このプロセスによって、パフォーマンスに及ぼす影響を最小限に抑えます。
ユーザ モード インターセプトのデメリットは、
Privileged Access Manager
がすべての Windows プロセスから発生する、別のユーザとしての実行要求をすべてインターセプトするとは限らないという点です。
カーネル モード インターセプト
カーネル モード インターセプトを有効にすると、
Privileged Access Manager
はすべての Windows プロセスから、別のユーザとしての実行要求をすべてインターセプトします。カーネル モード インターセプトは、サポートされるすべての Windows バージョンで使用可能というわけではありません。
カーネル モード インターセプトが使用できない Windows バージョンの詳細については、「
リリース ノート
」を参照してください。
カーネル モード インターセプトのメリットは、Windows コンピュータで実行される別のユーザとしての実行要求をすべて保護できるという点です。
カーネル モード インターセプトには、以下のデメリットがあります。
  • NT AUTHORITY\SYSTEM ユーザが、要求を実行したユーザの代理となって別のユーザとしての実行要求を行うと、
    Privileged Access Manager
    は実際に要求を行ったユーザを識別しません。
    たとえば、RunAs、FTP および telnet 要求は、すべて NT AUTHORITY\SYSTEM ユーザによって実行されます。Tom が管理者として実行するために RunAs を実行すると、NT AUTHORITY\SYSTEM ユーザが別のユーザとしての実行要求を行い、
    Privileged Access Manager
    は要求を行っているユーザが NT AUTHORITY\SYSTEM であると識別します。
  • Privileged Access Manager
    は、OS が通常操作の一部として行う別のユーザとしての実行要求をすべてインターセプトするため、パフォーマンスに影響を及ぼす場合があります。
    Privileged Access Manager
    は別のユーザとしての実行要求をキャッシュしますが、認証エンジンではその要求に関連した多くのイベントを認証する必要があります。
Privileged Access Manager
が別のユーザとしての実行要求に応答する方法
SURROGATE クラスの各レコードは、特定のユーザを別のユーザとしての実行から保護するための制限を定義します。
Privileged Access Manager
では、別のユーザとしての実行要求を、権限のあるユーザのみがアクセスできる抽象オブジェクトとして扱います。SURROGATE クラスのレコードは、代理(別のユーザとしての実行)の保護が適用される各ユーザまたはグループを表します。
あるユーザまたはグループが、別のユーザまたはグループとして実行することを要求した場合、
Privileged Access Manager
は以下の手順を実行します。
  1. 要求を実行したユーザまたはグループの SURROGATE レコードのアクセス権限を確認します。SURROGATE レコードによっては、以下の
    いずれか
    が発生します。
    • 要求を実行したユーザまたはグループの SURROGATE レコードが、別のユーザとして実行することを許可または拒否します。
      Privileged Access Manager
      は、別のユーザとしての実行要求を許可または拒否する際に、SURROGATE レコードのアクセス権限を使用します。
    • ユーザまたはグループには、SURROGATE レコードはありません。
      プロセスを手順 2 に進めます。
  2. ユーザまたはグループのデフォルト SURROGATE レコードのアクセス権限を以下のように確認します。
    • 要求がユーザから実行された場合、
      Privileged Access Manager
      はそのユーザに USER._default SURROGATE レコードに定義されているアクセス タイプを付与します。
    • 要求がグループから実行された場合、
      Privileged Access Manager
      はそのグループに GROUP._default SURROGATE レコードに定義されているアクセス タイプを付与します。
    USER._default、GROUP._default、および _default SURROGATE のデフォルト アクセス権限は読み取り権限です。この場合、ユーザまたはグループの SURROGATE レコードで別のユーザとしての実行要求が拒否されていない限り、
    Privileged Access Manager
    は別のユーザまたはグループとしての実行要求をすべて許可することを意味します。この動作を変更するには、USER._default および GROUP._default レコードのアクセス権限を変更してください。また、_default SURROGATE レコードのアクセス権限を変更することによって、ユーザとグループに同じデフォルト設定を適用することもできます。
別のユーザとしての実行の有効化
別のユーザとしての実行を使用すると、特定のユーザおよびグループに対して、別のユーザとしての実行要求を許可または拒否するルールを設定できます。
別のユーザとしての実行を有効化する方法
  1. (オプション)カーネル モード インターセプトを有効にする手順を以下に示します。
    1. Privileged Access Manager
      を停止します。
    2. 以下のレジストリ エントリの値を 1 に変更します。
      HKEY_LOCAL_MACHINE\SOFTWARE\ComputerAssociates\AccessControl\ SeOSD\SurrogateInterceptionMode
    3. Privileged Access Manager
      を再起動します。
    ユーザ モード インターセプトはデフォルトで有効です。
  2. selang コマンド プロンプト ウィンドウを開きます。
  3. SURROGATE クラスを有効にします。
    setoptions class+(SURROGATE)
  4. Privileged Access Manager
    に実装する SURROGATE レコードの selang ルールを定義します。
  5. (カーネル モード インターセプトのみ)実際のユーザの代理として別のユーザとしての実行要求を行う、SYSTEM ユーザのルールを定義します。
    auth SURROGATE USER.Administrator uid("NT AUTHORITY\SYSTEM") acc(R)
    Windows では、多くのユーティリティおよびサービス(例:RunAS など)を実行した元のユーザを、ユーティリティを実行したユーザではなく、ユーザ 「NT AUTHORITY\SYSTEM」として識別します。このユーティリティを実行したユーザが、別のユーザとして実行することを許可するように SYSTEM ユーザのルールを定義します。
例: 別のユーザとしての実行要求を許可する
以下の selang ルールでは、データベース内のレコードで別のユーザとしての実行を明示的に拒否しない限り、どのユーザでも別のユーザとして実行することができます。
editres SURROGATE _default defaccess(READ)
例: 特定のユーザに対して、別のユーザとしての実行を拒否する
以下の selang ルールでは、データベース内のレコードで別のユーザとしての実行を明示的に許可しない限り、どのユーザも別のユーザとして実行することはできません。
newres SURROGATE USER.Administrator defaccess(NONE)
例: グループに対して、別のユーザとしての実行を許可する
以下の例では、Administrators グループに属するメンバが Administrator として実行することを許可します。
authorize SURROGATE USER.Administrator gid("Administrators")