検索は、タスクの自動化に役立つ強力なツールです。 APIの各エンドポイントは、リソースを検索するための操作を提供します。たとえば、コンピュータの検索の操作
/api/computers
エンドポイントを使用してコンピュータを検索します。検索操作を使用するには、1つ以上の検索条件を含む検索フィルタオブジェクトを指定します。検索条件オブジェクトには、次の種類の検索を設定するためのプロパティが含まれます。
- [ブール値:]ブール値で検索します。
- [選択肢:]有効な値のセットが定義されているフィールドの検索
- [ID:]一意のIDの検索
- [Null:] null値の検索
- [数値:]数値の検索
- [文字列:]文字列値の検索
- [日付範囲:]日付値で検索
複数の条件を使用する検索では、すべての条件を満たす結果が返されます。
ヒントで述べたようにリソースのプロパティ値に関する注意事項APIを直接使用する場合は、0を使用してnull値を表します。ただし、ヌル値を検索するには、ヌル検索を使用します。 0の数値検索は実行しません。
|
検索条件には次の項目が含まれます。
- 検索するフィールド (リソースのプロパティ) の名前 -- フィールド名では大文字と小文字が区別されることに注意してください。
- 検索する値 (日付値の場合は日付の範囲)
- フィールド値に対してテストする演算子 (日付値の検索には適用されません)
- 返されるアイテムの最大数 (初期設定は5000)
ヒントID検索を実行する場合、フィールド名はIDフィールドと見なされるため、フィールド名は含めません。
|
検索する値の種類によって、使用できる演算子が決まります。
種類
|
演算子
|
ブール
|
true (初期設定) false
|
選択肢 (有効な値のセットが定義されているフィールドの場合)
|
等しい (初期設定) 等しくない
|
日付
|
日付関連の検索では日付範囲が使用され、演算子は明示的に使用されません。
|
ID (一意のID用)
|
等しい (初期設定) 大なり小なり 等しくない
|
Null
|
true (初期設定。trueはnullを示します) false
|
数字
|
等しい (初期設定) 大なり小なり 等しくない
|
文字列
|
等しい-等しくない
|
次の例では、ポリシー名で簡易検索を実行します。
# Set search criteria search_criteria = api.SearchCriteria() search_criteria.field_name = "name" search_criteria.string_test = "equal" search_criteria.string_value = name # Create a search filter search_filter = api.SearchFilter(None, [search_criteria]) search_filter.max_items = 1 # Perform the search policies_api = api.PoliciesApi(api.ApiClient(configuration)) policies_api.search_policies(api_version, search_filter=search_filter)
次の例は、複数の条件を含む検索フィルタを作成する方法を示しています。
# Set search criteria for platform policy_criteria = api.SearchCriteria() policy_criteria.field_name = "policyID" policy_criteria.numeric_test = "equal" policy_criteria.numeric_value = policy_id # Set search criteria for relay relay_criteria = api.SearchCriteria() relay_criteria.field_name = "relayListID" relay_criteria.numeric_test = "equal" relay_criteria.numeric_value = relay_list_id # Create the search filter search_filter = api.SearchFilter(None, [policy_criteria, relay_criteria])
API呼び出しの認証の詳細については、を参照してください。 Server & Workload Protectionによる認証。
検索可能なフィールド
はAPIレファレンス/参照情報リソースのどのフィールドが検索可能かを示します。フィールドの情報は、操作の対応オブジェクトで確認できます。
- 検索するリソースの種類を返す操作をクリックします。たとえば、
Describe a Computer
オペレーションはコンピュータリソースを返します。 - [応答] セクションで [ [200件成功]]をクリックします。
- フィールドの説明を読みます。検索可能フィールドの説明には、「データ型として検索可能」と記載されています。データ型には、文字列、数値、ID、日付、ブール、および選択肢を指定できます。
フィールド名では大文字と小文字が区別されます。
次のフィールドは検索できません。
- は
locale
任意のオブジェクトのフィールド - 値としてオブジェクトを持つほとんどのフィールド。
policySettings
aのフィールドPolicy
オブジェクト (例外については、後述の「コンピュータのサブオブジェクトの検索」を参照)。
検索できないフィールドを検索すると、次のようなエラーが表示される
Invalid SearchFilter: unknown fieldName: platform
。コンピュータのサブオブジェクトを検索
値としてオブジェクトを持つフィールドは通常検索できませんが、コンピュータクラスにはいくつかの例外があります。たとえば、
ec2VirtualMachineSummary
フィールドがオブジェクトであり、そのオブジェクトのいくつかのフィールドが検索可能です。accountID
およびavailabilityZone
。同様に、name
field of computer interfaces
。 (コンピュータの説明での操作APIレファレンス/参照情報次のJSONは、コンピュータオブジェクトのデータ構造内のこれらのサブオブジェクトを示しています。{ "hostName": "gui2-336", "displayName": "", "description": "", ... "interfaces": { "name": "ethernet", ... }, "ec2VirtualMachineSummary": { "accountID": "123456789012", "availabilityZone": "ap-northeast-1", ... }, ... "ID": 201 }
検索条件では、サブオブジェクトのフィールド名はパスとして表されます。次に例を示します。
ec2VirtualMachineSummary/publicIPAddress
そしてinterfaces/name
。
ヒントを使用します。
expand パラメータを指定すると、必要な情報のみが返されるコンピュータオブジェクトに含まれます。対応については、パフォーマンスのヒントガイドします。 |
コンピュータのサブオブジェクトを検索すると、そのサブオブジェクトが自動的に返されます。
Computer
次の場合を除くexpand
に設定されていますnone
(サブオブジェクトは返されません)。たとえば、EC2アカウントIDとexpand
に設定されていますtasks
、返されるComputer
オブジェクトには、tasks
そしてec2VirtualMachineSummary
プロパティ。次の場合expand
に設定されていますec2VirtualMachineSummary
、返されるComputer
オブジェクトには、ec2VirtualMachineSummary
プロパティ。# Search criteria computer_criteria = api.SearchCriteria() computer_criteria.field_name = "ec2VirtualMachineSummary/accountID" computer_criteria.string_test = "equal" computer_criteria.string_value = account_id # Search filter max_items = None search_filter = api.SearchFilter(max_items, computer_criteria) # Include only the EC2 virtual machine summary in the returned computers expand = api.Expand(api.Expand.ec2_virtual_machine_summary) # Perform the search computers_api = api.ComputersApi(api.ApiClient(configuration)) return computers_api.search_computers(api_version, search_filter=search_filter, expand=expand.list(), overrides=False)
Pythonコードのフィールド名
Pythonクライアントライブラリを使用する場合は、検索で正しいフィールド名を使用していることを確認してください。一部のフィールド名は複数の単語が連結されており、キャメルケースの文字が使用されています。
lastUpdated
侵入防御ルールのプロパティ。対応するPythonプロパティでは、キャメルケースの代わりにアンダースコア文字 (_) を使用して、連結する単語を区切ります。last_updated
。フィールドを検索する場合は、検索するフィールド名を指定する必要があります (lastUpdated
) ではなく、クラスプロパティ (last_updated
)。正しくないフィールド名を使用すると、次のメッセージとともにエラーが表示されます。
Invalid SearchFilter: unknown fieldName
。プロパティの名前に1つ以上の下線文字 (_) が含まれている場合は、次のアルゴリズムを使用してPythonクラスのプロパティをフィールド名に変換します。
- アンダースコアの直後の文字は大文字にします。
- 各アンダースコアを削除します。
文字列検索でのワイルドカードの使用
文字列検索では、文字列値に次の2つのワイルドカードを使用できます。
%
: 0個以上の文字に一致_
; 1文字に一致
たとえば、文字列値
%Security
一致Server & Workload Protection
であり、次の条件にも一致します。Security
。文字列値version_
一致version1
であり、一致しませんversion
。リテラルを検索する場合%
または_
ワイルドカードを無効にできます。ただし、ワイルドカードの使用は初期設定で有効になっています。次の検索フィルタを使用して、「基本ポリシー」という名前のポリシーを検索できます。# Create the search criteria search_criteria = api.SearchCriteria() search_criteria.field_name = "name" search_criteria.string_test = "equal" search_criteria.string_value = "Base%"
ヒントワイルドカード検索を無効にするには、「SearchCriteria」オブジェクトの「stringWildcards」プロパティを「false」に設定します。
search_criteria.string_wildcards = "false" |
期間検索を実行する
指定した2つの日付の範囲内にある日付値を含むフィールドを検索できます。次の検索条件フィールドで日付範囲を定義します。
- [開始日:]範囲内の以前の日付。初期設定値は、最も早い日付です。
- [起算日を含む:]範囲にFirstDateが含まれるか (true)、含まれないか (false) を示すブール値。初期設定はfalseです。
- [最終日:]範囲内の後の日付。初期設定は、最新の日付です。
- [LastDateInclusive:]範囲に LasteDate が含まれるか (true)、含まれないか (false) を示すブール値。初期設定はfalseです。
の値
FirstDate
そしてLastDate
1970年1月1日 (GMT) からのミリ秒数で表されます。次の例では、最終更新日時に基づいて侵入防御ルールを検索します。
# Time that rules were last updated current_time_in_ms = int(round(time.time() * 1000)) last_updated_in_ms = current_time_in_ms - (num_days * 24 * 60 * 60 * 1000) # Set search criteria for the date range search_criteria = api.SearchCriteria() search_criteria.field_name = "lastUpdated" search_criteria.first_date_value = last_updated_in_ms search_criteria.last_date_value = current_time_in_ms search_criteria.first_date_inclusive = True search_criteria.last_date_inclusive = True # Create a search filter search_filter = api.SearchFilter(None, [search_criteria]) # Perform the search intrusion_prevention_rules_api = api.IntrusionPreventionRulesApi(api.ApiClient(configuration)) return intrusion_prevention_rules_api.search_intrusion_prevention_rules(api_version, search_filter=search_filter)
また、 Search Intrusion Prevention Rules operation in the API Reference. For information about authenticating API calls, see
Server & Workload Protectionによる認証。
null値の検索
nullテスト検索を使用して、フィールドに値がない (null) か、値がないかに基づいてリソースを検索します。たとえば、
lastSendPolicySuccess
コンピュータの のフィールドは、コンピュータのポリシーが最後に正常にアップデートされた時刻を示します。ポリシーアップデートを受信したことがないコンピュータを見つけるには、そのフィールドでnullテスト検索を実行します。このタイプの検索の場合、検索条件には、検索するフィールドの名前と、値のないリソースを検索するかどうか (
null_test = true
) または任意の値 (null_test = false
)。次の例では、ポリシーアップデートを受信したことがないコンピュータを検索します。
# Search criteria computer_criteria = api.SearchCriteria() computer_criteria.field_name = "lastSendPolicySuccess" computer_criteria.null_test = True # Search filter max_items = None search_filter = api.SearchFilter(max_items, computer_criteria) # Include minimal information in the returned computers expand = api.Expand(api.Expand.none) # Perform the search computers_api = api.ComputersApi(api.ApiClient(configuration)) return computers_api.search_computers(api_version, search_filter=search_filter, expand=expand.list(), overrides=False)
詳細については、コンピュータの検索操作については、 APIレファレンス/参照情報を参照してください。
ソート順
検索条件の特性によって、検索結果の並べ替え順序が決まります。
-
[ブール検索、選択肢検索、Null検索、および文字列検索:]返されたオブジェクトのIDの昇順で並べ替えられます。
-
[ID検索:] ID順。演算子は、順序が昇順か降順かを決定します。
- 小なりおよび小なり: 降順
- その他すべての演算子: 昇順
-
[数値検索:]検索するフィールドでソートされます。演算子は、順序が昇順か降順かを決定します。
- 小なりおよび小なり: 降順
- その他すべての演算子: 昇順
複数の検索結果で検索されたフィールドの値が同じ場合、それらのオブジェクトはID順に2次的に並べ替えられます。 -
[日付検索:]検索するフィールドでソートされます。検索用に指定された日付範囲パラメータによって、並べ替え順序が決まります。
- LastDateのみが提供されます: 降順
- その他の組み合わせ: 昇順
複数の検索結果で、検索された日付フィールドの値が同じ場合、それらのオブジェクトはID順に2次的に並べ替えられます。 -
[複数の検索条件:]複数の検索条件を使用する検索は、個々の条件の初期設定の並べ替え順序に関係なく、ID (昇順) で並べ替えられます。
SearchFilterオブジェクトを使用すると、返されたオブジェクトのIDによる初期設定の並べ替え順序をオーバーライドできます。
検索結果とページングを制限する
を使用します。
maxItems
検索フィルタのフィールドを使用して、返されるオブジェクトの数を制限します。返されるオブジェクトの最大数は初期設定で5000で、5000を超えることはできません。また、
maxItems
ID検索結果のページングを実装するフィールド:- 大なり演算子を使用したIDによる検索
- maxItemsを使用してページサイズを設定する
- 検索結果の前のページで最も大きいIDに基づいて、検索するIDの値を計算します。
次の例は、検索を使用して一連のページ内のすべてのコンピュータを取得する方法を示しています。
# Set search criteria search_criteria = api.SearchCriteria() search_criteria.id_value = 0 search_criteria.id_test = "greater-than" # Create a search filter with maximum returned items page_size = 10 search_filter = api.SearchFilter() search_filter.max_items = page_size search_filter.search_criteria = [search_criteria] # Include the minimum information in the returned Computer objects expand = api.Expand(api.Expand.none) # Perform the search and do work on the results computers_api = api.ComputersApi(api.ApiClient(configuration)) paged_computers = [] while True: computers = computers_api.search_computers(api_version, search_filter=search_filter, expand=expand.list(), overrides=False) num_found = len(computers.computers) current_paged_computers = [] if num_found == 0: print("No computers found.") break for computer in computers.computers: current_paged_computers.append(computer) paged_computers.append(current_paged_computers) # Get the ID of the last computer in the page and return it with the number of computers on the page last_id = computers.computers[-1].id search_criteria.id_value = last_id print("Last ID: " + str(last_id), "Computers found: " + str(num_found)) return paged_computers
また、 Search Computers operation in the API Reference. For information about authenticating API calls, see
Server & Workload Protectionによる認証。