Snowflake ログを収集する
このドキュメントでは、Snowflake ログを Google Security Operations に取り込む方法について説明します。取り込みは、Cloud Storage V2(推奨)または Amazon S3 V2 の 2 つの方法で構成できます。どちらの方法も、Snowflake 側で同じメカニズムを使用します。スケジュール設定されたタスクがアカウント使用状況データを外部ステージにアンロードし、Google SecOps がフィードでエクスポートされたファイルを読み取ります。
Snowflake は、アカウント アクティビティを SNOWFLAKE.ACCOUNT_USAGE スキーマに保存するクラウド データ プラットフォームです。LOGIN_HISTORY ビューには、クライアント IP アドレス、認証要素、失敗理由など、認証試行が記録されます。QUERY_HISTORY ビューには、アカウントで実行されたすべてのステートメントが記録されます。これには、ユーザー、ロール、ウェアハウス、アクセスされたオブジェクトが含まれます。
始める前に
次の前提条件を満たしていることを確認してください。
- Google SecOps インスタンス
- ストレージ統合(デフォルトでは
ACCOUNTADMINのみがこの権限を持つ)、データベース、ウェアハウス、ステージ、タスクを作成できるロールを持つ Snowflake へのアクセス権 - Cloud Storage V2 の場合: Cloud Storage API が有効になっている Google Cloud プロジェクトと、バケットの作成、Identity and Access Management(IAM)ロールの作成、バケット IAM ポリシーの管理を行う権限
- Amazon S3 V2 の場合: S3 バケット、IAM ポリシー、IAM ロール、IAM ユーザーを作成するための AWS への特権アクセス
Snowflake アカウントの使用状況データへのアクセス権を付与する
SNOWFLAKE.ACCOUNT_USAGE ビューは、アクセスが明示的に許可されるまで ACCOUNTADMIN のみが読み取ることができます。エクスポート専用のロールを作成し、このドキュメントでエクスポートするビューを対象とする 2 つのデータベース ロールを付与します。
- Snowflake にログインしてワークシートを開きます。
エクスポート ロールを作成し、次のようにアカウント使用状況ビューへの読み取りアクセス権を付与します。
USE ROLE ACCOUNTADMIN; CREATE ROLE IF NOT EXISTS SECOPS_EXPORTER; GRANT DATABASE ROLE SNOWFLAKE.SECURITY_VIEWER TO ROLE SECOPS_EXPORTER; GRANT DATABASE ROLE SNOWFLAKE.GOVERNANCE_VIEWER TO ROLE SECOPS_EXPORTER;エクスポートで使用するデータベース、スキーマ、ウェアハウスを作成し、次のようにロールに付与します。
CREATE DATABASE IF NOT EXISTS SECOPS_EXPORT; CREATE SCHEMA IF NOT EXISTS SECOPS_EXPORT.ACTIVITY; CREATE WAREHOUSE IF NOT EXISTS SECOPS_EXPORT_WH WITH WAREHOUSE_SIZE = 'XSMALL' AUTO_SUSPEND = 60 AUTO_RESUME = TRUE INITIALLY_SUSPENDED = TRUE; GRANT USAGE ON DATABASE SECOPS_EXPORT TO ROLE SECOPS_EXPORTER; GRANT USAGE, CREATE STAGE, CREATE TABLE, CREATE PROCEDURE, CREATE TASK, CREATE FILE FORMAT ON SCHEMA SECOPS_EXPORT.ACTIVITY TO ROLE SECOPS_EXPORTER; GRANT USAGE, OPERATE ON WAREHOUSE SECOPS_EXPORT_WH TO ROLE SECOPS_EXPORTER; GRANT EXECUTE TASK ON ACCOUNT TO ROLE SECOPS_EXPORTER; GRANT ROLE SECOPS_EXPORTER TO USER <YOUR_USER>;<YOUR_USER>は、エクスポートを所有する Snowflake ユーザーに置き換えます。
方法 1: Cloud Storage V2(推奨)
Cloud Storage バケットを作成する
- Google Cloud コンソールに移動します。
- プロジェクトを選択するか、新しいプロジェクトを作成します。
- ナビゲーション メニューで、[Cloud Storage > バケット] に移動します。
- [バケットを作成] をクリックします。
次の構成情報を提供してください。
設定 値 バケットに名前を付ける グローバルに一意の名前( snowflake-activity-logsなど)を入力します。ロケーション タイプ ニーズに応じて選択します(リージョン、デュアルリージョン、マルチリージョン)。 ロケーション 場所を選択します(例: us-central1)。ストレージ クラス Standard(アクセス頻度の高いログにおすすめ) アクセス制御 均一(推奨) 保護ツール 省略可: オブジェクトのバージョニングまたは保持ポリシーを有効にする [作成] をクリックします。
Snowflake 用のカスタム Cloud Storage ロールを作成する
- Google Cloud コンソールで、[IAM と管理] > [ロール] に移動します。
- [ロールを作成] をクリックします。
- 次の構成情報を指定します。
- タイトル: 「
Snowflake Unload」と入力します。 - ID: 「
snowflake_unload」と入力します。 - ロールのリリース段階: [一般提供] を選択します。
- タイトル: 「
- [権限を追加] をクリックし、次の権限を追加します。
storage.buckets.getstorage.objects.createstorage.objects.deletestorage.objects.list
[作成] をクリックします。
Cloud Storage 用の Snowflake ストレージ統合を作成する
Snowflake ワークシートで、次のようにストレージ統合を作成します。
USE ROLE ACCOUNTADMIN; CREATE STORAGE INTEGRATION SECOPS_GCS_INT TYPE = EXTERNAL_STAGE STORAGE_PROVIDER = 'GCS' ENABLED = TRUE STORAGE_ALLOWED_LOCATIONS = ('gcs://snowflake-activity-logs/snowflake/'); GRANT USAGE ON INTEGRATION SECOPS_GCS_INT TO ROLE SECOPS_EXPORTER;snowflake-activity-logsは、使用するバケット名に置き換えてください。
Snowflake が統合用に作成したサービス アカウントを次のように取得します。
DESC STORAGE INTEGRATION SECOPS_GCS_INT;STORAGE_GCP_SERVICE_ACCOUNTプロパティの値をコピーします。値の形式は次のとおりです。service-account-id@project1-123456.iam.gserviceaccount.com
Snowflake サービス アカウントにバケットへのアクセス権を付与する
- Google Cloud コンソールで、[Cloud Storage>バケット] に移動します。
- 作成したバケット(
snowflake-activity-logsなど)をクリックします。 - [権限] タブに移動します。
- [アクセス権を付与] をクリックします。
- 次の構成情報を指定します。
- プリンシパルを追加:
STORAGE_GCP_SERVICE_ACCOUNT値を貼り付けます - 役割を割り当てる: [Snowflake Unload] を選択します。
- プリンシパルを追加:
- [保存] をクリックします。
ファイル形式と外部ステージを作成する
Snowflake ワークシートで、バケットに書き込むファイル形式とステージを次のように作成します。
USE ROLE SECOPS_EXPORTER; USE SCHEMA SECOPS_EXPORT.ACTIVITY; CREATE OR REPLACE FILE FORMAT SECOPS_JSON_FORMAT TYPE = JSON; CREATE OR REPLACE STAGE SECOPS_EXPORT_STAGE URL = 'gcs://snowflake-activity-logs/snowflake/' STORAGE_INTEGRATION = SECOPS_GCS_INT FILE_FORMAT = SECOPS_JSON_FORMAT;
エクスポート状態テーブルを作成する
エクスポートでは、各ビューで読み取った範囲が追跡されます。この透かしがないと、実行ごとにビュー全体が再エクスポートされ、同じイベントが再度取り込まれます。
次のように状態テーブルを作成してシードします。
CREATE TABLE IF NOT EXISTS SECOPS_EXPORT_STATE ( VIEW_NAME STRING NOT NULL, LAST_EXPORTED TIMESTAMP_LTZ NOT NULL, WINDOW_END TIMESTAMP_LTZ ); INSERT INTO SECOPS_EXPORT_STATE (VIEW_NAME, LAST_EXPORTED) SELECT 'LOGIN_HISTORY', DATEADD('day', -7, CURRENT_TIMESTAMP()) UNION ALL SELECT 'QUERY_HISTORY', DATEADD('day', -7, CURRENT_TIMESTAMP());
エクスポート プロシージャを作成する
両方のビューをアンロードしてウォーターマークを進めるプロシージャを次のように作成します。
CREATE OR REPLACE PROCEDURE SECOPS_EXPORT_ACTIVITY() RETURNS STRING LANGUAGE SQL AS $$ BEGIN UPDATE SECOPS_EXPORT_STATE SET WINDOW_END = DATEADD('hour', -3, CURRENT_TIMESTAMP()); COPY INTO @SECOPS_EXPORT_STAGE/login_history/ FROM ( SELECT OBJECT_CONSTRUCT( 'application', 'snowflake', 'log_type', 'login_history', 'EVENT_TIMESTAMP', EVENT_TIMESTAMP, 'EVENT_TYPE', EVENT_TYPE, 'USER_NAME', USER_NAME, 'CLIENT_IP', CLIENT_IP, 'REPORTED_CLIENT_TYPE', REPORTED_CLIENT_TYPE, 'REPORTED_CLIENT_VERSION', REPORTED_CLIENT_VERSION, 'FIRST_AUTHENTICATION_FACTOR', FIRST_AUTHENTICATION_FACTOR, 'SECOND_AUTHENTICATION_FACTOR', SECOND_AUTHENTICATION_FACTOR, 'IS_SUCCESS', IS_SUCCESS, 'ERROR_CODE', ERROR_CODE, 'ERROR_MESSAGE', ERROR_MESSAGE) FROM SNOWFLAKE.ACCOUNT_USAGE.LOGIN_HISTORY WHERE EVENT_TIMESTAMP > (SELECT LAST_EXPORTED FROM SECOPS_EXPORT_STATE WHERE VIEW_NAME = 'LOGIN_HISTORY') AND EVENT_TIMESTAMP <= (SELECT WINDOW_END FROM SECOPS_EXPORT_STATE WHERE VIEW_NAME = 'LOGIN_HISTORY') ) FILE_FORMAT = (TYPE = JSON) INCLUDE_QUERY_ID = TRUE; UPDATE SECOPS_EXPORT_STATE SET LAST_EXPORTED = WINDOW_END WHERE VIEW_NAME = 'LOGIN_HISTORY'; COPY INTO @SECOPS_EXPORT_STAGE/query_history/ FROM ( SELECT OBJECT_CONSTRUCT( 'application', 'snowflake', 'log_type', 'query_history', 'START_TIME', START_TIME, 'END_TIME', END_TIME, 'QUERY_ID', QUERY_ID, 'QUERY_TYPE', QUERY_TYPE, 'EXECUTION_STATUS', EXECUTION_STATUS, 'ERROR_MESSAGE', ERROR_MESSAGE, 'USER_NAME', USER_NAME, 'ROLE_NAME', ROLE_NAME, 'WAREHOUSE_NAME', WAREHOUSE_NAME, 'WAREHOUSE_SIZE', WAREHOUSE_SIZE, 'DATABASE_NAME', DATABASE_NAME, 'SCHEMA_NAME', SCHEMA_NAME, 'SESSION_ID', SESSION_ID, 'BYTES_SCANNED', BYTES_SCANNED, 'ROWS_PRODUCED', ROWS_PRODUCED, 'TOTAL_ELAPSED_TIME', TOTAL_ELAPSED_TIME) FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY WHERE START_TIME > (SELECT LAST_EXPORTED FROM SECOPS_EXPORT_STATE WHERE VIEW_NAME = 'QUERY_HISTORY') AND START_TIME <= (SELECT WINDOW_END FROM SECOPS_EXPORT_STATE WHERE VIEW_NAME = 'QUERY_HISTORY') ) FILE_FORMAT = (TYPE = JSON) INCLUDE_QUERY_ID = TRUE; UPDATE SECOPS_EXPORT_STATE SET LAST_EXPORTED = WINDOW_END WHERE VIEW_NAME = 'QUERY_HISTORY'; RETURN 'Export completed'; END; $$;
手順の各要素には理由があります。
- ウィンドウは現在の時刻の 3 時間後に閉じます。Snowflake は
LOGIN_HISTORYに最大 2 時間のレイテンシ、QUERY_HISTORYに最大 45 分のレイテンシでデータを入力するため、今すぐ終了するウィンドウでは、ビューがまだマテリアライズされていない行がスキップされます。そのため、イベントは発生から約 3 時間後に Google SecOps に到達します。遅延を短縮すると、鮮度と引き換えに取引の完全性が低下します。 WINDOW_ENDはアンロード前にテーブルに書き込まれるため、COPY INTOステートメントで使用される値とLAST_EXPORTEDに書き戻される値は同じになります。2 つ目のステートメントで現在時刻を再計算すると、その間に発生したすべての処理がスキップされます。- 各
LAST_EXPORTED更新は、独自のCOPY INTOステートメントの後に実行されます。アンロードが失敗すると、手順が停止し、透かしは元の位置に残り、次の実行ではそのウィンドウがスキップされずに繰り返されます。 INCLUDE_QUERY_ID = TRUEはすべてのファイル名に UUID を追加します。これがないと、アンロードされたファイルの名前はdata_0_0_0になり、同じパスへのエクスポートが繰り返されると競合が発生します。Snowflake は、これをステージ内の重複データの原因として文書化しています。
エクスポート タスクのスケジュールを設定する
次のようにタスクを作成して開始します。
CREATE OR REPLACE TASK SECOPS_EXPORT_TASK WAREHOUSE = SECOPS_EXPORT_WH SCHEDULE = 'USING CRON 0 * * * * UTC' AS CALL SECOPS_EXPORT_ACTIVITY(); ALTER TASK SECOPS_EXPORT_TASK RESUME;スケジュールを待たずに設定を検証するには、タスクを 1 回実行します。
EXECUTE TASK SECOPS_EXPORT_TASK;実行結果とステージに到達したファイルは、次のように確認します。
SELECT NAME, STATE, ERROR_MESSAGE, SCHEDULED_TIME FROM TABLE(INFORMATION_SCHEMA.TASK_HISTORY(TASK_NAME => 'SECOPS_EXPORT_TASK')) ORDER BY SCHEDULED_TIME DESC LIMIT 5; LIST @SECOPS_EXPORT_STAGE;
Google SecOps サービス アカウントを取得する
Google SecOps は、一意のサービス アカウントを使用して Cloud Storage バケットからデータを読み取ります。このサービス アカウントにバケットへのアクセス権を付与する必要があります。
- [SIEM 設定] > [フィード] に移動します。
- [Add New Feed] をクリックします。
- [単一フィードを設定] をクリックします。
- [フィード名] フィールドに、フィードの名前を入力します(例:
Snowflake activity logs)。 - [ソースタイプ] として [Google Cloud Storage V2] を選択します。
- [ログタイプ] として [Snowflake] を選択します。
- [サービス アカウントを取得する] をクリックします。
一意のサービス アカウントのメールアドレスが表示されます(例:)。
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.comこのメールアドレスをコピーして、次のステップで使用します。
[次へ] をクリックします。
次の入力パラメータの値を指定します。
ストレージ バケット URL: 接頭辞パスを含む Cloud Storage バケット URI を入力します。
gs://snowflake-activity-logs/snowflake/
Source deletion option: 必要に応じて削除オプションを選択します。
- ファイルを削除しない: ソースからファイルを削除しません(テストに推奨)。
- 転送されたファイルと空のディレクトリを削除する: フェッチが正常に完了した後、ソースからファイルと空のディレクトリを削除します。
ファイルの最大経過日数: 過去の日数以内に変更されたファイルを含めます(デフォルトは 180 日)。
アセットの名前空間: アセットの名前空間
Ingestion labels: このフィードのイベントに適用されるラベル
[次へ] をクリックします。
[Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。
Google SecOps サービス アカウントに IAM 権限を付与する
Google SecOps サービス アカウントには、Cloud Storage バケットに対する 2 つのロールが必要です。ログ オブジェクトを読み取るための Storage Object Viewer と、バケットのメタデータを読み取るためのバケットレベルのロールです。
- [Cloud Storage] > [バケット] に移動します。
- バケット名をクリックします。
- [権限] タブに移動します。
- [アクセス権を付与] をクリックします。
- 次の構成情報を指定します。
- プリンシパルを追加: Google SecOps サービス アカウントのメールアドレスを貼り付けます。
- ロールを割り当てる: 次の両方を選択します。
- Storage オブジェクト閲覧者: ログオブジェクトを読み取ります。
- Storage レガシー バケット読み取り: バケット メタデータを読み取ります。[転送されたファイルと空のディレクトリを削除する] 削除オプションを選択した場合は、代わりに [Storage Legacy Bucket Writer] を選択します。これにより、削除権限も付与されます。
- [保存] をクリックします。
方法 2: Amazon S3 V2
ログを Amazon S3 に保存する必要がある場合は、この方法を使用します。Snowflake 側は、ストレージ統合とステージを除いて同じであるため、方法 1 のエクスポート手順とタスクは変更せずに再利用されます。
Amazon S3 バケットを構成する
- バケットの作成のユーザーガイドに沿って、Amazon S3 バケットを作成します。
- バケットの名前とリージョンを保存して、後で参照できるようにします。例:
snowflake-activity-logs
Snowflake AWS IAM ポリシーを構成する
- AWS Management Console にログインします。
- [IAM] を検索して選択します。
- [Account settings] を選択します。
- [エンドポイント] リストの [Security Token Service(STS)] で、アカウントが配置されている Snowflake リージョンを見つけます。
- STS のステータスが非アクティブの場合は、切り替えを [有効] に移動します。
- [ポリシー] を選択します。
- [ポリシーを作成] を選択します。
- [ポリシー エディタ] で [JSON] を選択します。
次のポリシーをコピーして貼り付けます。このポリシーは、1 つのバケットとフォルダパスにデータをアンロードするために必要な権限を Snowflake に付与します。
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:PutObject", "s3:GetObject", "s3:GetObjectVersion", "s3:DeleteObject", "s3:DeleteObjectVersion" ], "Resource": "arn:aws:s3:::snowflake-activity-logs/snowflake/*" }, { "Effect": "Allow", "Action": [ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource": "arn:aws:s3:::snowflake-activity-logs", "Condition": { "StringLike": { "s3:prefix": [ "snowflake/*" ] } } } ] }[次へ] をクリックします。
[ポリシー名](
snowflake_accessなど)と、必要に応じて説明を入力します。[ポリシーを作成] をクリックします。
Snowflake AWS IAM ロールを構成する
- [IAM] で、[ロール] を選択します。
- [ロールを作成] をクリックします。
- 信頼できるエンティティ タイプとして [AWS account] を選択します。
- [Another AWS account] を選択します。
- [アカウント ID] フィールドに、ご自身の AWS アカウント ID を一時的に入力します。信頼関係は後で変更し、Snowflake へのアクセス権を付与します。
- [外部 ID の要求] オプションを選択します。
- プレースホルダ ID(
0000など)を入力します。後で、ストレージ統合の外部 ID に置き換えます。 - [次へ] をクリックします。
- 前に作成した IAM ポリシーを選択します。
- [次へ] をクリックします。
- ロールの名前と説明を入力します。
- [ロールを作成] をクリックします。
- ロールの概要ページで、[ロール ARN] の値をコピーして保存します。
Amazon S3 用の Snowflake ストレージ統合を作成する
Snowflake ワークシートで、次のようにストレージ統合を作成します。
USE ROLE ACCOUNTADMIN; CREATE STORAGE INTEGRATION SECOPS_S3_INT TYPE = EXTERNAL_STAGE STORAGE_PROVIDER = 'S3' ENABLED = TRUE STORAGE_AWS_ROLE_ARN = '<IAM_ROLE_ARN>' STORAGE_ALLOWED_LOCATIONS = ('s3://snowflake-activity-logs/snowflake/'); GRANT USAGE ON INTEGRATION SECOPS_S3_INT TO ROLE SECOPS_EXPORTER;<IAM_ROLE_ARN>は、保存したロール ARN に置き換えます。
Snowflake が統合用に作成した AWS ID を次のように取得します。
DESC INTEGRATION SECOPS_S3_INT;次のプロパティの値をコピーして保存します。
- STORAGE_AWS_IAM_USER_ARN
- STORAGE_AWS_EXTERNAL_ID
Snowflake IAM ユーザーにバケットへのアクセス権を付与する
- AWS Management Console に移動します。
- [IAM] > [ロール] を選択します。
- 前に作成したロールを選択します。
- [信頼関係] タブを選択します。
- [信頼ポリシーを編集] をクリックします。
DESC INTEGRATIONの出力値を使用して、ポリシー ドキュメントを次のように更新します。{ "Version": "2012-10-17", "Statement": [ { "Sid": "", "Effect": "Allow", "Principal": { "AWS": "<STORAGE_AWS_IAM_USER_ARN>" }, "Action": "sts:AssumeRole", "Condition": { "StringEquals": { "sts:ExternalId": "<STORAGE_AWS_EXTERNAL_ID>" } } } ] }[ポリシーの更新] をクリックします。
ファイル形式、ステージ、エクスポート オブジェクトを作成する
Snowflake ワークシートで、バケットに書き込むファイル形式とステージを次のように作成します。
USE ROLE SECOPS_EXPORTER; USE SCHEMA SECOPS_EXPORT.ACTIVITY; CREATE OR REPLACE FILE FORMAT SECOPS_JSON_FORMAT TYPE = JSON; CREATE OR REPLACE STAGE SECOPS_EXPORT_STAGE URL = 's3://snowflake-activity-logs/snowflake/' STORAGE_INTEGRATION = SECOPS_S3_INT FILE_FORMAT = SECOPS_JSON_FORMAT;メソッド 1 の説明に沿って、エクスポート状態テーブルを作成する、エクスポート プロシージャを作成する、エクスポート タスクをスケジュールするの各セクションで説明されているとおりに、状態テーブル、プロシージャ、タスクを作成します。ステートメントはステージを名前で参照するため、変更は必要ありません。
Google SecOps 用に AWS IAM を構成する
- AWS Management Console にログインします。
- IAM ユーザーの作成のユーザーガイドに沿って、ユーザーを作成します。
- 作成したユーザーを選択します。
- [セキュリティ認証情報] タブを選択します。
- [アクセスキー] セクションで、[アクセスキーを作成] をクリックします。
- [ユースケース] で [サードパーティ サービス] を選択します。
- [次へ] をクリックします。
- 省略可: 説明タグを追加します。
- [アクセスキーを作成] をクリックします。
- [.csv ファイルをダウンロード] をクリックして、[アクセスキー] と [シークレット アクセスキー] を保存し、今後の参照に備えます。
- [完了] をクリックします。
- [権限] タブを選択します。
- [権限ポリシー] セクションで、[権限を追加] をクリックします。
- [権限を追加] を選択します。
- [ポリシーを直接アタッチする] を選択します。
- AmazonS3FullAccess ポリシーを検索して選択します。
- [次へ] をクリックします。
- [権限を追加] をクリックします。
Snowflake のログを取り込むように Google SecOps でフィードを構成する
- [SIEM 設定] > [フィード] に移動します。
- [Add New Feed] をクリックします。
- 次のページで、[単一のフィードを設定] をクリックします。
- [フィード名] フィールドに、フィードの名前を入力します(例:
Snowflake activity logs)。 - [ソースタイプ] として [Amazon S3 V2] を選択します。
- [ログタイプ] として [Snowflake] を選択します。
- [次へ] をクリックします。
次の入力パラメータの値を次のように指定します。
- S3 URI:
s3://snowflake-activity-logs/snowflake/ - Source deletion option: 必要に応じて削除オプションを選択します。
- ファイルの最大経過日数: 過去の日数以内に変更されたファイルを含めます(デフォルトは 180 日)。
- アクセスキー ID: S3 バケットにアクセスできるユーザー アクセスキー
- シークレット アクセスキー: S3 バケットにアクセスできるユーザーのシークレット キー
- アセットの名前空間: アセットの名前空間
- Ingestion labels: このフィードのイベントに適用されるラベル
- S3 URI:
[次へ] をクリックします。
[Finalize] 画面で新しいフィードの設定を確認し、[送信] をクリックします。
UDM マッピング テーブル
| ログフィールド | UDM マッピング | ロジック |
|---|---|---|
column4_label |
additional.fields |
統合済み |
column7_label |
additional.fields |
統合済み |
first_authentication_factor_label |
additional.fields |
統合済み |
host_list |
additional.fields |
統合済み |
query_text_label |
additional.fields |
統合済み |
query_type_label |
additional.fields |
統合済み |
roleIds_list |
additional.fields |
統合済み |
roleNames_list |
additional.fields |
統合済み |
rolecount_label |
additional.fields |
統合済み |
user_count_label |
additional.fields |
統合済み |
has_principal |
extensions.auth.type |
マッピング: true → AUTHTYPE_UNSPECIFIED |
START_TIME |
metadata.event_timestamp |
yyyy-MM-dd HH:mm:ss.SSS Z として解析済み |
column2 |
metadata.event_timestamp |
yyyy-MM-dd HH:mm:ss.SSS Z として解析済み |
column20 |
metadata.event_timestamp |
yyyy-MM-dd HH:mm:ss.SSS Z として解析済み |
ts |
metadata.event_timestamp |
ISO8601 として解析済み |
event_type |
metadata.event_type |
直接マッピングされます。 |
has_principal |
metadata.event_type |
マッピング: true → NETWORK_CONNECTION、true → STATUS_UPDATE、true → USER_LOGIN |
has_principal_user |
metadata.event_type |
マッピング: true → USER_UNCATEGORIZED |
column10 |
metadata.product_event_type |
直接マッピングされます。 |
QUERY_ID |
metadata.product_log_id |
直接マッピングされます。 |
column1 |
metadata.product_log_id |
直接マッピングされます。 |
column6 |
metadata.product_version |
直接マッピングされます。 |
SESSION_ID |
network.http.session_id |
直接マッピングされます。 |
RECEIVED_BYTES |
network.received_bytes |
名前変更済み/マッピング済み |
BYTES_SENT_OVER_THE_NETWORK |
network.sent_bytes |
名前変更済み/マッピング済み |
SENT_BYTES |
network.sent_bytes |
名前変更済み/マッピング済み |
APPLICATION |
principal.application |
直接マッピングされます。 |
data.user_name |
principal.asset.hostname |
直接マッピングされます。 |
CLIENT_IP |
principal.asset.ip |
統合済み |
IP |
principal.asset.ip |
統合済み |
column5 |
principal.asset.ip |
統合済み |
SOURCE_REGION |
principal.cloud.availability_zone |
直接マッピングされます。 |
SOURCE_CLOUD |
principal.cloud.environment |
マッピング: (?i)azure → MICROSOFT_AZURE、(?i)amazon → AMAZON_WEB_SERVICES、(?i)google ... |
data.user_name |
principal.hostname |
直接マッピングされます。 |
CLIENT_IP |
principal.ip |
統合済み |
IP |
principal.ip |
統合済み |
column5 |
principal.ip |
統合済み |
OS |
principal.platform |
マッピング: (?i)Linux → LINUX、(?i)windows → WINDOWS、(?i)mac/ios → MAC |
OS_VERSION |
principal.platform_version |
直接マッピングされます。 |
SOURCE_CLOUD_label |
principal.resource.attribute.labels |
統合済み |
roles |
principal.user.attribute.roles |
統合済み |
data.role_name |
principal.user.role_name |
直接マッピングされます。 |
column9 |
principal.user.user_display_name |
直接マッピングされます。 |
USER_NAME |
principal.user.userid |
直接マッピングされます。 |
column10 |
principal.user.userid |
直接マッピングされます。 |
column3 |
principal.user.userid |
直接マッピングされます。 |
EXECUTION_STATUS |
security_result.action |
マッピング: (?i)success → action、(?i)fail → security_result_action_block |
STATUS |
security_result.action |
マッピング: (?i)success → action、(?i)fail → action |
action |
security_result.action |
統合済み |
security_result_action_block |
security_result.action |
統合済み |
OCSP_MODE |
security_result.action_details |
直接マッピングされます。 |
column11 |
security_result.action_details |
直接マッピングされます。 |
column3 |
security_result.action_details |
直接マッピングされます。 |
BYTES_DELETED_label |
security_result.detection_fields |
統合済み |
BYTES_READ_FROM_RESULT_label |
security_result.detection_fields |
統合済み |
BYTES_SCANNED_label |
security_result.detection_fields |
統合済み |
BYTES_SPILLED_TO_LOCAL_STORAGE_label |
security_result.detection_fields |
統合済み |
BYTES_SPILLED_TO_REMOTE_STORAGE_label |
security_result.detection_fields |
統合済み |
BYTES_WRITTEN_TO_RESULT_label |
security_result.detection_fields |
統合済み |
BYTES_WRITTEN_label |
security_result.detection_fields |
統合済み |
CHILD_QUERIES_WAIT_TIME_label |
security_result.detection_fields |
統合済み |
CLUSTER_NUMBER_label |
security_result.detection_fields |
統合済み |
COMPILATION_TIME_label |
security_result.detection_fields |
統合済み |
CREDITS_USED_CLOUD_SERVICES_label |
security_result.detection_fields |
統合済み |
DATABASE_ID_label |
security_result.detection_fields |
統合済み |
DATABASE_NAME_label |
security_result.detection_fields |
統合済み |
END_TIME_label |
security_result.detection_fields |
統合済み |
ERROR_MESSAGE_label |
security_result.detection_fields |
統合済み |
EXECUTION_TIME_label |
security_result.detection_fields |
統合済み |
EXTERNAL_FUNCTION_TOTAL_INVOCATIONS_label |
security_result.detection_fields |
統合済み |
EXTERNAL_FUNCTION_TOTAL_RECEIVED_BYTES_label |
security_result.detection_fields |
統合済み |
EXTERNAL_FUNCTION_TOTAL_RECEIVED_ROWS_label |
security_result.detection_fields |
統合済み |
EXTERNAL_FUNCTION_TOTAL_SENT_BYTES_label |
security_result.detection_fields |
統合済み |
EXTERNAL_FUNCTION_TOTAL_SENT_ROWS_label |
security_result.detection_fields |
統合済み |
INBOUND_DATA_TRANSFER_BYTES_label |
security_result.detection_fields |
統合済み |
IS_CLIENT_GENERATED_STATEMENT_label |
security_result.detection_fields |
統合済み |
LIST_EXTERNAL_FILES_TIME_label |
security_result.detection_fields |
統合済み |
OUTBOUND_DATA_TRANSFER_BYTES_label |
security_result.detection_fields |
統合済み |
PARTITIONS_SCANNED_label |
security_result.detection_fields |
統合済み |
PARTITIONS_TOTAL_label |
security_result.detection_fields |
統合済み |
PERCENTAGE_SCANNED_FROM_CACHE_label |
security_result.detection_fields |
統合済み |
QUERY_ACCELERATION_BYTES_SCANNED_label |
security_result.detection_fields |
統合済み |
QUERY_ACCELERATION_PARTITIONS_SCANNED_label |
security_result.detection_fields |
統合済み |
QUERY_ACCELERATION_UPPER_LIMIT_SCALE_FACTOR_label |
security_result.detection_fields |
統合済み |
QUERY_HASH_VERSION_label |
security_result.detection_fields |
統合済み |
QUERY_HASH_label |
security_result.detection_fields |
統合済み |
QUERY_LOAD_PERCENT_label |
security_result.detection_fields |
統合済み |
QUERY_PARAMETERIZED_HASH_VERSION_label |
security_result.detection_fields |
統合済み |
QUERY_TAG_label |
security_result.detection_fields |
統合済み |
QUERY_TYPE_label |
security_result.detection_fields |
統合済み |
QUEUED_OVERLOAD_TIME_label |
security_result.detection_fields |
統合済み |
QUEUED_PROVISIONING_TIME_label |
security_result.detection_fields |
統合済み |
QUEUED_REPAIR_TIME_label |
security_result.detection_fields |
統合済み |
RELEASE_VERSION_label |
security_result.detection_fields |
統合済み |
ROLE_TYPE_label |
security_result.detection_fields |
統合済み |
ROWS_DELETED_label |
security_result.detection_fields |
統合済み |
ROWS_INSERTED_label |
security_result.detection_fields |
統合済み |
ROWS_PRODUCED_label |
security_result.detection_fields |
統合済み |
ROWS_UNLOADED_label |
security_result.detection_fields |
統合済み |
ROWS_UPDATED_label |
security_result.detection_fields |
統合済み |
ROWS_WRITTEN_TO_RESULT_label |
security_result.detection_fields |
統合済み |
SCHEMA_ID_label |
security_result.detection_fields |
統合済み |
SCHEMA_NAME_label |
security_result.detection_fields |
統合済み |
TOTAL_ELAPSED_TIME_label |
security_result.detection_fields |
統合済み |
TRANSACTION_BLOCKED_TIME_label |
security_result.detection_fields |
統合済み |
TRANSACTION_ID_label |
security_result.detection_fields |
統合済み |
WAREHOUSE_ID_label |
security_result.detection_fields |
統合済み |
WAREHOUSE_NAME_label |
security_result.detection_fields |
統合済み |
WAREHOUSE_SIZE_label |
security_result.detection_fields |
統合済み |
WAREHOUSE_TYPE_label |
security_result.detection_fields |
統合済み |
authentication_factor_label |
security_result.detection_fields |
統合済み |
column4_label |
security_result.detection_fields |
統合済み |
column6_label |
security_result.detection_fields |
統合済み |
column7_label |
security_result.detection_fields |
統合済み |
column8_label |
security_result.detection_fields |
統合済み |
event_id_label |
security_result.detection_fields |
統合済み |
event_type_label |
security_result.detection_fields |
統合済み |
is_success_label |
security_result.detection_fields |
統合済み |
python_compiler_label |
security_result.detection_fields |
統合済み |
python_runtime_label |
security_result.detection_fields |
統合済み |
python_version_label |
security_result.detection_fields |
統合済み |
reported_client_type_label |
security_result.detection_fields |
統合済み |
reported_client_version_label |
security_result.detection_fields |
統合済み |
tracing_label |
security_result.detection_fields |
統合済み |
EXECUTION_STATUS |
security_result.summary |
直接マッピングされます。 |
STATUS |
security_result.summary |
直接マッピングされます。 |
column17 |
security_result.summary |
直接マッピングされます。 |
TARGET_REGION |
target.cloud.availability_zone |
直接マッピングされます。 |
TARGET_CLOUD |
target.cloud.environment |
マッピング: (?i)azure → MICROSOFT_AZURE、(?i)amazon → AMAZON_WEB_SERVICES、(?i)google ... |
TARGET_CLOUD_label |
target.resource.attribute.labels |
統合済み |
column2_label |
target.resource.attribute.labels |
統合済み |
column7_label |
target.resource.attribute.labels |
統合済み |
USER_NAME |
target.user.userid |
直接マッピングされます。 |
column4 |
target.user.userid |
直接マッピングされます。 |
| なし | extensions.auth.type |
定数: AUTHTYPE_UNSPECIFIED |
| なし | metadata.event_type |
定数: NETWORK_CONNECTION |
| なし | metadata.product_name |
定数: SNOWFLAKE |
| なし | metadata.vendor_name |
定数: SNOWFLAKE |
| なし | principal.cloud.environment |
定数: MICROSOFT_AZURE |
| なし | principal.platform |
定数: LINUX |
| なし | target.cloud.environment |
定数: MICROSOFT_AZURE |
変更ログ
さらにサポートが必要な場合 コミュニティ メンバーや Google SecOps のプロフェッショナルから回答を得ることができます。