CLI によるポリシー管理操作

CLI では、以下のポリシー管理操作がサポートされています。
casso11jp
CLI では、以下のポリシー管理操作がサポートされています。
セッションの初期化
セッションを作成すると、多くのセッション初期化フラグがそのデフォルト値に設定されます。以下の表は、PolicyMgtAPI オブジェクト内の初期化メソッドおよびそれらのデフォルト値の一覧です。
 
Method
デフォルト値
Description
DisableAudit()
0
(監査は有効)
有効化または無効化
認証、認可、管理アクティビティなど、ユーザ アクティビティの監査。(管理アクティビティには、ポリシー ストアへの変更が含まれます)。
ユーザ セッションの監視。
DisableManagementWatchDog()
0
(ウォッチドッグは有効)
CA Single Sign-on
管理ウォッチドッグを有効または無効にします。ウォッチドッグは内部的に使用され無効にはしません。
DisableValidation()
0
(検証は有効)
ポリシー ストア オブジェクトの検証を有効または無効にします。
LoadAgentTypeDictionary()
0
(事前ロード ディクショナリは無効)
エージェント タイプ辞書の事前ロードを有効または無効にします。
PreLoadCache()
0
(事前ロード キャッシュは無効)
CA Single Sign-on
キャッシュの事前ロードを有効または無効にします。
: CreateSession() の後にコールした場合、これらのメソッドは効果を示しません。
例: セッションの初期化操作
以下の例は、デフォルトでは有効にされないセッション初期化操作をすべて有効にします。セッションが正しく初期化されると、スクリプトは以下のように初期化フラグを表示します。
use Netegrity::PolicyMgtAPI;
 
$username = "adminid";
$password = "adminpwd";
 
print "\nInitializing and connecting to PolicyMgtAPI...\n";
$policyapi = Netegrity::PolicyMgtAPI->New();
$policyapi->PreLoadCache(1);
$policyapi->LoadAgentTypeDictionary(1);
 
die "ERROR: Couldn't create session\n" unless ($session != undef);
 
print "Initialization settings:\n";
print "  Preload cache flag: ".$policyapi->PreLoadCache()."\n";
print "  Disable validation flag: " . 
                     $policyapi->DisableValidation()."\n";
print "  Load agent type dictionary flag: " . 
                     $policyapi->LoadAgentTypeDictionary()."\n";
print "  Disable audit flag: ".$policyapi->DisableAudit()."\n";
print "  Disable watchdog flag: " . 
                     $policyapi->DisableManagementWatchDog()."\n";
システム オブジェクトの作成および管理
ポリシー サーバへの接続を初期化するときに、セッション オブジェクト(PolicyMgtSession)を作成します。[
CA Single Sign-on
管理]ウィンドウの[システム]タブにリスト表示される、
システムレベルオブジェクト
を作成、取得、削除するためにセッション オブジェクトを使用します。
システム オブジェクト(グローバル オブジェクトとも呼ばれる)の範囲はグローバルです。つまり、それらはポリシー ストア内のすべてのドメインにわたって表示できます。セッション オブジェクトから作成できるシステム オブジェクトには以下のものが含まれます。
  • 管理者
  • エージェントおよびエージェント タイプ
  • 認証方式
  • 認証および許可マップ
  • ドメイン
  • ODBC クエリ方式
  • パスワード ポリシー
  • 登録方式
  • ユーザ ディレクトリ
エージェント オブジェクトの作成
エージェント オブジェクトはグローバル範囲を持つシステム オブジェクトです。以下の例は、セッション オブジェクトを使用してエージェントを作成および設定し、次に、ポリシー ストアで設定されているエージェント名をすべて出力します。
use Netegrity::PolicyMgtAPI;
 
$policyapi = Netegrity::PolicyMgtAPI->New();
$session = $policyapi->CreateSession("adminid", "adminpwd");
 
$ip="127.0.0.1";
$secret="oursecret";
 
$agentType=$session->GetAgentType("Web Agent");
$session->CreateAgent("agent1",$agentType,"",$ip,$secret);
 
