Cloud One Workload SecurityのAPIを利用してポリシー設定をしてみた
こんにちは、コンサル部@大阪オフィスのTodaです。
Cloud One Workload SecurityのAPIを利用して自動化を試しています。
今回はポリシー設定をモジュール別に設定してみました。
Cloud One Workload Securityとは?
トレンドマイクロ社が提供している製品でサーバ保護に必要な複数のセキュリティ機能を提供するクラウド型総合サーバセキュリティサービスです。
詳細は公式サイトをご覧ください。
同システムには自動化するためのAPIとSDKが用意されています。
下記マニュアルを参考に操作をしていきます。
■ Workload Security Python SDK
https://cloudone.trendmicro.com/docs/jp/workload-security/sdk-python/
■ Trend Micro Deep Security API (50.0.245)
https://cloudone.trendmicro.com/docs/workload-security/api-reference/
目標
- ポリシー設定にて各モジュール別に設定をする。
前提条件
- Python3系が動作できる環境
- Cloud One トライアル版アカウント登録し、利用できる状態
- API利用の準備編を試している
モジュールについて
CloudOneのポリシーには複数のモジュール(監視・対策に関する機能)があります。
2021年03月時点で下記モジュールが提供されています。
- 不正プログラム対策
- Webレピュテーション
- アクティビティ監視
- アプリケーションコントロール
- 変更監視
- セキュリティログ監視
- ファイアウォール
- 侵入防御
モジュール別設定
今回はモジュール別で[タブ:一般]の設定を試してみます。
細かい設定についてはTrend Micro Deep Security APIのマニュアルを参照ください。
不正プログラム対策
リアルタイム検索、手動検索、予約検索には別途作成した検索設定をID指定に指定します。
Defaultと表記されている検索設定はCloudOneのデフォルト設定になります。
サンプルコード
policy.anti_malware = deepsecurity.AntiMalwarePolicyExtension() policy.anti_malware.state = "on" # ステータス(on/off) policy.anti_malware.real_time_scan_configuration_id = 1 # リアルタイム検索 Default Real-Time Scan Configuration policy.anti_malware.real_time_scan_schedule_id = 1 # リアルタイム検索 Daily(id=1) policy.anti_malware.manual_scan_configuration_id = 2 # 手動検索 Default Manual Scan Configuration(id=2) policy.anti_malware.scheduled_scan_configuration_id = 2 # 予約検索 Default Manual Scan Configuration(id=2)
Webレピュテーション
セキュリティレベルの指定でブロック対象の範囲を指定します。
レベル(引数) | ブロック範囲 |
---|---|
High | 危険: 不正、または脅威の既知の発信源であると確認されたページ 非常に不審: 不正または脅威の発信源である可能性が疑われたページ 不審: スパムメールに関連付けられている、または感染している可能性のあるページ |
Medium | 危険: 不正、または脅威の既知の発信源であると確認されたページ 非常に不審: 不正または脅威の発信源である可能性が疑われたページ |
Low | 危険: 不正、または脅威の既知の発信源であると確認されたページ |
サンプルコード
policy.web_reputation = deepsecurity.WebReputationPolicyExtension() policy.web_reputation.state = "on" # ステータス(on/off) policy.policy_settings.web_reputation_setting_security_level = deepsecurity.SettingValue() policy.policy_settings.web_reputation_setting_security_level.value = "Medium" # セキュリティレベル(High/Medium/Low) policy.policy_settings.web_reputation_setting_security_block_untested_pages_enabled = deepsecurity.SettingValue() policy.policy_settings.web_reputation_setting_security_block_untested_pages_enabled.value = "false" # トレンドマイクロ テストなしページブロックするか(true/false)
アクティビティ監視
サンプルコード
policy.activity_monitoring = deepsecurity.ActivityMonitoringPolicyExtension() policy.activity_monitoring.state = "on" # ステータス(on/off)
アプリケーションコントロール
未承認のアプリケーション動作を許可・ブロックするルールについて指定します。
施行(引数) | ルール |
---|---|
true | 承認されていないソフトウェアを明示的に許可するまでブロック |
false | 承認されていないソフトウェアを明示的にブロックするまで許可 |
サンプルコード
policy.application_control = deepsecurity.ApplicationControlPolicyExtension() policy.application_control.state = "on" # ステータス(on/off) policy.application_control.block_unrecognized = "false" # 施行(true/false)
変更監視
ステータスの指定にてリアルタイム検索を有効化することがでます。
ステータス(引数) | 状態 | リアルタイム |
---|---|---|
real-time | ○ 有効 | ○ 有効 |
on | ○ 有効 | × 無効 |
off | × 無効 | × 無効 |
サンプルコード
policy.integrity_monitoring = deepsecurity.IntegrityMonitoringPolicyExtension() policy.integrity_monitoring.state = "real-time" # ステータス(on/off/real-time) policy.policy_settings.integrity_monitoring_setting_auto_apply_recommendations_enabled = deepsecurity.SettingValue() policy.policy_settings.integrity_monitoring_setting_auto_apply_recommendations_enabled.value = "Yes" # 自動的に適用
セキュリティログ監視
サンプルコード
policy.log_inspection = deepsecurity.LogInspectionPolicyExtension() policy.log_inspection.state = "on" # ステータス(on/off) policy.policy_settings.log_inspection_setting_auto_apply_recommendations_enabled = deepsecurity.SettingValue() policy.policy_settings.log_inspection_setting_auto_apply_recommendations_enabled.value = "Yes" # 自動的に適用
ファイアウォール
ファイアウォールステートフル設定はデフォルト5点が設定されています。
ID | 設定名 |
---|---|
1 | Enable Stateful Inspection |
2 | Deep Security Manager Stateful |
3 | Web Server Stateful |
4 | FTP Server Stateful |
5 | No Stateful Inspection |
サンプルコード
policy.firewall = deepsecurity.FirewallPolicyExtension() policy.firewall.state = "on" # ステータス(on/off) policy.firewall.global_stateful_configuration_id = 1 # ファイアウォールステートフル設定(id) policy.policy_settings.firewall_setting_virtual_and_container_network_scan_enabled = deepsecurity.SettingValue() policy.policy_settings.firewall_setting_virtual_and_container_network_scan_enabled.value = "true" # コンテナのネットワークトラフィックの検索(true/false)
侵入防御
侵入防御の動作は判定時に通信を遮断するか、記録・通知のみおこなうか設定になります。
動作(引数) | 設定名 | 通信遮断 | ログ記録、管理者に通知 |
---|---|---|---|
prevent | 防御モード | ○ 有効 | ○ 有効 |
detect | 検出モード | × 無効 | ○ 有効 |
サンプルコード
policy.intrusion_prevention = deepsecurity.IntrusionPreventionPolicyExtension() policy.intrusion_prevention.state = "detect" # 侵入防御の動作(detect/prevent) policy.policy_settings.intrusion_prevention_setting_auto_apply_recommendations_enabled = deepsecurity.SettingValue() policy.policy_settings.intrusion_prevention_setting_auto_apply_recommendations_enabled.value = "Yes" # 自動的に適用
全てのモジュール設定を合わせたサンプルスクリプト
from __future__ import print_function import sys import warnings import datetime import time import deepsecurity from deepsecurity.rest import ApiException from pprint import pprint # 初期設定 if not sys.warnoptions: warnings.simplefilter("ignore") configuration = deepsecurity.Configuration() configuration.host = 'https://cloudone.trendmicro.com/api' # API認証情報 configuration.api_key['api-secret-key'] = '[APIキー]' # APIリクエスト情報設定 api_version = 'v1' api_instance = deepsecurity.PoliciesApi(deepsecurity.ApiClient(configuration)) overrides = False # ポリシー設定 # 基本設定 policy = deepsecurity.Policy() policy.parent_id = 0 policy.name = "Sample Policy" # ポリシー名 policy.description = "Sample Policyについて" # 説明 policy.policy_settings = deepsecurity.PolicySettings() # 不正プログラム対策 Anti Malware policy.anti_malware = deepsecurity.AntiMalwarePolicyExtension() policy.anti_malware.state = "on" # ステータス(on/off) policy.anti_malware.real_time_scan_configuration_id = 1 # リアルタイム検索 Default Real-Time Scan Configuration policy.anti_malware.real_time_scan_schedule_id = 1 # リアルタイム検索 Daily(id=1) policy.anti_malware.manual_scan_configuration_id = 2 # 手動検索 Default Manual Scan Configuration(id=2) policy.anti_malware.scheduled_scan_configuration_id = 2 # 予約検索 Default Manual Scan Configuration(id=2) # Webレピュテーション Web Reputation policy.web_reputation = deepsecurity.WebReputationPolicyExtension() policy.web_reputation.state = "on" # ステータス(on/off) policy.policy_settings.web_reputation_setting_security_level = deepsecurity.SettingValue() policy.policy_settings.web_reputation_setting_security_level.value = "Medium" # セキュリティレベル(High/Medium/Low) policy.policy_settings.web_reputation_setting_security_block_untested_pages_enabled = deepsecurity.SettingValue() policy.policy_settings.web_reputation_setting_security_block_untested_pages_enabled.value = "false" # トレンドマイクロ テストなしページブロックするか(true/false) # アクティビティ監視 Activity Monitoring policy.activity_monitoring = deepsecurity.ActivityMonitoringPolicyExtension() policy.activity_monitoring.state = "on" # ステータス(on/off) # アプリケーションコントロール Application Control policy.application_control = deepsecurity.ApplicationControlPolicyExtension() policy.application_control.state = "on" # ステータス(on/off) # policy.application_control.block_unrecognized = "true" # 施行:承認されていないソフトウェアを明示的に許可するまでブロック policy.application_control.block_unrecognized = "false" # 施行:承認されていないソフトウェアを明示的にブロックするまで許可 # 変更監視 Integrity Monitoring policy.integrity_monitoring = deepsecurity.IntegrityMonitoringPolicyExtension() policy.integrity_monitoring.state = "real-time" # ステータス(on/off/real-time) policy.policy_settings.integrity_monitoring_setting_auto_apply_recommendations_enabled = deepsecurity.SettingValue() policy.policy_settings.integrity_monitoring_setting_auto_apply_recommendations_enabled.value = "Yes" # 自動的に適用 # セキュリティログ監視 Log Inspection policy.log_inspection = deepsecurity.LogInspectionPolicyExtension() policy.log_inspection.state = "on" # ステータス(on/off) policy.policy_settings.log_inspection_setting_auto_apply_recommendations_enabled = deepsecurity.SettingValue() policy.policy_settings.log_inspection_setting_auto_apply_recommendations_enabled.value = "Yes" # 自動的に適用 # ファイアウォール (設定なし) policy.firewall = deepsecurity.FirewallPolicyExtension() policy.firewall.state = "on" # ステータス(on/off) policy.firewall.global_stateful_configuration_id = 1 # ファイアウォールステートフル設定(id) policy.policy_settings.firewall_setting_virtual_and_container_network_scan_enabled = deepsecurity.SettingValue() policy.policy_settings.firewall_setting_virtual_and_container_network_scan_enabled.value = "true" # コンテナのネットワークトラフィックの検索(true/false) # 侵入防止 Intrusion Prevention policy.intrusion_prevention = deepsecurity.IntrusionPreventionPolicyExtension() policy.intrusion_prevention.state = "detect" # 侵入防御の動作(検出モード:detect/防御モード:prevent) policy.policy_settings.intrusion_prevention_setting_auto_apply_recommendations_enabled = deepsecurity.SettingValue() policy.policy_settings.intrusion_prevention_setting_auto_apply_recommendations_enabled.value = "Yes" # 自動的に適用 try: #pprint(policy) api_response = api_instance.create_policy(policy, api_version, overrides=overrides) pprint(api_response) except ApiException as e: print("An exception occurred when calling PolicyApi.create_policy: %s\n" % e)
さいごに
今回はCloud One Workload SecurityのAPIを使ってポリシー設定をしてみました。
自動化をする中で設定の操作は必要になりますのでまとめております。