パフォーマンスのヒント

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

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

, 一覧検索 コンピュータの説明が記述されている場合、返される Computer オブジェクトに含まれる情報を指定できます。必要な情報のみを返すと、応答がクライアントに届くまでにかかる時間が短くなります。

単純な値であるコンピュータプロパティは、常に返される 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 のdescribe、list、およびsearchの各操作のexpandパラメータの説明を参照してください。)

次のコードは、 Report on Computer Statusの例 から入手でき、コンピュータのステータスプロパティを含むコンピュータのリストを取得します。

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)

この例では、 Computer オブジェクトに返される情報は次の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)

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

次のクラスを使用して、ポリシーとコンピュータのルール割り当てを設定できます。

  • PolicyFirewallRuleAssignmentsApi and ComputerFirewallRuleAssignmentsApi
  • PolicyIntegrityMonitoringRuleAssignmentsRecommendationsApi and ComputerIntegrityMonitoringRuleAssignmentsRecommendationsApi
  • PolicyIntrusionPreventionRuleAssignmentsRecommendationsApi and ComputerIntrusionPreventionRuleAssignmentsRecommendationsApi
  • PolicyLogInspectionRuleAssignmentsRecommendationsApi and ComputerLogInspectionRuleAssignmentsRecommendationsApi

これらのクラスを使用すると、 Policy または Computer オブジェクトのセキュリティモジュール拡張オブジェクトを使用してルールの割り当てを設定するよりもパフォーマンスが向上します。たとえば、 ファイアウォール ルールを割り当てるには、 PolicyFirewallRuleAssignmentsApi クラスのメソッドまたは関数を使用して、 ファイアウォール ルールを特定のポリシーに追加します。規則を割り当てるパフォーマンスの低い方法は、規則を FirewallPolicyExtension オブジェクトに追加し、オブジェクトを Policy オブジェクトに追加してから、 PoliciesApi を使用してポリシーを変更することです。

これらのクラスの機能の詳細については、API レファレンス/参照情報の Policies および Computers セクションを参照してください。

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

ポリシー、コンピュータ、およびシステムの設定とやりとりするときの応答サイズを最小にするには、ポリシーを変更するのではなく、個々のポリシー設定を直接使用します。

ポリシーの作成と設定で説明されているように、ポリシー設定と対話するには2つの方法があります。

  • PoliciesApi クラスを使用して、単一のポリシー設定を取得、変更、またはリセットします。応答には、 SettingValue オブジェクトが含まれます。
  • PoliciesApi クラスを使用すると、ポリシーを取得または変更できます。応答には Policy オブジェクトが含まれます。このオブジェクトには PolicySettings オブジェクトが含まれます。

SettingValue オブジェクト(文字列値を含む)は Policy オブジェクトよりもずっと小さく、ポリシーのすべてのプロパティ値と設定値が含まれます。

同様に、 PoliciesApi クラスを使用して個々の初期設定のポリシー設定と直接対話し、個々のコンピュータ設定に ComputersApi クラスを使用し、個々のシステム設定に SystemSettingsApi クラスを使用します(「 ポリシーをオーバーライドするコンピュータを設定する」 および 「 Workload Security システムの設定」を参照)。設定)。

ページの検索結果

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

詳細については、 リソースの検索 ガイドの「検索結果とページングを制限する」のセクションを参照してください。