@agents=$session->GetAllAgents();
foreach $agent(@agents) {
   print $agent->Name()."\n";
}
: この例では v4.x エージェントを作成します。v5.x または v6.x エージェントを作成するには、共有秘密キーを指定しません。
オブジェクト プロパティの表示および変更
オブジェクトを作成した後(またはオブジェクトを管理 UI で作成した後)は、オブジェクトの get および set メソッドをコールして、作成されたオブジェクトの個々のプロパティを表示および変更できます。
通常の場合、オブジェクトの get および set メソッド名は、取得または変更されるプロパティの名前を表します。また、メソッドは単一のオプションの引数をとります。引数を指定する場合は、オブジェクトのプロパティを設定します。引数を省略すると、プロパティ値が変更されずに取得されます。メソッドは、新規または既存のプロパティ値を返します。
以下の例では、それぞれのユーザ ディレクトリがその Maximum Results プロパティに関してチェックされます。つまり、ディレクトリ検索の後に返される検索結果の最大数を指定する値です。取得された数が 25 でない場合、スクリプトは以下のようにプロパティを 25 に設定します。
use Netegrity::PolicyMgtAPI;
 
$policyapi = Netegrity::PolicyMgtAPI->New();
$session = $policyapi->CreateSession("adminid", "adminpwd");
 
$max="25";
 
@userdirs=$session->GetAllUserDirs();
foreach $userdir(@userdirs) {
   print "\nMax results for directory " . $userdir->Name()."\n";
   if ($userdir->MaxResults() != $max) {
      print "  Updating from " . $userdir->MaxResults()." to " .
                                                      $max . "\n";
      $userdir->MaxResults($max);
   }
   else {
      print "  Max results are correct.\n";
   }
}
ドメイン範囲を持つオブジェクト
作成できるシステム オブジェクトの 1 つはドメイン オブジェクト(PolicyMgtDomain)です。ドメイン オブジェクト自体にはグローバル範囲がありますが、ドメイン オブジェクトを通じて作成し取得するオブジェクトには
ドメイン範囲
があります。つまり、それらはドメイン内でのみ表示でき、ドメイン間では共有できません。
ドメイン オブジェクトは[
CA Single Sign-on
管理]ウィンドウの[ドメイン]タブにリスト表示されます。
ドメイン範囲を持つオブジェクトには以下のものがあります。
  • ポリシー
  • レルム
  • レスポンスとレスポンス属性
  • ルール
  • ユーザ ポリシー
1 つのオブジェクトを取得して別のオブジェクトを作成
オブジェクトを操作する前に、より高いレベルのオブジェクトを取得することが必要な場合があります。つまり、ドメイン範囲があるオブジェクトの場合です。
ドメイン範囲を持つポリシーを作成する例を以下に示します。ポリシー オブジェクトを作成する前に、ポリシーを配置するドメイン オブジェクトを取得することに注意してください。
use Netegrity::PolicyMgtAPI;
 
$policyapi = Netegrity::PolicyMgtAPI->New();
$session = $policyapi->CreateSession("adminid", "adminpwd");
$domain=$session->GetDomain("engineering");
$policy=$domain->CreatePolicy("Payroll Policy");
if($policy == undef) {
   print "Couldn't create the policy.\n";
}
else {
   print "Successfully created policy " . $policy->Name() . ".\n";
}
オブジェクトのプロパティの管理
グローバル範囲を持つオブジェクトの場合と同じように、オブジェクトの get および set メソッドを使用して、ドメイン範囲を持つオブジェクトのプロパティを表示および設定します。
オブジェクトのプロパティの値は、文字列または数値ではなく別のオブジェクトである場合があります。たとえば、ポリシーでは、ポリシーにルールおよびユーザを追加し、ポリシー内のルール用のレスポンスを設定します。これらの値はすべてオブジェクトとして提供されます。
例: ポリシーへのオブジェクトの追加
以下の例で、ポリシーはユーザ、ルールおよびレスポンスと共に設定されます。
use Netegrity::PolicyMgtAPI;
 
$policyapi = Netegrity::PolicyMgtAPI->New();
$session = $policyapi->CreateSession("adminid", "adminpwd");
$domain=$session->GetDomain("engineering");
$policy=$domain->GetPolicy("Payroll Policy");
 
# Add a user to the policy
$userdir=$session->GetUserDir("Acme North Directory");
 
