このドキュメントでは、Security Command Center の検出結果を BigQuery にオンデマンドで一括エクスポートする方法について説明します。
BigQuery は、 Google Cloudのペタバイト規模の費用対効果に優れたフルマネージド型の分析データ ウェアハウスです。膨大な量のデータに対してほぼリアルタイムで分析を行うことができます。BigQuery の詳細については、BigQuery のドキュメントをご覧ください。
概要
この機能は、特定の時点までの検出結果のスナップショットを提供します。この機能は、継続的な BigQuery エクスポートを補完し、包括的な分析とレポート作成を実現します。
一括エクスポートでは、次のことができます。
データセットの構造
検出結果は、source_id
、finding_id
、event_time
でクラスタ化された findings
テーブルの行として BigQuery にエクスポートされます。
各データセットには findings
テーブルが含まれています。テーブルには次のフィールドがあります。
フィールド | 説明 |
---|---|
source_id |
Security Command Center が検出結果のソースに割り当てる一意の識別子。たとえば、Cloud Anomaly Detection を情報源とする検出結果はすべて同じ 例: |
finding_id |
検出結果を表す一意の識別子。これは、組織のソース内で一意です。英数字で、32 文字以下です。 |
event_time |
イベントが発生した時間、または検出結果の更新が発生した時間。たとえば、検出結果がオープン状態のファイアウォールを表している場合、 例: |
bulk_export_id |
一括エクスポート(プレビュー)の場合、これは UUID です。 継続的エクスポートの場合、このフィールドは空です。 |
finding |
セキュリティ、リスク、健全性、プライバシーなどの評価データの記録。Security Command Center に取り込まれ、表示、通知、分析、ポリシーテスト、適用で使用されます。たとえば、App Engine アプリケーションで見つかったクロスサイト スクリプティング(XSS)の脆弱性が記録されます。
ネストされたフィールドの詳細については、API リファレンスの |
resource |
この検出結果に関連付けられている Google Cloud リソースに関する情報。
ネストされたフィールドの詳細については、API リファレンスの |
費用
BigQuery にデータを保存すると、この機能に関連して BigQuery の料金が請求されます。詳細については、BigQuery のストレージの料金をご覧ください。
始める前に
この機能を有効にする前に、次の手順を完了する必要があります。
権限を設定する
このガイドの内容を行うには、次の Identity and Access Management(IAM)ロールが必要です。
検出結果をエクスポートする組織に対する次のいずれかのロール。
- セキュリティ センターの BigQuery Export 編集者(
roles/securitycenter.bigQueryExportsEditor
) - セキュリティ センター管理者(
roles/securitycenter.admin
)
Security Command Center のロールの詳細については、アクセス制御をご覧ください。
- セキュリティ センターの BigQuery Export 編集者(
BigQuery データセットに対する BigQuery データオーナー(
roles/bigquery.dataOwner
)BigQuery のロールの詳細については、BigQuery の IAM ロールと権限をご覧ください。
コピー先の BigQuery データセットが属するプロジェクトに対する ProjectIAMAdmin(
roles/resourcemanager.projectIamAdmin
)
BigQuery データセットを作成する
データセットを作成するの手順に沿って、BigQuery データセットを作成します。
Security Command Center API を有効にする
検出結果をエクスポートするには、次の手順で Security Command Center API を有効にする必要があります。
Google Cloud コンソールの [API ライブラリ] ページに移動します。
Security Command Center API を有効にするプロジェクトを選択します。
[検索] フィールドに「
Security Command Center
」と入力し、検索結果で [Security Command Center] をクリックします。表示された API ページで [有効にする] をクリックします。
プロジェクトで Security Command Center API が有効になります。
VPC Service Controls で境界へのアクセス権を付与する
VPC Service Controls を使用する場合は、VPC Service Controls で境界アクセスを許可するを確認し、必要に応じてこれらの手順を実施します。
この手順は、特定のサービス境界の一括エクスポートを作成するユーザーごとに繰り返す必要があります。
新しい BigQuery 一括エクスポートの上り(内向き)ルールを作成する
VPC Service Controls を使用している場合は、BigQuery への新しいエクスポートの上り(内向き)ルールを作成するを確認し、必要に応じて手順を実施します。
BigQuery 一括エクスポートの制限事項
BigQuery 一括エクスポートを作成する際は、次の制約事項を考慮してください。
- 1 つの組織で同時に実行できる一括エクスポートは 3 つのみです。
- 同じ BigQuery データセットに対して複数の非同時一括エクスポートをリクエストすると、エクスポート内の新しい検出結果が BigQuery の
findings
テーブルに追加されます。検出結果は上書きされません。
BigQuery の一括エクスポートを作成する
検出結果の一括エクスポートは、組織レベルでのみ実行できます。
検出結果の BigQuery インスタンスへの一括エクスポートを開始するには、gcloud CLI を使用して次の操作を行います。
Google Cloud コンソールに移動します。
Security Command Center API を有効にしたプロジェクトを選択します。
「Cloud Shell をアクティブにする」
をクリックします。次のコマンドを実行して、新しいエクスポート構成を作成します。
gcloud scc findings export-to-bigquery PARENT \ --dataset=DATASET_NAME \ [--location=LOCATION; default="global"] \
次のように置き換えます。
PARENT
: エクスポート スコープの相対名。形式例:organizations/ORGANIZATION_ID
DATASET_NAME
: BigQuery データセットの名前。形式例:projects/PROJECT_ID/datasets/DATASET_ID
LOCATION
: エクスポート構成を作成する Security Command Center のロケーション。データ所在地が有効になっている場合は、eu
、sa
、またはus
を使用します。それ以外の場合は、値global
を使用します。この変数の指定は任意です。たとえば、すべての検出結果の一括エクスポートを作成するには、次のコマンドを実行します。
gcloud scc findings export-to-bigquery organizations/123 --dataset=projects/123/datasets/DATASET
データ所在地の観点から見ると、上記の例ではグローバル エンドポイントが呼び出されています。
eu
エンドポイントに対して同じ一括エクスポートを作成するには、次のコマンドを実行します。gcloud scc findings export-to-bigquery organizations/123 --dataset=projects/123/datasets/DATASET --location=locations/eu
このコマンドは、エクスポートのステータスの追跡に必要な name
文字列を含む長時間実行オペレーション オブジェクトを返します。この BigQuery 一括エクスポートのステータスを追跡するには、一括エクスポートのステータスを表示するをご覧ください。
検出結果を確認するには、検出結果の確認をご覧ください。
クエリ
分析結果のデータの分析に使用できるさまざまなクエリについては、便利なクエリをご覧ください。
一括エクスポートのステータスを表示する
一括エクスポートのステータスを表示するには、一括エクスポートを作成したときに返された long running operation name
文字列が必要です。
Google Cloud コンソールに移動します。
Security Command Center API を有効にしたプロジェクトを選択します。
「Cloud Shell をアクティブにする」
をクリックします。一括エクスポート構成の詳細を確認するには、次のコマンドを実行します。
gcloud scc operations describe LONG_RUNNING_OPERATION_NAME \ --organization=ORGANIZATION_ID
次のように置き換えます。
LONG_RUNNING_OPERATION_NAME
: 一括エクスポートを作成したときに返されたname
文字列。ORGANIZATION_ID
たとえば、組織 ID が
123
の組織から返されたname: "long-running-operation-name"
の一括エクスポート リクエストのステータスを確認するには、次のコマンドを実行します。gcloud scc operations describe long-running-operation-name \ --organization=123
- エクスポートが成功した場合、レスポンスには
done: true
が含まれます。 - エクスポートが失敗した場合、レスポンスにはエラーコードが含まれます。
- エクスポートがまだ進行中の場合、レスポンスには
done: true
もエラーコードも含まれません。
BigQuery の一括エクスポートと継続的エクスポート
同じ BigQuery データセットで一括エクスポートと継続的エクスポートを同時に使用する場合は、次の 2 つの方法があります。
最初に継続的エクスポートを作成し、一括エクスポートでバックフィルします。
BigQuery データセットへの継続的なエクスポートを設定します。エクスポートが正常に作成されると、Security Command Center の検出結果がリアルタイムで受信されるようになります。
同じ宛先 BigQuery データセットを使用して一括エクスポートを作成します。エクスポート時の Security Command Center のすべての検出結果のスナップショットが、選択したデータセットにエクスポートされます。
一括エクスポートの実行には時間がかかります。したがって、継続的エクスポートが T1 で作成され、一括エクスポートが T2 でトリガーされ、一括エクスポートの検出結果のスナップショットが T3 で完了すると、T1 と T3 の間に重複するレコードが表示される可能性があります。ただし、検出結果のギャップはありません。
まず一括エクスポートを作成してから、継続的エクスポートを作成します。
一括エクスポートを作成します。エクスポートの実行時に Security Command Center のすべての検出結果のスナップショットが、選択した BigQuery データセットにエクスポートされます。
同じ宛先 BigQuery データセットへの継続的なエクスポートを設定します。エクスポートが正常に作成されると、Security Command Center の検出結果がリアルタイムで受信されるようになります。
一括エクスポートが T1 で作成され、一括エクスポートの検出結果のスナップショットが T2 で完了し、継続的エクスポートが T3 でトリガーされる場合、T2 と T3 の間の検出結果が BigQuery データセットに存在しない可能性があります。