APIとSDK呼び出しのパフォーマンスを向上させるには、次の方法を使用します。

コンピュータの応答サイズを最小にする

説明リスト、およびコンピュータを検索する際に、返されるコンピュータオブジェクトに含まれる情報を指定できます。必要な情報のみを返すと、クライアントに応答が届くまでの時間が短縮されます。
単純な値を持つコンピュータのプロパティは、常に返されるComputerオブジェクトに含まれます。ただし、複雑な値を持つプロパティ (値が他のオブジェクトであるプロパティ) の含有は制御できます。次のJSONはComputerオブジェクトのデータ構造を表しています。複雑なプロパティの値は中括弧{...}で表されます。
{
  "hostName": "string",
  "displayName": "string",
  "description": "string",
  "lastIPUsed": "string",
  "platform": "string",
  "groupID": 0,
  "policyID": 0,
  "assetImportanceID": 0,
  "relayListID": 0,
  "agentFingerPrint": "string",
  "applianceFingerPrint": "string",
  "lastAgentCommunication": 0,
  "lastApplianceCommunication": 0,
  "lastSendPolicyRequest": 0,
  "lastSendPolicySuccess": 0,
  "agentVersion": "string",
  "computerStatus": {...},
  "computerSettings": {...},
  "interfaces": {...},
  "biosUUID": "string",
  "azureARMVirtualMachineSummary": {...},
  "azureVMVirtualMachineSummary": {...},
  "ec2VirtualMachineSummary": {...},
  "noConnectorVirtualMachineSummary": {...},
  "vmwareVMVirtualMachineSummary": {...},
  "workspaceVirtualMachineSummary": {...},
  "esxsummary": {...},
  "ID": 0,
  "antiMalware": {...},
  "webReputation": {...},
  "firewall": {...},
  "intrusionPrevention": {...},
  "integrityMonitoring": {...},
  "logInspection": {...},
  "applicationControl": {...},
  "ESXSummary": {...},
  "SAP": {...}
}
例えば、コンピュータIDのリストが必要な場合、すべてのコンピュータをリストし、複雑なプロパティがComputerオブジェクトに含まれないように指定できます。エージェントのステータスに関心がある場合は、computerStatusプロパティのみを含め、他の複雑なプロパティは含めないようにします。
すべてのプロパティはデフォルトで返されるコンピュータオブジェクトに含まれます。
ComputersApiクラスのコンピュータを記述、リスト、および検索するメソッドまたは関数は、含まれるプロパティを制御するexpandパラメータを定義します。expandパラメータは文字列値のリストです。Expandクラスは、リストに含めることができる文字列値を定義します。文字列値のリストについては、APIレファレンスのComputersの記述、リスト、および検索操作のexpandパラメータの説明を参照してください。
次のコードは、コンピュータステータスレポートガイドのからのもので、コンピュータステータスプロパティを含むコンピュータのリストを取得します:
expand = api.Expand()
expand.add(api.Expand.computer_status)

computers_api = api.ComputersApi(api.ApiClient(configuration))
computers = computers_api.list_computers(api_version, expand=expand.list(), overrides=False)
この例では、コンピュータオブジェクトで返される情報は次のJSONに似ています:
{
  "hostName": "string",
  "displayName": "string",
  "description": "string",
  "lastIPUsed": "string",
  "platform": "string",
  "groupID": 0,
  "policyID": 0,
  "assetImportanceID": 0,
  "relayListID": 0,
  "agentFingerPrint": "string",
  "applianceFingerPrint": "string",
  "lastAgentCommunication": 0,
  "lastApplianceCommunication": 0,
  "lastSendPolicyRequest": 0,
  "lastSendPolicySuccess": 0,
  "agentVersion": "string",
  "computerStatus": {...},
  "biosUUID": "string",
  "ID": 0,
}
ヒント
ヒント
Expandクラスは、Computerオブジェクトに含めるプロパティを指定しやすくするためのいくつかの文字列を定義します (文字列の正確な名前はSDK言語によって異なります):
  • なし: 単純なプロパティ値のみが含まれ、複合プロパティは含まれません。[この値は、パフォーマンス] を大幅に向上させ、コンピュータIDなどの最小限の情報が必要な場合に便利です。
  • all: すべてのプロパティが含まれます。これが初期設定値です。
  • allVirtualMachineSummaries: EC2、Azure、VMWareなどのすべての仮想マシンの概要プロパティが含まれます。
  • allSecurityModules: 不正プログラム対策, 侵入防御、および アプリケーションコントロールなど、すべてのセキュリティモジュールのプロパティが含まれます。