@users=$userdir->LookupEntry("uid=ppaycheck");
foreach $user(@users) {
   if ($user->GetPath()=="uid=ppaycheck,ou=HR,o=security.com") {
      $userResult=$policy->AddUser($user);
      $thisUser=$user;
   }
}
if ($userResult != 0) {
   print "Error adding user to policy.\n";
}
 
# Add a rule to the policy
$realm=$domain->GetRealm("HR");
$rule=$realm->GetRule("Payroll Rule");
$ruleResult=$policy->AddRule($rule);
if ($ruleResult != 0) {
   print "Error adding rule to policy.\n";
}
else
{
   # Set a response for the rule
   $response=$domain->GetResponse("Welcome to Payroll");
   $respResult=$policy->SetResponse($rule,$response);
   if ($respResult != 0) {
      print "Error adding response to policy.\n"
   }
}
 
print "\nAdded these objects to the policy:\n";
print "  User DN: ".$thisUser->GetPath()."\n" unless $userResult!=0;
print "  Rule: ".$rule->Name()."\n" unless $ruleResult!=0;
print "  Response: ".$response->Name()."\n" unless $respResult!=0;
ドメイン範囲またはグローバル範囲を持つオブジェクト
いくつかのオブジェクトはドメイン範囲またはグローバル範囲のどちらでも作成できます。これらのオブジェクトには以下があります。
  • PolicyMgtPolicy
    • ドメイン: PolicyMgtDomain->CreatePolicy()
    • グローバル: PolicyMgtSession->CreateGlobalPolicy()
  • PolicyMgtResponse
    • ドメイン: PolicyMgtDomain->CreateResponse()
    • グローバル: PolicyMgtSession->CreateGlobalResponse()
  • PolicyMgtRule
    • ドメイン: PolicyMgtRealm->CreateRule()
    • グローバル: PolicyMgtSession->CreateGlobalRule()
  • PolicyMgtGroup
    • ドメイン: PolicyMgtDomain->CreateResponseGroup()
    • ドメイン: PolicyMgtDomain->CreateRuleGroup()
    • グローバル: PolicyMgtSession->CreateAgentGroup()
以下のテーブルでは、ドメイン範囲およびグローバル範囲があるときのポリシー、レスポンスおよびルール オブジェクトを比較します。
 
オブジェクト
ドメイン範囲
グローバル範囲
ポリシー
特定のユーザまたはグループのユーザにバインドされます。
すべてのユーザにバインドされる。
ポリシーに対して個々のユーザを含めたり除外したりできます。
ユーザを個別に含めたり除外したりはできません。
ドメイン固有のルールとルール グループ、ドメイン固有のレスポンスとレスポンス グループ、およびグローバル レスポンスを使用します。
グローバル ルールおよびグローバル レスポンスのみを使用します。
変数式を使用できます。
変数式を使用できません。
レスポンス
ドメイン固有のポリシーで使用されます。
グローバル固有またはドメイン固有のポリシーで使用されます。
ドメイン固有レスポンス グループのメンバにできます。
ドメイン固有レスポンス グループのメンバにできます。グローバル レスポンス グループはサポートされていません。
変数ベースの属性を使用できる。
変数ベースの属性は使用できない。
ルール
ドメイン固有のポリシーで使用されます。
グローバル ポリシーで使用されます。
レルムを介してエージェントと関連付けられます。
特定のエージェントまたはエージェント グループと関連付けられます。エージェントまたはエージェント グループは、グローバル ルールの作成時に指定されます。
リソース フィルタは特定のレルム(ルール フィルタとレルム フィルタ)にバインドされます。
リソース フィルタは絶対フィルタです(つまり、レルムにバインドされません)。
特定のドメイン内で定義されたリソースの場合のみ起動します。
グローバル ポリシー処理が有効なドメイン内で定義されているリソースの場合に起動します。
アクセス ルールまたはイベント ルールとして定義できます。
イベント ルールとしてのみ定義できます(認証および許可イベント)。
ドメイン固有ルール グループのメンバにできます。
ドメイン固有ルール グループのメンバにできます。グローバル ルール グループはサポートされていません。
すべて
特定のドメインのコンテキストでドメイン管理者によって作成されます。
システム レベルでシステム管理者によって作成されます。
許可変数
許可変数は、許可リクエスト中に値に解決される動的なオブジェクトです。変数は、ポリシーまたはレスポンスに対して定義されたアクティブな式の中で使用されます。
許可変数は以下のように使用されます:
  • ポリシーの場合、変数は許可の制約として使用されます。ユーザがリソースへのアクセスを要求し、そのリソースには 1 つ以上の変数が含まれるアクティブな式が含まれる場合、変数はユーザに関連する値に解決されます。その後、値は評価され、ユーザを許可すべきかどうかに関する決定に使用されます。
    たとえば、銀行のクレジット カード申込用紙を保護するポリシーに、Credit Rating 変数および Salary 変数を使用したアクティブな式が含まれると仮定します。ユーザがフォームにアクセスしようとすると、そのユーザの信用格付けと給料がこれらの変数の最小値に一致するかそれ以上の場合にのみ、ユーザが許可されます。
  • レスポンスでは、変数は戻り値として使用されます。たとえば、レスポンス属性はリモート Web サービスから取得されたトランザクションのトラッキング番号を返すように設定できます。
