クエリを使用してセキュリティ グラフを調べる

Security Command Center のセキュリティ グラフは、クラウド リソース、その構成、関連するリスク指標(脆弱性、アクセス権限、データの機密性、ネットワークの公開など)をマッピングする関係認識データベースです。グラフには、クラウド アセットとその関係の全体像が表示されます。

このドキュメントでは、カスタムクエリを作成してセキュリティ グラフを探索し、環境内の潜在的なセキュリティ上の懸念事項を特定できる機能であるグラフ検索について説明します。

クエリ コンポーネント

セキュリティ グラフのクエリは、次の 3 つの主要なコンポーネント タイプで構成されます。

  • ノード: セキュリティの検出結果またはクラウド リソース。
  • WHERE 句(フィルタ): ノードに適用され、ノードの特定のプロパティに基づいてクエリを絞り込むフィルタ。
  • 接続: 2 つのノード間の方向性のある関係。

次の例は、これらのコンポーネントを使用して Google Cloud コンソールに表示されるクエリの例です。

さまざまなコンポーネントを使用した Security Command Center グラフクエリの例
さまざまなコンポーネントを使用する Security Command Center グラフクエリの例

このクエリ構造の例では、セキュリティ エンティティ間の関係を特定して、リスクを特定します。まず、クエリは調査の主要な対象(ノード)、つまり CVE 脆弱性仮想マシン(GCE)を確立します。「影響する」というフレーズで識別される接続は、これら 2 つのノードを明示的にリンクします。最後に、各ノードの複数の属性(WHERE 句またはフィルタ)を使用してクエリを微調整します。ここで使用されるフィルタには、脆弱性の重大度や VM のネットワーク到達可能性などがあります。これらのコンポーネントは、環境内のリスクを示す可能性のあるリソースを特定するのに役立ちます。

ノード

ノードは、セキュリティ検出結果またはクラウド リソースを表します。

Google Cloud コンソールのノードの例を次に示します。

  • CVE 脆弱性: MITRE Corporation によって定義された共通脆弱性識別子の脆弱性。
  • 仮想マシン(GCE): Compute Engine インスタンス。
  • GKE Deployment: Google Kubernetes Engine リソース。
  • IAM サービス アカウント: Identity and Access Management(IAM)サービス アカウント
  • BigQuery データセット: BigQuery のデータ コンテナ。詳細については、データセットの概要をご覧ください。

ノードは、コンピューティング、Kubernetes、ID、データベースなどのカテゴリでグループ化されます。クエリの作成時に、Google Cloud コンソールで利用可能なすべてのノードタイプを参照または検索できます。

Where 句(フィルタ)

where 句は、ノードに適用されるフィルタです。ノードに関連付けられた特定のプロパティに基づいてクエリを絞り込みます。

フィルタの例を次に示します。

  • 重大度 = 重大: 重大度の高い項目(CVE など)。
  • Has Full API Access = True: ノードがすべての Google Cloud API への完全アクセス権で構成されていることを示します。
  • 悪用アクティビティ = 確認済み: 脆弱性が実際に悪用されていることが判明している、そのように報告されている、またはそのように予測されているケースがあることを示します。

Google Cloud コンソールに表示されるフィルタはコンテキスト認識型であり、選択したノードのタイプによって異なります。

接続

接続は、2 つのノード間の方向性のある関係です。

接続の例を次に示します。

  • that affects: 選択した 2 つのノード間の関係を定義します(例: 仮想マシン(GCE)に関連する CVE 脆弱性)。
  • that uses: 選択した 2 つのノード間の関係を定義します(例: IAM サービス アカウントに関連する仮想マシン(GCE))。

接続はコンテキストを認識し、選択したノードタイプに対して有効な関係のみが表示されます。

クエリを作成する

