Google SecOps CLI ユーザーガイド
Google Security Operations SDK は、ターミナルから Google SecOps プロダクトを簡単に操作できる包括的なコマンドライン インターフェース(CLI)を提供します。新しい secops
CLI は、機能が強化され、ユーザー エクスペリエンスが向上した従来の chronicle_cli
に代わるものです。
概要
secops
CLI を使用すると、次のものにアクセスできます。
- UDM イベントを検索して分析する
- フィード、フォワーダー、パーサーを管理する
- 検出ルールを作成して管理する
- アラートとケースを処理する
- 参照リストとデータテーブルを管理する
- BigQuery と Google Cloud Storage にデータをエクスポートする
- Gemini AI にセキュリティ分析情報をクエリする
- その他
Google SecOps CLI コマンドでは、次の構文を使用します。
$ secops COMMAND [SUBCOMMAND] [OPTIONS]
たとえば、イベントを検索するには:
$ secops search --query "metadata.event_type = \"NETWORK_CONNECTION\"" --time-window 24
始める前に
Google SecOps CLI をインストールする前に、次のことを確認してください。
- 環境に Python 3.8 以降がインストールされている。詳細については、Python のインストールをご覧ください。
- 適切なアクセス権限を持つ Google SecOps インスタンス。
- 認証情報(サービス アカウントまたはアプリケーションのデフォルト認証情報)。
インストール
CLI を含む SecOps SDK をインストールします。
pip install secops
インストールを確認します。
$ secops --help
認証
CLI は、複数の認証方法をサポートしています。
アプリケーションのデフォルト認証情報を使用する(推奨)
# Set up ADC with gcloud gcloud auth application-default login
サービス アカウントの使用
サービス アカウントの JSON ファイルを安全な場所に配置し、コマンドで参照します。
$ secops search --service-account "/path/to/service-account.json" --customer-id "your-instance-id" --project-id "your-project-id" --query "metadata.event_type = \"USER_LOGIN\""
構成
コマンドの繰り返しを避けるため、共通の設定を保存します。
構成を保存
# Save instance and authentication settings $ secops config set --customer-id "your-instance-id" --project-id "your-project-id" --region "us" # Save service account path (optional) $ secops config set --service-account "/path/to/service-account.json" --customer-id "your-instance-id" --project-id "your-project-id" # Set default time window $ secops config set --time-window 48
View Configuration
$ secops config view
Clear Configuration
$ secops config clear
リージョン
CLI は、すべての Google SecOps リージョンをサポートしています。リージョンは次のように設定できます。
- 任意のコマンドで
--region
フラグを指定 secops config set --region REGION
を使用した構成ファイル
サポートされているリージョンは次のとおりです。
* US
(デフォルト)
* EUROPE
* ASIA-SOUTHEAST1
* ASIA-SOUTH1
* AUSTRALIA-SOUTHEAST1
* EUROPE-WEST2
、EUROPE-WEST3
、EUROPE-WEST6
、EUROPE-WEST9
、EUROPE-WEST12
* その他
コアコマンド
検索イベント
クエリ構文を使用して UDM イベントを検索します。
# Search with UDM query $ secops search --query "metadata.event_type = \"NETWORK_CONNECTION\"" --time-window 24 --max-events 100 # Search using natural language $ secops search --nl-query "show me failed login attempts" --time-window 24 # Export results as CSV $ secops search --query "metadata.event_type = \"USER_LOGIN\" AND security_result.action = \"BLOCK\"" \ --fields "metadata.event_timestamp,principal.user.userid,principal.ip" \ --time-window 24 --csv
エンティティ情報
IP、ドメイン、ファイル ハッシュに関する詳細情報を取得する:
$ secops entity --value "8.8.8.8" --time-window 24 $ secops entity --value "example.com" --time-window 24 $ secops entity --value "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855" --time-window 24
統計情報
データに対して統計分析を実行します。
$ secops stats --query "metadata.event_type = \"NETWORK_CONNECTION\" match: target.hostname outcome: \$count = count(metadata.id) order: \$count desc" --time-window 24
Feed Management
Google SecOps でデータ取り込みフィードを管理する:
フィードの一覧表示
$ secops feed list
フィードの作成
# Create an HTTP feed $ secops feed create \ --display-name "My HTTP Feed" \ --details '{"logType":"projects/your-project-id/locations/us/instances/your-instance-id/logTypes/WINEVTLOG","feedSourceType":"HTTP","httpSettings":{"uri":"https://example.com/feed","sourceType":"FILES"}}'
フィードの更新
$ secops feed update --id "feed-123" --display-name "Updated Feed Name"
フィードを有効/無効にする
$ secops feed enable --id "feed-123" $ secops feed disable --id "feed-123"
フィードを削除
$ secops feed delete --id "feed-123"
パーサーの管理
パーサーは、未加工のログデータを処理して UDM 形式に正規化します。
パーサーの一覧表示
$ secops parser list $ secops parser list --log-type "WINDOWS"
パーサーの詳細を取得する
$ secops parser get --log-type "WINDOWS" --id "pa_12345"
パーサーを作成する
# Create from file $ secops parser create --log-type "CUSTOM_LOG" --parser-code-file "/path/to/parser.conf" # Create from string $ secops parser create --log-type "CUSTOM_LOG" --parser-code "filter { mutate { add_field => { \"test\" => \"value\" } } }"
テスト パーサー
デプロイ前にサンプルログに対してパーサーをテストします。
# Test with inline logs $ secops parser run \ --log-type OKTA \ --parser-code-file "./parser.conf" \ --log '{"message": "Test log 1"}' \ --log '{"message": "Test log 2"}' # Test with logs from file $ secops parser run \ --log-type WINDOWS \ --parser-code-file "./parser.conf" \ --logs-file "./sample_logs.txt"
パーサーを有効化/無効化する
$ secops parser activate --log-type "WINDOWS" --id "pa_12345" $ secops parser deactivate --log-type "WINDOWS" --id "pa_12345"
パーサーを削除
$ secops parser delete --log-type "WINDOWS" --id "pa_12345"
パーサー拡張機能の管理
パーサー拡張機能は、既存のパーサーを置き換えることなく拡張します。
拡張機能を一覧表示する
$ secops parser-extension list --log-type OKTA
拡張機能を作成
$ secops parser-extension create --log-type OKTA \ --log /path/to/sample.log \ --parser-config-file /path/to/parser-config.conf
拡張機能を有効にする
$ secops parser-extension activate --log-type OKTA --id "1234567890"
フォワーダー管理
転送ツールは、特定の構成でログを取り込むために使用されます。
フォワーダーの作成
# Basic forwarder $ secops forwarder create --display-name "my-custom-forwarder" # With metadata and settings $ secops forwarder create --display-name "prod-forwarder" \ --metadata '{"environment":"prod","team":"security"}' \ --upload-compression true \ --http-settings '{"port":80,"host":"example.com"}'
フォワーダーの一覧表示
$ secops forwarder list --page-size 100
Get Forwarder
$ secops forwarder get --id "1234567890"
Update Forwarder
$ secops forwarder update --id "1234567890" --display-name "updated-name"
Delete Forwarder
$ secops forwarder delete --id "1234567890"
ログの取り込み
ログを Google SecOps に取り込みます。
未加工ログを取り込む
# From file $ secops log ingest --type "OKTA" --file "/path/to/okta_logs.json" # With labels $ secops log ingest --type "WINDOWS" --file "/path/to/logs.xml" \ --labels "environment=production,team=security" # Inline message $ secops log ingest --type "WINDOWS" --message "{\"event\": \"data\"}"
UDM イベントを取り込む
$ secops log ingest-udm --file "/path/to/udm_event.json"
ログタイプの一覧を取得する
$ secops log types $ secops log types --search "windows"
UDM マッピングを生成する
$ secops log generate-udm-mapping \ --log-format "JSON" \ --log '{"id":"123","user":"test_user","source_ip":"192.168.1.10"}'
ルールの管理
検出ルールを管理する:
ルールの一覧表示
$ secops rule list --page-size 50
ルールを作成
$ secops rule create --file "/path/to/rule.yaral"
ルールの更新
$ secops rule update --id "ru_12345" --file "/path/to/updated_rule.yaral"
ルールを有効/無効にする
$ secops rule enable --id "ru_12345" --enabled true $ secops rule enable --id "ru_12345" --enabled false
Test Rule
過去のデータに対してルールをテストする:
# Test for last 24 hours $ secops rule test --file "/path/to/rule.yaral" --time-window 24 # Test with specific time range $ secops rule test --file "/path/to/rule.yaral" \ --start-time "2023-07-01T00:00:00Z" \ --end-time "2023-07-02T00:00:00Z" \ --max-results 1000
ルールを検証する
$ secops rule validate --file "/path/to/rule.yaral"
ルールを削除
$ secops rule delete --id "ru_12345"
アラート管理
アラートを取得して管理するには:
$ secops alert --time-window 24 --max-alerts 50 $ secops alert --snapshot-query "feedback_summary.status != \"CLOSED\"" --time-window 24
ケース管理
ケースの詳細を取得します。
$ secops case --ids "case-123,case-456"
データテーブル
データテーブルは、検出ルールで使用する構造化データ コレクションです。
データテーブルを作成する
$ secops data-table create \ --name "suspicious_ips" \ --description "Known suspicious IP addresses" \ --header '{"ip_address":"CIDR","description":"STRING","severity":"STRING"}'
行を追加する
$ secops data-table add-rows \ --name "suspicious_ips" \ --rows '[["192.168.1.100","Scanning activity","Medium"]]'
行の一覧表示
$ secops data-table list-rows --name "suspicious_ips"
データテーブルを削除します
$ secops data-table delete --name "suspicious_ips"
リファレンス リスト
リファレンス リストは、検出ルールの単純な値リストです。
リファレンス リストを作成する
$ secops reference-list create \ --name "admin_accounts" \ --description "Administrative accounts" \ --entries "admin,administrator,root,superuser"
リファレンス リストを更新する
$ secops reference-list update \ --name "admin_accounts" \ --entries "admin,administrator,root,superuser,sysadmin"
参照リストを一覧表示する
$ secops reference-list list
データ エクスポート
分析用のデータをエクスポートする:
エクスポートを作成
# Export specific log type $ secops export create \ --gcs-bucket "projects/my-project/buckets/my-bucket" \ --log-type "WINDOWS" \ --time-window 24 # Export all logs $ secops export create \ --gcs-bucket "projects/my-project/buckets/my-bucket" \ --all-logs \ --time-window 168
エクスポートのステータスを確認する
$ secops export status --id "export-123"
エクスポートをキャンセル
$ secops export cancel --id "export-123"
エクスポート可能なログタイプを一覧表示する
$ secops export log-types --time-window 24
Gemini AI の統合
Gemini AI にセキュリティ分析情報をクエリします。
# Ask about security concepts $ secops gemini --query "What is Windows event ID 4625?" # Generate detection rules $ secops gemini --query "Write a rule to detect PowerShell downloading files" # Get vulnerability information $ secops gemini --query "Tell me about CVE-2021-44228"
Gemini を有効にする:
$ secops gemini --opt-in
ダッシュボードの管理
ネイティブ ダッシュボードを管理する:
ダッシュボードを作成
$ secops dashboard create \ --display-name "Security Overview" \ --description "Security monitoring dashboard" \ --access-type PRIVATE
ダッシュボードの一覧表示
$ secops dashboard list --page-size 10
ダッシュボードの更新
$ secops dashboard update --id dashboard-id \ --display-name "Updated Security Dashboard" \ --description "Updated security monitoring dashboard"
ダッシュボードのエクスポート/インポート
# Export $ secops dashboard export --dashboard-names 'projects/your-project-id/locations/us/instances/your-instance-id/nativeDashboard/xxxxxxx' # Import $ secops dashboard import --dashboard-data-file dashboard_data.json
ダッシュボードにグラフを追加する
$ secops dashboard add-chart --dashboard-id dashboard-id \ --display-name "DNS Query Chart" \ --description "Shows DNS query patterns" \ --query-file dns_query.txt \ --chart_layout '{"startX": 0, "spanX": 12, "startY": 0, "spanY": 8}'
ダッシュボードを削除
$ secops dashboard delete --id dashboard-id
高度な例
パーサーのワークフローを完了する
パーサーを取得、テスト、デプロイします。
# List parsers $ secops parser list --log-type "OKTA" > okta_parsers.json # Get parser details PARSER_ID=$(cat okta_parsers.json | jq -r '.[0].name' | awk -F'/' '{print $NF}') $ secops parser get --log-type "OKTA" --id "$PARSER_ID" > parser_details.json # Extract parser code cat parser_details.json | jq -r '.cbn' | base64 -d > okta_parser.conf # Test parser $ secops parser run \ --log-type "OKTA" \ --parser-code-file "okta_parser.conf" \ --logs-file "sample_logs.txt" > parser_result.json # Activate if successful $ secops parser activate --log-type "OKTA" --id "$PARSER_ID"
検索と書き出しのワークフロー
イベントを検索して結果をエクスポートする:
# Search for failed logins $ secops search \ --query "metadata.event_type = \"USER_LOGIN\" AND security_result.action = \"BLOCK\"" \ --fields "metadata.event_timestamp,principal.user.userid,principal.ip" \ --time-window 24 \ --csv > failed_logins.csv # Get entity details for suspicious IPs cat failed_logins.csv | awk -F',' '{print $3}' | sort -u | while read ip; do secops entity --value "$ip" --time-window 72 done
ルールのテストとデプロイ
検出ルールを作成、テスト、デプロイする:
# Create rule file cat > suspicious_activity.yaral << 'EOF' rule suspicious_powershell { meta: description = "Detects suspicious PowerShell activity" severity = "Medium" events: $e.metadata.event_type = "PROCESS_LAUNCH" $e.principal.process.file.full_path = /powershell\.exe/i nocase $e.principal.process.command_line = /download|invoke-expression|hidden/i nocase condition: $e } EOF # Validate rule $ secops rule validate --file suspicious_activity.yaral # Test against historical data $ secops rule test --file suspicious_activity.yaral --time-window 168 # Create and enable if tests pass $ secops rule create --file suspicious_activity.yaral $ secops rule enable --id "ru_generated_id" --enabled true
トラブルシューティング
一般的な問題
認証エラー
認証エラーが発生した場合は、次の操作を行います。
- 認証情報が有効であることを確認する
- サービス アカウントに必要な権限があることを確認する
- ADC が正しく構成されていることを確認します。
gcloud auth application-default login
リージョン エラー
リージョン関連のエラーが発生した場合:
- リージョンがサポートされていることを確認する
- インスタンスが指定されたリージョンにあることを確認する
--region
フラグを使用するか、構成で設定する
レート制限
レート制限に関する問題の場合:
- API 呼び出しの頻度を減らす
- 大規模な結果セットにページ割り付けを使用する
- 再試行に指数バックオフを実装する
困ったときは
任意のコマンドのヘルプを表示します。
$ secops --help $ secops search --help $ secops rule create --help
chronicle_cli からの移行
以前の chronicle_cli
から移行する場合は、一般的なコマンドのマッピングは次のとおりです。
chronicle_cli | secops |
---|---|
chronicle_cli feeds create |
secops feed create |
chronicle_cli feeds list |
secops feed list |
chronicle_cli feeds update |
secops feed update |
chronicle_cli feeds delete |
secops feed delete |
chronicle_cli parsers list |
secops parser list |
chronicle_cli parsers create |
secops parser create |
chronicle_cli parsers activate |
secops parser activate |
chronicle_cli forwarders create |
secops forwarder create |
chronicle_cli forwarders list |
secops forwarder list |
新しい secops
CLI には、chronicle_cli
では使用できない次のような多くの追加機能があります。
- 自然言語検索
- Gemini AI の統合
- ダッシュボードの管理
- ルールのテストと検証
- データテーブルと参照リスト
- ケース管理
- その他