パフォーマンスのヒント
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
プロパティを含め、その他の複合プロパティは含めないでください。
返される Computer
オブジェクトには、初期設定ですべてのプロパティが含まれます。
コンピュータの記述、一覧表示、および検索を行う ComputersApi
クラスのメソッドまたは関数では、含めるプロパティを制御する expand
パラメータを定義します。 expand
パラメータは、文字列値のリストです。 Expand
クラスは、リストに含めることができる文字列値を定義します。文字列値のリストについては、「APIレファレンス/参照情報」の コンピュータ のdescribe、list、およびsearch操作の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)
この例では、 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が必要な場合は、 overrides
が true
に設定されたポリシーをリストする PoliciesApi
クラスのメソッドまたは関数を使用できます。ポリシーのプロパティの多くが継承されている場合、オーバーライドを取得すると、応答サイズが大幅に削減される可能性があります。 オーバーライドパラメータの値に関係なく、常にIDが返されます。
policies_api = api.PoliciesApi(api.ApiClient(configuration))
policies_with_overrides = policies_api.list_policies(api_version, overrides=True)
ルールの割り当てを直接設定する
次のクラスを使用して、ポリシーとコンピュータのルール割り当てを設定できます。
PolicyFirewallRuleAssignmentsApi
andComputerFirewallRuleAssignmentsApi
PolicyIntegrityMonitoringRuleAssignmentsRecommendationsApi
andComputerIntegrityMonitoringRuleAssignmentsRecommendationsApi
PolicyIntrusionPreventionRuleAssignmentsRecommendationsApi
andComputerIntrusionPreventionRuleAssignmentsRecommendationsApi
PolicyLogInspectionRuleAssignmentsRecommendationsApi
andComputerLogInspectionRuleAssignmentsRecommendationsApi
これらのクラスを使用すると、 Policy
または Computer
オブジェクトのセキュリティモジュール拡張オブジェクトを使用してルールの割り当てを設定するよりもパフォーマンスが向上します。たとえば、 ファイアウォール ルールを割り当てるには、 PolicyFirewallRuleAssignmentsApi
クラスのメソッドまたは関数を使用して、 ファイアウォール ルールを特定のポリシーに追加します。規則を割り当てるパフォーマンスの低い方法は、規則を FirewallPolicyExtension
オブジェクトに追加し、オブジェクトを Policy
オブジェクトに追加してから、 PoliciesApi
を使用してポリシーを変更することです。
これらのクラスの機能の詳細については、API レファレンス/参照情報の Policies および Computers セクションを参照してください。
単一の設定と直接対話する
ポリシー、コンピュータ、およびシステムの設定とやりとりするときの応答サイズを最小にするには、ポリシーを変更するのではなく、個々のポリシー設定を直接使用します。
ポリシーの作成と設定で説明されているように、ポリシー設定と対話するには2つの方法があります。
PoliciesApi
クラスを使用して、単一のポリシー設定を取得、変更、またはリセットします。応答には、SettingValue
オブジェクトが含まれます。PoliciesApi
クラスを使用すると、ポリシーを取得または変更できます。応答にはPolicy
オブジェクトが含まれます。このオブジェクトにはPolicySettings
オブジェクトが含まれます。
SettingValue
オブジェクト(文字列値を含む)は Policy
オブジェクトよりもずっと小さく、ポリシーのすべてのプロパティ値と設定値が含まれます。
同様に、個々の初期設定ポリシー設定を直接操作するにはPoliciesApi
クラスを使用し、個々のコンピュータ設定にはComputersApi
クラスを使用し、個々のシステム設定にはSystemSettingsApi
クラスを使用します (ポリシーを上書きするコンピュータの設定およびWorkload Securityのシステム設定を参照してください)。
ページの検索結果
可能な場合は、 Workload Security から大量のオブジェクトを取得するときにページ内の検索結果を取得して、サーバのリソースが大量に消費されないようにします。検索を実行しているときにマネージャのパフォーマンスが低下した場合は、コードをリファクタリングしてより小さい結果セットを返す一連の検索を実行します。
詳細については、リソースの検索 ガイドの「検索結果とページングの制限」セクションを参照してください。