このページのトピック
コンピュータステータスレポート
APIを使用して、 Workload Security が保護しているコンピュータのセキュリティステータスに関する情報を収集します。たとえば、セキュリティステータスの月次レポートを作成するには、セキュリティモジュールの実行ステータスの有効/無効 (最新ルールの割り当て有無など) に関する情報を収集します。
また、特定の脅威から保護されているかどうかを確認することもできます。たとえば、 a zeri-dayの脆弱性に対するCVEがリリースされた場合、そのCVEの侵入防御ルールを見つけてコンピュータに適用できます。
保護されていないコンピュータを検出する
エージェントまたはアプライアンスのリアルタイムステータスまたは保護モジュールのステータスに基づいて保護されていないコンピュータを検出します。
- コンピュータにエージェントまたはApplianceがインストールされていないか、エージェントまたはApplianceがアクティブではありません。
- 保護モジュールがオンになっていないか、オンになっていてアクティブではありません。
仮想マシンの場合は、コンピュータの状態やその他の情報も取得できます。この情報はトラブルシューティングに役立ちます。
コンピュータのステータスに関する背景情報については、 コンピュータとエージェントのステータスを見ます
エージェントのステータスに基づいてコンピュータを検索する
エージェントがインストールされていないコンピュータは、 Workload Securityによって保護されません。問題は、彼らのエージェントまたはアプライアンスに存在する場合にコンピュータはまた、保護されていない可能性があります。
エージェントまたはアプライアンスがインストールされているかどうかを確認するには、エージェントおよびアプライアンスのフィンガープリントを確認します。指紋がない場合は、エージェントまたはアプライアンスがインストールされていないため、コンピュータが保護されていないことを示します。エージェントまたはアプライアンスがインストールされている場合は、そのステータスも確認してください。たとえば、 active
のステータスは、 エージェントまたはアプライアンスが正しく実行されていることを示します。その他のステータス( error
や inactive
など)では、調査する必要がある問題が示されます。
次のJSON例は、Computerオブジェクトのデータ構造を表しています (いくつかの項目は例を簡潔にするために省略されています)。 agentFingerPrint
は、エージェントがインストールされていることを示し、computerStatus
はエージェントがアクティブであることを示します。
{
"hostName": "laptop_adaggs",
...
"policyID": 34,
"agentFingerPrint": "71:3E:81:64:65:EB:34:78:FC:72:C2:CB:37:6B:1D:F0:8C:D1:9B:1E",
"agentVersion": "11.3.2.883",
"computerStatus": {
"agentStatus": "active",
"agentStatusMessages": [
"Managed (Online)"
]
},
"computerSettings": {...},
"ID": 48,
"antiMalware": {...},
...
}
offline
のステータスは、 Workload Security がコンピュータと通信できないことを示します。このステータスでは、エージェントまたはアプライアンスは正常に動作し、保護を提供できます。ただし、 Workload Security では、エージェントまたはアプライアンスにセキュリティアップデートを送信できません。
保護されていないコンピュータを検出するには、次の一般的な手順を実行します。
ComputersApi
を使用して、コンピュータオブジェクトを取得します。- コンピュータの
AgentFingerPrint
およびApplianceFingerPrint
プロパティを確認します。 Computer
オブジェクトからComputerStatus
オブジェクトを取得し、AgentStatus
プロパティを確認します。ACTIVE
以外の値は、問題を示す可能性があります。- 必要に応じて、
ComputerStatus
オブジェクトのAgentStatusMessages
およびComputer
オブジェクトのAgentTasks
プロパティを取得して、有用な情報を入手してください。
コンピュータの computerStatus
フィールドの値がオブジェクトなので (ComputerStatus
), では検索できません。
すべてのコンピュータのステータスを確認するには、まず ComputersApi
クラスを使用してすべてのコンピュータをリストします。
computers_api = api.ComputersApi(api.ApiClient(configuration))
computers = computers_api.list_computers(api_version, expand=expand.list(), overrides=False)
コンピュータごとに、エージェントおよびアプライアンスのフィンガープリントを確認します。指紋がない場合は、エージェントまたはアプライアンスがインストールされておらず、コンピュータが保護されていないことを示します。コンピュータには、エージェントとアプライアンスの両方をインストールできます。両方の指紋の値を確認する必要があります。
if computer.agent_finger_print == None and computer.appliance_finger_print == None:
指紋が見つかった場合は、エージェントまたはアプライアンスのステータスを取得して、アクティブであるかどうかを判断します。アクティブ以外のステータスの場合、エージェントまたはアプライアンスに問題がある可能性があります。
agent_status = computer.computer_status.agent_status
if computer.agent_finger_print != None and agent_status != "active":
...
appliance_status = computer.computer_status.appliance_status
if computer.appliance_finger_print != None and appliance_status != "active":
...
ステータスがアクティブでない場合は、エージェントまたはApplianceのステータスメッセージとタスクを取得します。次の例は、エージェントの情報を取得する方法を示しています。
if computer.computer_status.agent_status_messages != None:
computer_info.append(str(computer.computer_status.agent_status_messages))
else:
computer_info.append("")
if computer.tasks != None:
computer_info.append(str(computer.tasks.agent_tasks))
else:
computer_info.append("")
エージェントまたはアプライアンスどちらがインストールされている次の例の発見コンピュータ、またはエージェントおよび/またはアプライアンスのステータスがアクティブではありません。完全なソースコードのサンプルでは、結果は へのCSVファイルとして保存できる形式でコンパイルされます. をスプレッドシートとして開きます。
# Include computer status information in the returned Computer objects
expand = api.Expand(api.Expand.computer_status)
# Get all computers
computers_api = api.ComputersApi(api.ApiClient(configuration))
computers = computers_api.list_computers(api_version, expand=expand.list(), overrides=False)
for computer in computers.computers:
computer_info = []
# Report on computers with no agent or appliance
if computer.agent_finger_print is None and computer.appliance_finger_print is None:
# Hostname and protection type
computer_info.append(computer.host_name)
computer_info.append("None")
# Agent/appliance status and status messages
computer_info.append("No agent/appliance")
status_messages = ""
if computer.computer_status is not None and computer.computer_status.agent_status is not None:
status_messages = str(computer.computer_status.agent_status_messages)
computer_info.append(status_messages)
else:
# Report on problem agents and appliances
agent_status = computer.computer_status.agent_status
appliance_status = computer.computer_status.appliance_status
# Agent is installed but is not active
if computer.agent_finger_print is not None and agent_status != "active":
# Hostname and protection type
computer_info.append(computer.host_name)
computer_info.append("Agent")
# Agent status, status messages, and tasks
if computer.computer_status.agent_status is not None:
computer_info.append(computer.computer_status.agent_status)
else:
computer_info.append("")
if computer.computer_status.agent_status_messages is not None:
computer_info.append(str(computer.computer_status.agent_status_messages))
else:
computer_info.append("")
if computer.tasks is not None:
computer_info.append(str(computer.tasks.agent_tasks))
else:
computer_info.append("")
# Appliance is installed but is not active
if computer.appliance_finger_print is not None and appliance_status != "active":
# Hostname and protection type
computer_info.append(computer.host_name)
computer_info.append("Appliance")
# Appliance status, status messages, and tasks
if computer.computer_status.appliance_status is not None:
computer_info.append(computer.computer_status.appliance_status)
else:
computer_info.append("")
if computer.computer_status.appliance_status_messages is not None:
computer_info.append(str(computer.computer_status.appliance_status_messages))
else:
computer_info.append("")
if computer.tasks is not None:
computer_info.append(str(computer.tasks.appliance_tasks))
else:
computer_info.append("")
コンピュータの一覧表示、コンピュータの説明、および コンピュータの検索 オペレーション (APIレファレンス/参照情報) も参照してください。
モジュールのステータスに基づいてコンピュータを検索する
保護モジュールの電源がオフになっているか、問題によりエージェントまたはアプライアンスがモジュールを正しく実行できない場合、コンピュータは脆弱です。コンピュータが保護モジュールで保護されているかどうかを確認するには、モジュールの状態(オンまたはオフ)を確認します。状態がオンの場合は、モジュールまたはエージェントがアプライアンスまたはアプライアンスのモジュールを実行する機能を示すモジュールのステータスも確認します。 active
以外のステータスは、注意が必要な問題を示す可能性があります。また、ステータスを確認できるステータスメッセージを取得することもできます。
次のJSON例は、Computerオブジェクトのデータ構造を表しています (いくつかの項目は例を簡潔にするために省略されています)。不正プログラム対策 モジュールは on
ですが、モジュールのエージェントステータスには警告が表示されます。
{
"hostName": "192.168.60.128",
...
"policyID": 9,
"agentFingerPrint": "76:C8:CE:B3:70:61:A3:BE:84:A2:2A:5D:1F:3A:29:8A:DC:7A:70:6C",
"agentVersion": "11.2.0.147",
"computerStatus": {...},
"computerSettings": {...},
...
"ID": 2,
"antiMalware": {
"state": "on",
"moduleStatus": {
"agentStatus": "warning",
"agentStatusMessage": "Software Update: Anti-Malware Module Installation Failed"
},
"realTimeScanConfigurationID": 1,
"realTimeScanScheduleID": 4,
"manualScanConfigurationID": 2,
"scheduledScanConfigurationID": 3
},
"webReputation": {...},
"firewall": {...},
"intrusionPrevention": {...},
"integrityMonitoring": {...},
"logInspection": {...},
"applicationControl": {...}
}
次の一般的な手順を使用して、モジュールのステータスを使用して保護されていないコンピュータを検出します。
ComputersApi
を使用してComputer
オブジェクトを取得します。- 目的の保護モジュールのコンピュータ拡張オブジェクト(
AntiMalwareComputerExtension
やIntrusonPreventionComputerExtension
など)を取得します。 - コンピュータの拡張子オブジェクトから、モジュールの状態の値を取得して、モジュールがオンかオフかを確認します。
- また、コンピュータ拡張オブジェクトから、
ModuleStatus
オブジェクトを取得して、エージェントとアプライアンスのステータスおよびステータスメッセージを取得します。
コンピュータ拡張機能の moduleStatus
フィールドの値がオブジェクトなので (ModuleStatus
), ではこのフィールドを検索できません。
すべてのコンピュータのモジュールステータスを確認するには、最初に ComputersApi
クラスを使用してすべてのコンピュータを一覧表示します。
computers_api = api.ComputersApi(api.ApiClient(configuration))
computers = computers_api.list_computers(api_version, expand=expand.list(), overrides=False)
コンピュータごとに、対象の保護モジュールのエージェントのステータスを取得します。モジュールのステータスを取得し、エージェントまたはアプライアンスのステータスを確認します。アクティブ以外のステータスの場合、エージェントまたはアプライアンスに問題がある可能性があります。エージェントがインストールされていない場合、エージェントのステータスは表示されません。同様に、アプライアンスがインストールされていない場合、アプライアンスのステータスはありません。
if computer.anti_malware.module_status:
agent_status = computer.anti_malware.module_status.agent_status
appliance_status = computer.anti_malware.module_status.appliance_status
else:
agent_status = None
appliance_status = None
if agent_status and agent_status != "active":
...
if appliance_status and appliance_status != "active":
...
非アクティブなステータスの場合は、モジュールのエージェントまたはアプライアンスのステータスメッセージを取得します。
module_info.append(computer.anti_malware.module_status.agent_status_message)
module_info.append(computer.anti_malware.module_status.appliance_status_message)
computers_api = api.ComputersApi(api.ApiClient(configuration))
computers = computers_api.list_computers(api_version, expand=expand.list(), overrides=False)
# Get the list of computers and iterate over it
for computer in computers.computers:
# Module information to add to the CSV string
module_info = []
# Check that the computer has a an agent or appliance status
if computer.anti_malware.module_status:
agent_status = computer.anti_malware.module_status.agent_status
appliance_status = computer.anti_malware.module_status.appliance_status
else:
agent_status = None
appliance_status = None
# Agents that are not active for the module
if agent_status and agent_status != "active":
# Host name
module_info.append(computer.host_name)
# Module state
module_info.append(computer.anti_malware.state)
# Agent status and status message
module_info.append("Agent")
module_info.append(agent_status)
module_info.append(computer.anti_malware.module_status.agent_status_message)
# Appliances that are not active for the module
if appliance_status and appliance_status != "active":
# Host name
module_info.append(computer.host_name)
# Module state
module_info.append(computer.anti_malware.state)
# Appliance status and status message
module_info.append("Appliance")
module_info.append(appliance_status)
module_info.append(computer.anti_malware.module_status.appliance_status_message)
また、 List Computers, Describe a computer、および Search Computers のAPIレファレンス/参照情報。
仮想マシンの状態を表示する
コンピュータが仮想マシンの場合、状態 (仮想マシンのベンダーによって定義されたもの) など、仮想マシンのいくつかのプロパティを取得できます。Computer
クラスは、 azureARMVirtualMachineSummary
ec2VirtualMachineSummary
や vmwareVMVirtualMachineSummary
など、いくつかの仮想マシン概要オブジェクトへのアクセスを提供します。完全なリストについては、APIリファレンス を参照してください。
コンピュータの仮想マシンの概要を取得し、仮想マシンのプロパティ(状態など)を確認するために使用できます。
コンピュータの構成を取得する
Computer
オブジェクトには、コンピュータの設定情報が含まれます。 Computer
オブジェクトを取得するには、 ComputersApi
オブジェクトを作成し、特定のコンピュータをIDで取得するか、その他のプロパティで検索するか、すべてのコンピュータをリストして繰り返し実行します。
- すべてのプロパティ:コンピュータの割り当てられたポリシーから継承されたものとオーバーライドが含まれます。
- オーバーライドのみ:そのコンピュータでオーバーライドされたプロパティのみが含まれます。継承されるすべてのプロパティはnullです。
コンピュータの現在の設定にアクセスするには、 Computer
オブジェクトを使用して、保護モジュールのコンピュータ拡張オブジェクトを取得します。たとえば、コンピュータの不正プログラム対策の設定や状態に関する情報を取得するには、 AntiMalwareComputerExtension
オブジェクトを取得します。 expand
パラメータを使用して、必要なコンピュータ情報のみを取得します。
# Include Anti-Malware information in the returned Computer object
expand = api.Expand(api.Expand.anti_malware, api.Expand.computer_settings)
# Get the computer object from Workload Security
computers_api = api.ComputersApi(api.ApiClient(configuration))
computer = computers_api.describe_computer(computer_id, api_version, expand=expand.list(), overrides=False)
# Get the Anti-Malware scan configuration id for the computer
real_time_scan_configuration_id = computer.anti_malware.real_time_scan_configuration_id
# Get the Anti-Malware properties for the computer
am_configs_api = api.AntiMalwareConfigurationsApi(api.ApiClient(configuration))
return am_configs_api.describe_anti_malware(real_time_scan_configuration_id, api_version)
コンピュータの不正プログラム対策の構成を検出する
AntiMalwareComputerExtension
オブジェクトを使用すると、次のコンピュータの不正プログラム対策設定にアクセスできます。
- 不正プログラム対策 モジュールの実行状態(オンまたはオフ)
- 不正プログラム検索設定
次の一般的な手順を使用して、お使いのコンピュータの不正プログラム対策の設定を取得してください。
Computer
オブジェクトを取得するには、ComputersApi
オブジェクトを使用します。Computer
オブジェクトを使用して、AntiMalwareComputerExtension
オブジェクトを取得します。- 不正プログラム対策 モジュールの状態を取得します。
- 検索設定を取得します。
次の例では、コンピュータの不正プログラム対策設定の特定のプロパティを取得します。
# Get the anti-malware scan configuration id for the computer
real_time_scan_configuration_id = computer.anti_malware.real_time_scan_configuration_id
# Get the anti-malware properties for the computer
am_configs_api = api.AntiMalwareConfigurationsApi(api.ApiClient(configuration))
return am_configs_api.describe_anti_malware(real_time_scan_configuration_id, api_version)
また、 List Computers, Describe a computer、および Search Computers のAPIレファレンス/参照情報。
侵入防御ルールの適用
コンピュータに適用する侵入防御ルールを決定して、必要な保護が確実に適用されるようにします。
Computer
オブジェクトを取得するには、ComputersApi
オブジェクトを使用します。Computer
オブジェクトごとに、IntrusionPreventionComputerExtension
オブジェクトを取得します。- 侵入防御 ルールのリストを取得します。
次の例では、コンピュータに適用される侵入防御ルールを取得します。
# Extract intrusion prevention rules from the computers
im_rules = {}
for computer in computers_list.computers:
im_rules[computer.host_name] = computer.intrusion_prevention.rule_ids
return im_rules
また、 List Computers, Describe a computer、および Search Computers のAPIレファレンス/参照情報。API呼び出しの認証の詳細については、 Workload Securityを参照してください。