`expand` パラメータの初期設定値は `all`です。`null` を指定するか、パラメータに値を指定しない場合、すべてのコンピュータ情報が返されます。

overridesパラメータを使用する

Workload Securityから多くの大きなオブジェクトを取得する場合、オーバーライドされたプロパティ値のみを含めることで、返されるオブジェクトのサイズを大幅に削減できます。多くのAPI呼び出しは、応答にターゲットリソースに設定されたオーバーライドのみを含めるか、すべての有効なプロパティを含めるかを制御するoverridesパラメータを定義しています。
詳細については、オーバーライドパラメータについてガイドを参照してください。
例えば、すべてのポリシーのIDが必要な場合、overridestrueに設定されたポリシーを一覧表示するPoliciesApiクラスのメソッドまたは関数を使用できます。多くのポリシーのプロパティが継承されている場合、オーバーライドを取得することで応答サイズを大幅に削減できます。IDはオーバーライドパラメータの値に関係なく常に返されます。
policies_api = api.PoliciesApi(api.ApiClient(configuration))
policies_with_overrides = policies_api.list_policies(api_version, overrides=True)

ルールの割り当てを直接設定する

次のクラスを使用して、ポリシーとコンピュータのルール割り当てを設定できます。
  • PolicyFirewallRuleAssignmentsApiComputerFirewallRuleAssignmentsApi
  • PolicyIntegrityMonitoringRuleAssignmentsRecommendationsApiComputerIntegrityMonitoringRuleAssignmentsRecommendationsApi
  • PolicyIntrusionPreventionRuleAssignmentsRecommendationsApiComputerIntrusionPreventionRuleAssignmentsRecommendationsApi
  • PolicyLogInspectionRuleAssignmentsRecommendationsApiComputerLogInspectionRuleAssignmentsRecommendationsApi
これらのクラスを使用することは、PolicyオブジェクトやComputerオブジェクトのセキュリティモジュール拡張オブジェクトを使用してルールの割り当てを構成するよりも高性能です。例えば、ファイアウォールルールを割り当てるには、特定のポリシーにファイアウォールルールを追加するPolicyFirewallRuleAssignmentsApiクラスのメソッドまたは関数を使用します。ルールを割り当てる低性能な方法は、ルールをFirewallPolicyExtensionオブジェクトに追加し、そのオブジェクトをPolicyオブジェクトに追加してからPoliciesApiを使用してポリシーを変更することです。
これらのクラスの機能に関する完全な情報については、APIレファレンスのポリシーおよびコンピュータセクションを参照してください。

単一の設定と直接対話する

ポリシー、コンピュータ、およびシステムの設定とやりとりするときの応答サイズを最小にするには、ポリシーを変更するのではなく、個々のポリシー設定を直接使用します。
Create and Configure a Policyで説明されているように、ポリシー設定と対話する方法は2つあります。
  • PoliciesApiクラスを使用して、単一のポリシー設定を取得、変更、またはリセットします。応答にはSettingValueオブジェクトが含まれます。
  • PoliciesApiクラスを使用してポリシーを取得または変更します。応答にはPolicyオブジェクトが含まれており、PolicySettingsオブジェクトが含まれています。
String値を含むSettingValueオブジェクトは、ポリシーのすべてのプロパティ値と設定値を含むPolicyオブジェクトよりもはるかに小さいです。
同様に、PoliciesApiクラスを使用して個々のデフォルトポリシー設定と直接対話し、ComputersApiクラスを使用して個々のコンピュータ設定を行い、SystemSettingsApiクラスを使用して個々のシステム設定を行います (コンピュータを設定してポリシーをオーバーライドするおよびWorkload Securityシステム設定を構成するを参照)。

ページの検索結果

可能な場合は、 Workload Security から大量のオブジェクトを取得するときにページ内の検索結果を取得して、サーバのリソースが大量に消費されないようにします。検索を実行しているときにマネージャのパフォーマンスが低下した場合は、コードをリファクタリングしてより小さい結果セットを返す一連の検索を実行します。
詳細については、リソースの検索ガイドの検索結果の制限とページングのセクションを参照してください。