Workload Security では、CVEのコンピュータにパッチを適用する 侵入防御 ルールを作成します。このAPIを使用して、 侵入防御 ルールで特定のCVEを保護するかどうかを判断したり、ルールがコンピュータに適用されているかどうかを判断したり、必要に応じてルールを適用したりできます。
手順
IntrusionPreventionRulesApi
オブジェクトを使用して、検索を通じてIPSルールを取得します。- 各コンピュータに対して、
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レファレンスのIPSルールの検索操作も参照してください。
例: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呼び出しの認証に関する情報については、Workload Securityでの認証を参照してください