Server & Workload Protection は、コンピュータにCVEに対するパッチを適用する侵入防御ルールを作成します。 APIを使用して、特定のCVEから保護する侵入防御ルールを判断したり、ルールがコンピュータに適用されるかどうかを判断したり、必要に応じてルールを適用したりできます。
手順
- を使用します。
IntrusionPreventionRulesApi
オブジェクトを使用して、検索を介して侵入防御ルールを取得します。 - コンピュータごとに、
IntrusionPreventionComputerExtension
オブジェクトを検索し、ルールがコンピュータに適用されているかどうかを判断します。 - 脆弱性の影響を受けるコンピュータごとに、使用するポリシーを決定し、ルールをポリシーに追加して、コンピュータをアップデートします。
次に進む前に
例: CVEの侵入防御ルールを検索する
次の例では、特定のCVEから保護する侵入防御ルールを検索します。侵入防御ルールオブジェクトには、ルールが適用されるCVEの名前を含むCVEフィールドがあります。 CVEフィールドは検索可能であるため、特定のCVEのルールを簡単に見つけることができます。検索で返されたルールから、ルールIDを取得します。
検索の詳細については、を参照してください。リソースの検索。
# Set search criteria search_criteria = api.SearchCriteria() search_criteria.field_name = "CVE" search_criteria.string_value = "%" + cve_id + "%" search_criteria.string_test = "equal" # Create a search filter search_filter = api.SearchFilter() search_filter.search_criteria = [search_criteria] # Search for all intrusion prevention rules for the CVE ip_rules_api = api.IntrusionPreventionRulesApi(api.ApiClient(configuration)) ip_rules_search_results = ip_rules_api.search_intrusion_prevention_rules(api_version, search_filter=search_filter) # Get the intrusion prevention rule IDs for the CVE from the results for rule in ip_rules_search_results.intrusion_prevention_rules: rule_id_s.append(rule.id) return rule_id_s
また、侵入防御ルールの検索操作については、 APIレファレンス/参照情報を参照してください。
例: CVEに対して保護されていないコンピュータを検索する
次の例では、リスト内のどのコンピュータに侵入防御ルールが適用されていないかを判断します。コンピュータごとに、コンピュータに割り当てられているルールのIDが取得されます。割り当てられたルールIDが、CVEから保護するルールのIDと比較されます。
unprotected_computers = [] for computer in computers_list.computers: computer_ip_list = computer.intrusion_prevention if computer_ip_list.rule_ids: if rule_id in computer_ip_list.rule_ids: unprotected_computers.append(computer) return unprotected_computers
また、コンピュータの一覧表示そしてコンピュータの検索の操作については、「 APIレファレンス/参照情報」を参照してください。
例: 侵入防御ルールをコンピュータのポリシーに追加する
次の例では、侵入防御ルールをポリシーに追加します。この例のソースコードによって、コンピュータに割り当てられるポリシーも決まります。ポリシーが検出されると、ルールがまだ割り当てられていない場合は、そのポリシーに割り当てられます。すでに適用されているルールを保持するように注意する必要があります。
ヒントまたは、ルールをコンピュータに直接割り当てることもできます。
|
# Get the current list of rules from the policy policies_api = api.PoliciesApi(api.ApiClient(configuration)) current_rules = policies_api.describe_policy(policy_id, api_version, overrides=False) # Add the rule_id if it doesn't already exist in current_rules if current_rules.intrusion_prevention.rule_ids == None: current_rules.intrusion_prevention.rule_ids = rule_id elif rule_id not in current_rules.intrusion_prevention.rule_ids: current_rules.intrusion_prevention.rule_ids.append(rule_id) # Add the new and existing intrusion prevention rules to a policy intrusion_prevention_policy_extension = api.IntrusionPreventionPolicyExtension() intrusion_prevention_policy_extension.rule_ids = current_rules.intrusion_prevention.rule_ids policy = api.Policy() policy.intrusion_prevention = intrusion_prevention_policy_extension
また、 ポリシーの変更 操作について、API レファレンスで確認してください。APIコールの認証についての詳細は Server & Workload Protectionによる認証を参照してください。