インパーソネーションの設定
目次
sm1252sp1jjp
目次
2
企業内でインパーソネーションを実行するには、いくつかのポリシー サーバ オブジェクトを設定する必要があります。これらのオブジェクトを組み合わせることで、ユーザが別のユーザを偽装するために必要な認証およびポリシーの権限付与が可能になります。インパーソネーションを実行するには、以下のオブジェクトが必要になります。
- インフラストラクチャ オブジェクト
- エージェントインパーソネーションには、Web エージェントと、それに関連付けられたポリシー サーバ エージェント オブジェクトが必要です。注: インパーソネーションを実行するには、1 つ以上の Web エージェントをインストールしている必要があります。
- 認証方式インパーソネーションには、インパーソネーション テンプレートに基づいた認証方式オブジェクトが必要です。
- ユーザ ディレクトリインパーソネーションには、偽装者と偽証対象者を含むユーザ ストアを指す、1 つ以上のユーザ ディレクトリ オブジェクトが必要です。2 人のユーザ(偽装者と偽装対象)は、属性値またはグループのメンバーで区別できなければなりません。
- ドメインインパーソネーションには、ユーザ ディレクトリ オブジェクトを含むポリシー ドメイン オブジェクトが必要です。
- ドメイン オブジェクト:
- レルム2 つ以上のレルム オブジェクトを設定する必要があります。1 つのレルムには偽装対象ユーザがアクセス可能なリソースを含めます。もう 1 つのレルムには、インパーソネーション セッションを初期化するために必要なリソースとルールを含めます。このレルムがインパーソネーション レルムになります。
- ルールインパーソネーションには、所定のアクセス制御ルールが必要です。また、インパーソネーションセッションを開始するには、ImpersonateStart イベントが設定されたルールを偽装者用に作成する必要があります。ImpersonateStartUser イベントが設定されたルールがないと、偽装対象のインパーソネーションは許可されません。
- ポリシーインパーソネーションには、リソースを保護するポリシーに加えて、インパーソネーション レルムのリソースへのアクセスを許可する追加のポリシーが必要です。これらのポリシーは、十分な権限を持つユーザを偽装者として認定して、偽装対象となる一連のユーザを限定します。
startimp.fcc を使用するエージェントの設定
インパーソネーション セッションを呼び出すには、サンプルの startimp.fcc などの FCC ファイルをインパーソネーション認証方式で指定する必要があり、Web エージェントで処理する必要があります。デフォルトでは、Web エージェントは .fcc ファイル拡張子を持つファイルを保護しません。
Web エージェントでインパーソネーション セッションを初期化できるようにするには、以下のいずれかの措置を取る必要があります。
- Web エージェントを、.fcc 拡張子が無視されないように設定する。
- インパーソネーションを呼び出すために使用する .fcc ファイルに、別の(無視されない)ファイル拡張子を使用する(たとえば、.ifcc)。
インパーソネーション認証方式の設定
インパーソネーションではインパーソネーション認証方式を使用する必要があります。この方式は、偽装者がインパーソネーションプロセスを開始するための手段として使用されます。インパーソネーション セッションを開始するには、偽装者は .fcc ファイルに直接アクセスします。このファイルは、インパーソネーション認証方式で保護されたリソースです。
.fcc ファイルによるインパーソネーションの有効化
インパーソネーションでは、適切な認証方式と .fcc ファイルを使用した認証プロセスが非常に重要になります。インパーソネーション認証方式の実行を可能にする .fcc ファイルは、Web エージェントと共にインストールされます。このファイルには、拡張子 .fcc が付いています。この拡張子が付いたファイルには、Web エージェントによる特殊な処理を適用できます。インパーソネーション認証方式は、HTML フォーム認証方式によく似ています。
インパーソネーションでは、インパーソネーション認証方式用の .fcc ファイルに直接アクセスして認証方式を呼び出すことができます。正しい認証方式は、.fcc ファイルのターゲット パラメータから呼び出されます。この値は、@target ディレクティブを使用するか、ターゲット(非表示のフォーム ポスト変数)を適切な Web ページに設定して、.fcc ファイルにハードコーディングできます。
注
: ターゲット リソースは、インパーソネーション認証方式で保護されているレルム内になければなりません。インパーソネーションでの .fcc ファイルの基本要件
@smpushsession=true 命令文にもインパーソネーション プロセスを開始する FCC を含める必要があります。この命令文は、セッション cookie に偽装対象ユーザのセッション仕様を保持するために、現在のセッション cookie の内容を別の cookie に保存するように Web エージェントに指示します。
認証が行われるためには、インパーソネーション認証方式を処理する Web エージェントに対して適切な認証情報を提示する必要があります。ユーザ名には、偽装対象ユーザの名前を指定します。パスワードは、偽装者のセッション仕様に設定します。必要に応じて、その他の属性を追加します。これには、フォームが送信された時点で cookie またはヘッダーの内容を命令文に代入する FCC の機能を利用します。FCC はこの機能を使用して、@password ディレクティブをユーザセッション仕様に設定し、必要に応じて他のデータを追加します。
インパーソネーション プロセスを終了するには、インパーソネーション認証方式で保護されたレルムに別の .fcc ファイルを追加します。この .fcc ファイルでは、インパーソネーションプロセスを開始する際に使用されたレルム内のリソースを指すように @target 命令文を設定します。また、認証プロセスを強制的に終了するように、@smredirect 命令文を同じリソースに設定します。最後に、@smpopsession=true 命令文を使用して元のセッション cookie を復元します。
インパーソネーションに使用される FCC 命令文
インパーソネーション用の .fcc ファイルを作成するときには、ファイルに次のような命令文を使用します。
- @logoutユーザをSingle Sign-Onからログアウトし、SMSESSION cookie を削除します。
- @smheadersHTTP 要求ヘッダを FCC ネームスペースに追加します。インパーソネーションの場合、このディレクティブはセッション仕様ヘッダ SMSERVERSESSIONSPEC(または SM_SERVERSESSIONSPEC、「 SMSERVERSESSIONSPEC および LegacyVariables に関する注意事項」を参照)の内容を FCC ネームスペースに渡します。これにより、セッション仕様をパスワードとして使用できるようになります。
- @smpushsessionユーザが、別のユーザを「偽装」した後に、元のセッションに戻ることができるようにします。この命令文は「真」に設定する必要があります。
- @smpopsession@smpushsession を使用した後、元のセッションに戻ります。この命令文は「真」に設定する必要があります。
- @smredirect要求を指定されたターゲットにリダイレクトします。
- @targetURL を処理した後のリダイレクト先を FCC に指示します。
- @passwordパスワードの内容をポリシー サーバに渡すかどうかを指定します。
- @smaltcredsカスタム認証方式で、4KB を超えるサイズのクレデンシャルの送信が可能になります。これは、@password ディレクティブを使用する場合と同じ方法で使用できます。クレデンシャルが、@smaltcreds を使用して FCC に送信されると、その値がログイン中に、バイト バッファとしてポリシー サーバに送信されます。これは、4K バイトに制限されているパスワード フィールドが使用されないようにするためです。@smaltcreds ディレクティブは、既存の作成済み認証方式では使用できませんが、カスタム認証には使用できます。カスタム認証方式の開発者は、ログイン中にエージェント API 経由で渡されるユーザ クレデンシャル構造の [lpszCertBinary]フィールドで @smaltcreds クレデンシャルを検索するように、認証方式ライブラリのコードを作成する必要があります。
- @usernameポリシー サーバに渡すユーザ名を指定します。
- % および $ 置換機能「%」機能と「$$」機能は、Perl 言語のスカラー変数と同じように、データ代入に使用されます。"%NAME%" は、POST 処理で "NAME" を "NAME" に関連付けられたデータに置換する際に使用します。"$$NAME$$" は GET 処理で "NAME" を "NAME" に関連付けられたデータに置換する際に使用します。
FCC を使用したセッション仕様の取得
Web エージェントは、要求ごとに一連のヘッダにセッション仕様を追加します。セッション仕様ヘッダは、いくつかの FCC ディレクティブを使用してパスワードとして送信できます。SMSERVERSESSIONSPEC ヘッダを FCC のネームスペースに含めるには、@smheaders ディレクティブを使用します。SMSERVERSESSIONSPEC ヘッダの内容をパスワードとして設定するには、@password ディレクティブを使用します。
SM_SERVERSESSIONSPEC/SMSERVERSESSION ヘッダーは、Web エージェント構成ファイルで DisableSessionVars がデフォルト値である「偽」に設定されている場合にのみ使用できます。
注
: LegacyVariables Web エージェント パラメータを「はい」に設定する場合は、ヘッダが SM_SERVERSESSIONSPEC である必要があります。LegacyVariables Web エージェント パラメータを「いいえ」に設定する場合は、ヘッダが SMSERVERSESSIONSPEC である必要があります。IIS 6.0 Web サーバ上の Web エージェントでは、LegacyVariables パラメータがサポートされていません。IIS 6.0 上の Web エージェントの正しいヘッダは常に SMSERVERSESSIONSPEC です。インパーソネーション用の .fcc ファイルの例
次の .fcc ファイルが偽装者によって直接呼び出されるか、インパーソネーション認証方式によって呼び出されると、インパーソネーションプロセスが開始されます。
@username=%USER% @smheaders=%SMSERVERSESSIONSPEC% @password=%SMSERVERSESSIONSPEC% @smpushsession=true <html> <head><title>Sample Impersonation Form</title></head> <body> <h3> Please enter your Impersonation Information</h3> <form method=post><table> <tr> <td>User Name:</td> <td><input type=text name=USER></td> </tr> <input type=hidden name=target value="server.example.com/app/impersonatee/successimp.htm"> <tr><td><input type=submit></td></tr> </table></form></body> </html>
偽装者によって次の .fcc ファイルが呼び出されると、元のセッションに戻ります。
@smpopsession=true @target=/impersonators/end.htm @smredirect=/impersonators/end.htm
FCCCompatMode の効果
従来の Web エージェントは、デフォルトで fcccompatmode を「はい」に設定しますが、フレームワーク Web エージェントは fcccompatmode を「いいえ」に設定します。モードが「はい」に設定されると、Web エージェントはインパーソネーション リクエストを処理できます。ただし、モードが「いいえ」に設定されている場合は、Web エージェントがインパーソネーション リクエストを処理するために、以下の 2 つの要件を満たす必要があります。
- Web エージェント設定パラメータ EncryptAgentName が False に設定されている必要があります。
- Web エージェント設定パラメータ AgentName が、インパーソネーションを開始する fcc ファイル内、または、インパーソネーション セッションの開始時にエージェントに送信されるクエリ データ内でコーディングされている必要があります。
インパーソネーション イベントの設定
インパーソネーション イベントはルール イベントです。権限を持つユーザが別のユーザを偽装するには、このイベントを設定してポリシーに含める必要があります。
インパーソネーションを可能にするには、次の各インパーソネーションイベントを少なくとも 1 つ設定する必要があります。
- ImpersonateStart適切なポリシーに追加すると、このイベントを含むルールによって、インパーソネーション セッションの開始が可能になります。
- ImpersonateStartUser適切なポリシーに追加することで、このイベントを含むルールによって、特定のユーザのインパーソネーションが可能になります。
インパーソネーション用のポリシーの設定
インパーソネーションが正常に機能するためには、いくつかのポリシーを設定する必要があります。
インパーソネーションを開始するリソースには、以下が必要です。
- アクセス制御ポリシー。偽装者と偽装対象の両方について設定します。たとえば、偽装者と偽装対象の両方について、GET アクセスルールが含まれるポリシーを設定します。
- ImpersonationStart ルールと偽装者を含むインパーソネーションポリシー。
- ImpersonationStartUser ルールと偽装対象を含むインパーソネーションポリシー。
偽装者がリソースにアクセスするためには、以下が必要です。
- インパーソネーション対象ユーザのアクセス制御ポリシー。たとえば、インパーソネーション対象ユーザの GET アクセス ルールを含むポリシーです。
- ImpersonationStart ルールと偽装者を含むインパーソネーションポリシー。
- ImpersonationStartUser ルールと偽装対象を含むインパーソネーションポリシー。
注
: 偽装者がアクセスできる各リソースには、ポリシーを設定する必要があります。以下の図は、リソースにアクセスする偽装者に必要な最低限のポリシーを示します。

複数 cookie ドメインのサポート
1 つのサイトが複数の Cookie ドメインで構成されている場合は、異なる Cookie ドメイン内にあるリソースの間を移動する間に、偽装者の識別情報が混乱する可能性があります。この問題を回避するには、現在の cookie ドメインを除く、すべての cookie ドメインの SMSESSION cookie をクリアする必要があります。これには、インパーソネーションの開始と終了に使用されるフォームを変更します。これらのフォームに、現在の cookie ドメインを除く、すべての cookie ドメインから SMSESSION cookie を削除するコードをサーバ側で呼び出す HTML またはスクリプトを追加します。
たとえば、Web エージェントが、yourcompany.com、subsidiaryA.com および subsidiaryB.com でインストールされたとします。インパーソネーションを実行する Web エージェントは yourcompany.com ドメインにあった可能性があります。この場合にインパーソネーションが正常に機能するためには、インパーソネーションを開始および終了する .fcc ファイルが、subsidiaryA.com と subsidiaryB.com でサーバ側の機能(おそらくは JSP ページ)を呼び出して、これらの cookie ドメインから SMSESSION cookie を削除する必要があります。