許可変数を使用するには、
CA Single Sign-on
オプション パックをインストールする必要があります。
特定の変数タイプに応じた変数の設定
PolicyMgtDomain オブジェクト用の CreateVariable() をコールして、変数を作成および設定します。
このメソッドの引数の 1 つは
定義
です。この引数の値は、変数タイプに応じて単純な文字列または一連の XML 要素が有効です。
CA Single Sign-on
変数タイプ、およびタイプごとの
定義
引数の説明を以下に示します。
  • Post
    定義
    引数には、HTML フォーム上のフィールドの名前が含まれます。POST アクションでは、変数値はフィールドに割り当てられた値から引き出されます。
  • RequestContext
    定義
    引数には以下の XML コードが含まれます。
    <RequestContextVariableDef>
       <ItemName></ItemName>
    </RequestContextVariableDef>
    変数値は、ItemName エレメント内で以下の属性名のどれが使用されるかによって異なります。
    • Action。可変値は、リクエストで指定されたアクションのタイプです(たとえば GET または POST)。
    • Resource。変数値はターゲット リソースです(たとえば、/directory_name/)。
    • Server。変数値は、要求で指定された完全サーバ名です(たとえば、server.company.com)。
  • スタティック
    定義
    引数には、ランタイムにユーザ提供のデータと比較される実際の値が含まれます。たとえば、戻り型が VAR_RETTYPE_DATE の Static 変数は文字列値 2004-01-01 を割り当てられる場合があります。許可時に、この割り当てられた日付は、ユーザ提供の日付と比較されます。
  • UserContext
    定義
    引数には以下のいずれかまたはすべての XML コードが含まれます。
    <UserContextVariableDef>
       <ItemName></ItemName>
       <PropertyName></PropertyName>
       <DN></DN>
       <BufferSize></BufferSize>
    </UserContextVariableDef>
    変数値は、ユーザ ディレクトリ接続の属性(セッション ID など)またはユーザ ディレクトリの内容(ユーザ名など)に基づいています。変数値の基になる属性の名前は、XML エレメント ItemName 内で使用されます。
    エレメント PropertyName、DN、および BufferSize は、以下の方法のみで使用されます。
    • ItemName に DirectoryEntryProperty が含まれる場合、エレメント PropertyName、DN、および BufferSize が使用されます。
    • ItemName に UserProperty が含まれる場合、エレメント PropertyName および BufferSize が使用されます。
    有効な ItemName 値の全リストについては、「
    ポリシー管理 API リファレンス
    (PolicyMgtAPI.htm)」での CreateVariable() の説明を参照してください。
  • WebService
    定義
    引数には以下の XML 基本構造が含まれます。
    <WebServiceVariableDefn xmlns:NeteWS=
                           "http://www.netegrity.com/2003/SM6.0";>
       <NeteWS:RemoteURL></NeteWS:RemoteURL>
       <NeteWS:SSL/>
          <NeteWS:RemoteMethod></NeteWS:RemoteMethod>
          <NeteWS:ResultQuery></NeteWS:ResultQuery>
          <NeteWS:AuthCredentials>
             <NeteWS:Username></NeteWS:Username>
             <NeteWS:Password></NeteWS:Password>
             <NeteWS:Hash></NeteWS:Hash>
          </NeteWS:AuthCredentials>
          <NeteWS:Document>
             <SOAP:Envelope xmlns:SOAP=
                     "http://schemas.xmlsoap.org/soap/envelope/";>
                <SOAP:Header></SOAP:Header>
                <SOAP:Body></SOAP:Body>
             </SOAP:Envelope>
          </NeteWS:Document>
    </WebServiceVariableDefn>
    Web サービスから変数値を取得するため、ポリシー サーバは、Web サービスに
    definition
    引数で指定されているとおりに SOAP 要求ドキュメントを送信し、変数値を SOAP レスポンスから抽出します。