セキュリティ グラフをクエリして、重要な条件に基づいてクラウド環境を調べることができます。グラフに対してクエリを実行して絞り込むと、モニタリングする特定のセキュリティの脆弱性を特定できます。

  1. [リスク] > [グラフ検索] に移動して、セキュリティ グラフのクエリページを開きます。

  2. カスタム クエリエディタでクエリを作成します。

    1. 独自のカスタムクエリを作成する

    2. 事前定義された検索候補を選択してそのまま使用するか、ニーズに合わせてクエリを変更します。

  3. クエリを実行します。

  4. 表でクエリ結果を確認します。表示する列を選択して、結果ビューをカスタマイズできます。各列を昇順または降順で並べ替えることもできます。

  5. [CSV 形式でダウンロード] オプションを使用して、クエリ結果を CSV ファイルとしてエクスポートします。

カスタムクエリを作成する

カスタムクエリを定義して、環境に固有のセキュリティの脆弱性を特定できます。

これを行うには、次の手順で新しいカスタムクエリを作成して実行するか、既存の検索候補をカスタマイズします。

  1. Google Cloud コンソールで、[リスク] > [グラフ検索] に移動して、セキュリティ グラフのクエリページを開きます。

  2. [表示] フィールドで をクリックし、クエリのプライマリ ノードとしてリソースまたは検出結果を選択して、[選択] をクリックします。

  3. クエリを絞り込むには、フィルタまたは接続の切り替えをクリックして、選択したノードで有効にします。有効にした各フィルタの値を定義し、[選択] をクリックします。

    Security Command Center グラフ検索ウィジェット
    Security Command Center グラフ検索ウィジェット(クリックして拡大)
  4. クエリをさらに変更するには、ノードまたは接続に関連付けられているプラスアイコン()をクリックして更新します。 をクリックして、クエリからコンポーネントを削除します。

  5. [クエリを実行] を選択します。

グラフ スキーマの進化に伴い、使用可能なノード、フィルタ、接続が Google Cloud コンソールで更新されます。

検索候補を使用またはカスタマイズする

検索候補がいくつか表示されるので、そこから検索を開始できます。これらの提案はそのまま使用することも、特定の要件に合わせてカスタマイズすることもできます。

  1. Google Cloud コンソールで、[リスク] > [グラフ検索] に移動して、セキュリティ グラフのクエリページを開きます。

  2. 検索候補を選択すると、クエリに関する詳細情報が表示されます。

  3. [候補を使用] をクリックします。

  4. 必要に応じて、エディタでクエリの詳細を変更します。詳細については、カスタムクエリを作成するをご覧ください。

  5. [クエリを実行] を選択します。

結果が返されないクエリのトラブルシューティング

クエリが結果を返さない場合は、次の手順でトラブルシューティングと調整を行います。

事前定義された検索候補を使用する

提供される定義済みの検索候補は、さまざまな環境に関連する結果を返すように設計された例です。検索候補は、特定のニーズに合わせて変更できます。

クエリを簡素化または調整する

  • フィルタを削除または削減して、クエリの範囲を広げます。

  • 単一のアセットタイプまたはプロパティにクエリを実行して、データが返されることを確認します。

  • 制約を過度に組み合わせないようにしてください。この操作を行うと、意図せず結果が除外される可能性があります。

アクセス権限を確認する

クエリを実行するデータの表示に必要な権限があることを確認します。適切なアクセス権がないと、一部のアセットや関係が非表示になったり、結果から除外されたりする可能性があります。

データ同期の時間を考慮する

最近作成または更新されたリソースがグラフに表示されるまでに数分から数時間かかることがあります。たとえば、リソースを追加した直後や IAM ポリシーを更新した直後には、遅延が発生することがあります。クラウド環境を変更したばかりの場合は、しばらくしてからクエリをもう一度実行してみてください。

グラフの範囲

環境とサポートされているデータ型によっては、一部のデータ型または関係がセキュリティ グラフで使用できない場合があります。期待されるデータが表示されない場合は、グラフで利用できない可能性があります。

その他の参考情報

上記の手順を試しても想定どおりの結果が得られない場合は、プロジェクト管理者に問い合わせるか、サポートを受けるを参照して、クエリ構成と権限の確認についてサポートを受けてください。

次のステップ