以下の表には、WebService 変数の設定に使用される XML エレメントの説明を示します。
 
エレメント
Description
RemoteURL
WebService 変数を解決する Web サービスの URL。
SSL
ポリシー サーバと Web サービスの間の接続に SSL を使用するよう指定します。
RemoteMethod
このエレメントを POST に設定します。
ResultQuery
XPath 形式でのリターン クエリ。ポリシー サーバは、SOAP レスポンス ドキュメントで変数値を検索するためにこの情報を使用します。
AuthCredentials
オプションで、以下の要素によってユーザの Web サービス認証情報を指定します。
Username
パスワード(SHA-1 パスワード要約またはクリア テキスト パスワードのいずれかを使用)
必要に応じて、Hash エレメントを使用して、パスワードのハッシュが WS セキュリティ パスワードに含まれることを指定します。
Document
オプションで、以下のエレメントによって SOAP ヘッダまたは SOAP 本文(またはその両方)を定義するためにこのエレメントを使用します。
Envelope。SOAP ネームスペースは次のとおりです: http://schemas.xmlsoap.org/soap/envelope
Header。ユーザ定義の SOAP ヘッダ。ユーザの Web サービス認証情報が指定された場合、WS-Security ヘッダが自動的に追加されます。
Body。ユーザ定義の SOAP 本文。
RequestContext、UserContext、Post、および Static タイプのネストされた変数をヘッダと本文内で使用できます。それらの値は、要求ドキュメントがリモート Web サービスに送信される前に、解決および代入されます。
ネストされた変数は、以下のように指定します。
$
variable-name
$
: 上に表示された XML エレメント構造は、読みやすさいようにフォーマットされます。
definition
引数によって提供された XML 文字列は、スペース、タブ、リターン文字でフォーマットされません。たとえば、Resource 属性の RequestContext 変数は、以下のように
definition
で渡されます。
<RequestContextVariableDef><ItemName>Resource</ItemName></RequestContextVariableDef>
以下の情報が CreateVariable() のコールに必要です。
  • ユーザ定義の変数名。
  • 変数タイプ -- たとえば Static または ResourceContext。
  • 変数定義。
  • 変数値のデータ型。有効なデータ型値は以下のとおりです。
    • VAR_RETTYPE_BOOLEAN
    • VAR_RETTYPE_NUMBER
    • VAR_RETTYPE_STRING
    • VAR_RETTYPE_DATE
オプションの TransactionMinder 製品とオプション パックの両方がインストールされている場合、以下のタイプの変数を使用できます。
  • SAMLAssertion
  • [Transport]
  • XMLAgent
  • XMLBody
  • XMLEnvironment
コマンド ライン インターフェースではこれらのタイプの変数を作成できません。これは、管理 UI を使用してのみ可能です。
: ResourceContext 変数の作成
以下の例では、ResourceContext 変数として変数 MyVar を作成します。変数値は保護されているリソースです(たとえば、/directory_name/)。
use Netegrity::PolicyMgtAPI;
 
$pmgtapi=Netegrity::PolicyMgtAPI->New();
$session=$pmgtapi->CreateSession("adminid", "adminpwd");
 
$dom=$session->GetDomain("MyDomain");
$varName="MyVar";
$varType=$session->GetVariableType("RequestContext");
$varDef="<RequestContextVariableDef><ItemName>Resource</ItemName>
    </RequestContextVariableDef>";
 
$vr=$dom->CreateVariable($varName,$varType,$varDef,
    VAR_RETTYPE_STRING);
 
if ($vr==undef) {
    print "Create operation failed.";   
    }   
else {
    print "Created variable " . $varName;   
    }