検出結果を個別にミュートする

このドキュメントでは、Security Command Center で個々の検出結果を静的にミュートする方法、ミュートを解除する方法、検出結果を一括でミュートする方法について説明します。

必要なロール

検出結果をミュートまたはミュート解除するために必要な権限を取得するには、組織、フォルダ、またはプロジェクトに対する次の IAM ロールを付与するよう管理者に依頼します。

ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

個別の検出結果をミュートする

個別の検出結果を静的にミュートするには、Google Cloud コンソール、gcloud CLI、または Security Command Center API を使用します。

検出結果の静的ミュートは、その有効 / 無効には影響を与えません。アクティブな検出結果がミュートされている場合、state 属性は変わらず state="ACTIVE" のまま残ります。その検出結果は非表示になりますが、根拠となる脆弱性、構成ミス、脅威が解決されるまでアクティブのまま残ります。また、検出結果を静的にミュートすると、その検出結果に適用される動的ミュートルールがオーバーライドされます。

有害な組み合わせの検出結果をミュートすると、対応する有害な組み合わせのケースがクローズします。

指定した条件に一致する将来の検出結果をすべてミュートするには、ミュートルールを管理するをご覧ください。

検出結果をミュートするサンプルコードについては、検出結果をミュートするをご覧ください。

個別の検出結果を静的にミュートするには、使用する方法のタブをクリックします。

コンソール

  1. Google Cloud コンソールで、Security Command Center の [検出結果] ページに移動します。

    [検出結果] に移動

  2. 必要に応じて、 Google Cloud プロジェクトまたは組織を選択します。
  3. ミュートする検出結果が [検出結果のクエリ結果] パネルに表示されない場合は、[クイック フィルタ] パネルの [カテゴリ] セクションで検出結果のカテゴリを選択します。
  4. ミュートする検出結果を選択します。検出結果は 1 つ以上選択できます。
  5. [検出結果のクエリ結果] アクションバーで [ミュート オプション] をクリックし、[ミュートのオーバーライドを適用] を選択します。

    選択した検出結果の mute 属性は MUTED に設定され、[検出結果のクエリ結果] パネルから検出結果が削除されます。また、詳細パネルで検出結果をミュートすることもできます。

  6. [検出結果] ページの [検出結果のクエリ結果] パネルにある [カテゴリ] 列で、個々の検出結果の名前をクリックします。検出結果の詳細パネルが開きます。

  7. [操作] をクリックします。

  8. [操作] メニューから [ミュートのオーバーライドを適用] を選択します。

    代わりに [これに類似する検出をミュート] を選択すると、[ミュートルールを作成する] ページが開きます。ここで、同じ種類または同じ Indicator 属性を含む検出結果のミュートルールを作成できます。

gcloud

  1. Google Cloud コンソールで Cloud Shell をアクティブにします。

    Cloud Shell をアクティブにする

    Google Cloud コンソールの下部にある Cloud Shell セッションが開始し、コマンドライン プロンプトが表示されます。Cloud Shell はシェル環境です。Google Cloud CLI がすでにインストールされており、現在のプロジェクトの値もすでに設定されています。セッションが初期化されるまで数秒かかることがあります。

  2. 検出結果のミュート状態を MUTED に設定するには、gcloud CLI で set-mute コマンドを使用します。

    gcloud scc findings set-mute FINDING_ID \
      --PARENT=PARENT_ID \
      --location=LOCATION \
      --source=SOURCE_ID \
      --mute=MUTED

    次のように置き換えます。

    • FINDING_ID: ミュートする検出結果の ID

      検出結果の ID を取得するには、Security Command Center API を使用して検出結果を一覧表示します。検出結果の ID は canonicalName 属性の最後の部分です(例: projects/123456789012/sources/1234567890123456789/findings`/5ee30aa342e799e4e1700826de053aa9)。

    • PARENT: 親リソース(projectfolderorganization)。大文字と小文字が区別されます。

    • PARENT_ID: 親組織、フォルダ、またはプロジェクトの ID

    • LOCATION: 検出結果をミュートまたはミュート解除する Security Command Center のロケーション。データ所在地が有効になっている場合は、eusaus を使用します。それ以外の場合は、global を使用します。

    • SOURCE_ID: ソース ID

      ソース ID を取得する手順については、ソース ID の取得をご覧ください。

Go

import (
	"context"
	"fmt"
	"io"

	securitycenter "cloud.google.com/go/securitycenter/apiv2"
	"cloud.google.com/go/securitycenter/apiv2/securitycenterpb"
)

// setMute mutes an individual finding.
// If a finding is already muted, muting it again has no effect.
// Various mute states are: MUTE_UNSPECIFIED/MUTE/UNMUTE.
func setMute(w io.Writer, findingPath string) error {
	// findingPath: The relative resource name of the finding. See:
	// https://cloud.google.com/apis/design/resource_names#relative_resource_name
	// Use any one of the following formats:
	//  - organizations/{organization_id}/sources/{source_id}/finding/{finding_id}
	//  - folders/{folder_id}/sources/{source_id}/finding/{finding_id}
	//  - projects/{project_id}/sources/{source_id}/finding/{finding_id}
	// findingPath := fmt.Sprintf("projects/%s/sources/%s/finding/%s", "your-google-cloud-project-id", "source", "finding-id")
	ctx := context.Background()
	client, err := securitycenter.NewClient(ctx)
	if err != nil {
		return fmt.Errorf("securitycenter.NewClient: %w", err)
	}
	defer client.Close()

	req := &securitycenterpb.SetMuteRequest{
		Name: findingPath,
		Mute: securitycenterpb.Finding_MUTED}

	finding, err := client.SetMute(ctx, req)
	if err != nil {
		return fmt.Errorf("failed to set the specified mute value: %w", err)
	}
	fmt.Fprintf(w, "Mute value for the finding: %s is %s", finding.Name, finding.Mute)
	return nil
}

Java


import com.google.cloud.securitycenter.v2.Finding;
import com.google.cloud.securitycenter.v2.Finding.Mute;
import com.google.cloud.securitycenter.v2.SecurityCenterClient;
import com.google.cloud.securitycenter.v2.SetMuteRequest;
import java.io.IOException;

public class SetMuteFinding {

  public static void main(String[] args) throws IOException {
    // TODO: Replace the variables within {}
    // findingPath: The relative resource name of the finding. See:
    // https://cloud.google.com/apis/design/resource_names#relative_resource_name
    // Use any one of the following formats:
    //  - organizations/{org_id}/sources/{source_id}/locations/{location}/finding/{finding_id}
    //  - folders/{folder_id}/sources/{source_id}/locations/{location}/finding/{finding_id}
    //  - projects/{project_id}/sources/{source_id}/locations/{location}/finding/{finding_id}
    //
    String findingPath = "{path-to-the-finding}";

    setMute(findingPath);
  }

  // Mute an individual finding.
  // If a finding is already muted, muting it again has no effect.
  // Various mute states are: MUTE_UNSPECIFIED/MUTE/UNMUTE.
  public static Finding setMute(String findingPath) throws IOException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (SecurityCenterClient client = SecurityCenterClient.create()) {

      SetMuteRequest setMuteRequest =
          SetMuteRequest.newBuilder()
              // Relative path for the finding.
              .setName(findingPath)
              .setMute(Mute.MUTED)
              .build();

      Finding finding = client.setMute(setMuteRequest);
      System.out.println(
          "Mute value for the finding " + finding.getName() + " is: " + finding.getMute());
      return finding;
    }
  }
}

Python

def set_mute_finding(finding_path: str) -> None:
    """
      Mute an individual finding.
      If a finding is already muted, muting it again has no effect.
      Various mute states are: MUTE_UNSPECIFIED/MUTE/UNMUTE.
    Args:
        finding_path: The relative resource name of the finding. See:
        https://cloud.google.com/apis/design/resource_names#relative_resource_name
        Use any one of the following formats:
        - organizations/{organization_id}/sources/{source_id}/finding/{finding_id},
        - folders/{folder_id}/sources/{source_id}/finding/{finding_id},
        - projects/{project_id}/sources/{source_id}/finding/{finding_id}.
    """
    from google.cloud import securitycenter_v2

    client = securitycenter_v2.SecurityCenterClient()

    request = securitycenter_v2.SetMuteRequest()
    request.name = finding_path
    request.mute = securitycenter_v2.Finding.Mute.MUTED

    finding = client.set_mute(request)
    print(f"Mute value for the finding: {finding.mute.name}")
    return finding

REST

Security Command Center API で、findings.setMute メソッドを使用して検出結果をミュートします。リクエストの本文は、結果のミュート状態を示す列挙型です。

POST https://securitycenter.googleapis.com/v2/PARENT/PARENT_ID/sources/SOURCE_ID/locations/LOCATION/findings/FINDING_ID:setMute

{
  "mute": "MUTED"
}

次のように置き換えます。

  • PARENT: 親リソース(organizationsfolders、または projects)。
  • PARENT_ID: 親組織、フォルダ、またはプロジェクトの ID。
  • LOCATION: 検出結果をミュートまたはミュート解除する Security Command Center のロケーション。データ所在地が有効になっている場合は、eusaus を使用します。それ以外の場合は、global を使用します。
  • SOURCE_ID: ソースの数値 ID。

    ソース ID を取得する手順については、ソース ID の取得をご覧ください。

  • FINDING_ID: ミュートする検出結果の ID。

    検出結果の ID を取得するには、Security Command Center API を使用して検出結果を一覧表示します。検出結果の ID は canonicalName 属性の最後の部分です(例: projects/123456789012/sources/1234567890123456789/findings/5ee30aa342e799e4e1700826de053aa9)。

検出結果をミュートすると、mute 属性が MUTED に設定されます。

個別の検出結果のミュートを解除する

個別の検出結果を静的にミュート解除するには、 Google Cloud コンソール、gcloud CLI、または Security Command Center API を使用します。

検出結果のミュート解除は、ミュートルールの条件が広いために検出結果が表示されないような場合や、ルールが複雑すぎて、重要な検出結果を対象外にすることが難しい場合に役立ちます。

ミュートを解除した検出結果が再度ミュートするには、検出結果を手動でミュートする必要があります。gcloud CLI または Security Command Center API を使用して作成したミュートルールは、ユーザーがミュート解除した検出結果に影響しません。

検出結果のミュートを解除するサンプルコードについては、検出結果のミュートを解除するをご覧ください。

コンソール

Google Cloud コンソールを使用して個別の検出結果のミュートを解除するには、サービスティアのタブをクリックします。

  1. Google Cloud コンソールで、Security Command Center の [検出結果] ページに移動します。

    [検出結果] に移動

  2. 必要に応じて、 Google Cloud プロジェクトまたは組織を選択します。 [検出結果] ページが開き、[クエリのプレビュー] セクションにデフォルトのクエリが表示されます。デフォルトのクエリではミュートされた検出結果が除外されるため、そのクエリは、[検出結果のクエリ結果] パネルにミュートされた結果が表示される前に編集する必要があります。
  3. [クエリのプレビュー] セクションの右側にある [クエリを編集] をクリックして、[クエリエディタ] を開きます。
  4. [クエリエディタ] フィールドで、既存の mute ステートメントを次のように置き換えます。
    mute="MUTED"
  5. [適用] をクリックします。[検出結果のクエリ結果] パネルの検出結果が更新され、ミュートされた検出結果のみが含まれるようになります。
  6. 必要に応じて、ミュートされている他の検出結果を除外します。たとえば、[カテゴリ] の [クイック フィルタ] パネルで、他の検出結果のカテゴリをすべて除外するには、ミュートを解除する検出結果の名前を選択します。
  7. ミュートを解除する検出結果を選択します。検出結果は 1 つ以上選択できます。
  8. [検出結果のクエリ結果] アクションバーで [ミュート オプション] をクリックし、[ミュート解除のオーバーライドを適用] を選択します。 選択した検出結果の mute 属性は UNMUTED に設定され、[検出結果のクエリ結果] パネルから検出結果が削除されます。また、詳細パネルで検出結果のミュートを解除することもできます。
  9. [検出結果] ページの [検出結果のクエリ結果] パネルにある [カテゴリ] 列で、個々の検出結果の名前をクリックします。検出結果の詳細パネルが開きます。
  10. [操作] をクリックします。
  11. [操作] メニューから [ミュート解除のオーバーライドを適用] を選択します。

gcloud

  1. Google Cloud コンソールで Cloud Shell をアクティブにします。

    Cloud Shell をアクティブにする

    Google Cloud コンソールの下部にある Cloud Shell セッションが開始し、コマンドライン プロンプトが表示されます。Cloud Shell はシェル環境です。Google Cloud CLI がすでにインストールされており、現在のプロジェクトの値もすでに設定されています。セッションが初期化されるまで数秒かかることがあります。

  2. 検出結果のミュート状態を UNMUTED に設定するには、gcloud CLI で set-mute コマンドを使用します。

    gcloud scc findings set-mute FINDING_ID \
      --PARENT=PARENT_ID \
      --location=LOCATION \
      --source=SOURCE_ID \
      --mute=UNMUTED

    次のように置き換えます。

    • FINDING_ID: ミュートする検出結果の ID

      検出結果の ID を取得するには、Security Command Center API を使用して検出結果を一覧表示します。検出結果の ID は canonicalName 属性の最後の部分です(例: projects/123456789012/sources/1234567890123456789/findings/5ee30aa342e799e4e1700826de053aa9)。

    • PARENT: 親リソース(projectfolderorganization)。大文字と小文字が区別されます。

    • PARENT_ID: 親組織、フォルダ、またはプロジェクトの ID

    • LOCATION: 検出結果をミュートまたはミュート解除する Security Command Center のロケーション。データ所在地が有効になっている場合は、eusaus を使用します。それ以外の場合は、global を使用します。

    • SOURCE_ID: ソース ID

      ソース ID を取得する手順については、ソース ID の取得をご覧ください。

Go


import (
	"context"
	"fmt"
	"io"

	securitycenter "cloud.google.com/go/securitycenter/apiv2"
	"cloud.google.com/go/securitycenter/apiv2/securitycenterpb"
)

// setUnmute unmutes an individual finding.
// Unmuting a finding that isn't muted has no effect.
// Various mute states are: MUTE_UNSPECIFIED/MUTE/UNMUTE.
func setUnmute(w io.Writer, findingPath string) error {
	// findingPath: The relative resource name of the finding. See:
	// https://cloud.google.com/apis/design/resource_names#relative_resource_name
	// Use any one of the following formats:
	//  - organizations/{organization_id}/sources/{source_id}/finding/{finding_id}
	//  - folders/{folder_id}/sources/{source_id}/finding/{finding_id}
	//  - projects/{project_id}/sources/{source_id}/finding/{finding_id}
	// findingPath := fmt.Sprintf("projects/%s/sources/%s/finding/%s", "your-google-cloud-project-id", "source", "finding-id")
	ctx := context.Background()
	client, err := securitycenter.NewClient(ctx)
	if err != nil {
		return fmt.Errorf("securitycenter.NewClient: %w", err)
	}
	defer client.Close()

	req := &securitycenterpb.SetMuteRequest{
		Name: findingPath,
		Mute: securitycenterpb.Finding_UNMUTED}

	finding, err := client.SetMute(ctx, req)
	if err != nil {
		return fmt.Errorf("failed to set the specified mute value: %w", err)
	}
	fmt.Fprintf(w, "Mute value for the finding: %s is %s", finding.Name, finding.Mute)
	return nil
}

Java


import com.google.cloud.securitycenter.v2.Finding;
import com.google.cloud.securitycenter.v2.Finding.Mute;
import com.google.cloud.securitycenter.v2.SecurityCenterClient;
import com.google.cloud.securitycenter.v2.SetMuteRequest;
import java.io.IOException;

public class SetUnmuteFinding {

  public static void main(String[] args) throws IOException {
    // TODO: Replace the variables within {}
    // findingPath: The relative resource name of the finding. See:
    // https://cloud.google.com/apis/design/resource_names#relative_resource_name
    // Use any one of the following formats:
    //  - organizations/{org_id}/sources/{source_id}/locations/{location}/finding/{finding_id}
    //  - folders/{folder_id}/sources/{source_id}/locations/{location}/finding/{finding_id}
    //  - projects/{project_id}/sources/{source_id}/locations/{location}/finding/{finding_id}
    //
    String findingPath = "{path-to-the-finding}";

    setUnmute(findingPath);
  }

  // Unmute an individual finding.
  // Unmuting a finding that isn't muted has no effect.
  // Various mute states are: MUTE_UNSPECIFIED/MUTE/UNMUTE.
  public static Finding setUnmute(String findingPath) throws IOException {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (SecurityCenterClient client = SecurityCenterClient.create()) {

      SetMuteRequest setMuteRequest =
          SetMuteRequest.newBuilder()
              .setName(findingPath)
              .setMute(Mute.UNMUTED)
              .build();

      Finding finding = client.setMute(setMuteRequest);
      System.out.println(
          "Mute value for the finding " + finding.getName() + " is: " + finding.getMute());
      return finding;
    }
  }
}

Python

def set_unmute_finding(finding_path: str) -> None:
    """
      Unmute an individual finding.
      Unmuting a finding that isn't muted has no effect.
      Various mute states are: MUTE_UNSPECIFIED/MUTE/UNMUTE.
    Args:
        finding_path: The relative resource name of the finding. See:
        https://cloud.google.com/apis/design/resource_names#relative_resource_name
        Use any one of the following formats:
        - organizations/{organization_id}/sources/{source_id}/finding/{finding_id},
        - folders/{folder_id}/sources/{source_id}/finding/{finding_id},
        - projects/{project_id}/sources/{source_id}/finding/{finding_id}.
    """
    from google.cloud import securitycenter_v2

    client = securitycenter_v2.SecurityCenterClient()

    request = securitycenter_v2.SetMuteRequest()
    request.name = finding_path
    request.mute = securitycenter_v2.Finding.Mute.UNMUTED

    finding = client.set_mute(request)
    print(f"Mute value for the finding: {finding.mute.name}")
    return finding

REST

Security Command Center API で、findings.setMute メソッドを使用して検出結果のミュートを解除します。リクエストの本文は、結果のミュート状態を示す列挙型です。

POST https://securitycenter.googleapis.com/v2/PARENT/PARENT_ID/sources/SOURCE_ID/locations/LOCATION/findings/FINDING_ID:setMute

{
  "mute": "UNMUTED"
}

次のように置き換えます。

  • PARENT: 親リソース(organizationsfolders、または projects
  • PARENT_ID: 親組織、フォルダ、またはプロジェクトの ID
  • LOCATION: 検出結果をミュートまたはミュート解除する Security Command Center のロケーション。データ所在地が有効になっている場合は、eusaus を使用します。それ以外の場合は、global を使用します。
  • SOURCE_ID: ソースの数値 ID

    ソース ID を取得する手順については、ソース ID の取得をご覧ください。

  • FINDING_ID: ミュートする検出結果の ID。

    検出結果の ID を取得するには、Security Command Center API を使用して検出結果を一覧表示します。検出結果の ID は canonicalName 属性の最後の部分です(例: projects/123456789012/sources/1234567890123456789/findings/5ee30aa342e799e4e1700826de053aa9)。

選択した検出結果は非表示になり、検出結果の mute 属性は UNMUTED に設定されます。

個々の検出結果からミュート状態のオーバーライドを削除する

検出結果のミュート状態を意図的に変更して、検出結果を静的にミュートまたはミュート解除する場合は、ミュート状態のオーバーライドを適用します。たとえば、動的ミュートルールを作成するほどではない重大度の低い検出結果を非表示にするために、ミュート状態のオーバーライドを適用できます。

個々の検出結果からミュート状態のオーバーライドを削除するには、 Google Cloud コンソール、gcloud CLI、または Security Command Center API を使用します。

検出結果からミュート状態のオーバーライドを削除する前に、次の点にご注意ください。

  • 検出結果が静的にミュートまたはミュート解除されている場合、検出結果にミュート状態のオーバーライドがあります。ミュート状態のオーバーライドは、手動で検出結果に適用することも、静的ミュートルールを使用して自動的に適用することもできます。
  • ミュート状態のオーバーライドは、検出結果に無期限に適用され、一致するミュートルールよりも優先されます。
  • 検出結果からミュート状態のオーバーライドを削除すると、検出結果のミュート状態がリセットされ、静的ミュートルールまたは動的ミュートルールで処理できるようになります。
  • 検出結果からミュート状態のオーバーライドを削除することは、検出結果のミュートを解除することとは異なります。検出結果のミュートを解除すると(ミュート解除のオーバーライドを適用すると)、ミュート状態のオーバーライドを手動で削除するまで、ミュートルールでその検出結果をミュートすることはできません。

個々の検出結果からミュートのオーバーライドを削除するには、次の操作を行います。

コンソール

  1. Google Cloud コンソールで、Security Command Center の [検出結果] ページに移動します。

    [検出結果] に移動

  2. Google Cloud プロジェクトまたは組織を選択します。
  3. [クエリのプレビュー] セクションの右側にある [クエリを編集] をクリックして、[クエリエディタ] を開きます。
  4. [クエリエディタ] フィールドで、既存の mute ステートメントを次のように置き換えます。
    mute="MUTED" OR mute="UNMUTED"
  5. [適用] をクリックします。[検出結果のクエリ結果] パネルの検出結果が更新され、静的にミュートされた検出結果とミュート解除された検出結果が含まれるようになります。
  6. 必要に応じて、他の検出結果を除外します。たとえば、[カテゴリ] の [クイック フィルタ] パネルで、他の検出結果のカテゴリをすべて除外するには、リセットする検出結果の名前を選択します。
  7. リセットする検出結果を選択します。検出結果は 1 つ以上選択できます。
  8. [検出結果のクエリ結果] アクションバーで [ミュート オプション] をクリックし、[ミュートのオーバーライドを削除] を選択します。 選択した検出結果の mute 属性は UNDEFINED に設定され、[検出結果のクエリ結果] パネルから検出結果が削除されます。また、詳細パネルで検出結果のミュートを解除することもできます。
  9. [検出結果] ページの [検出結果のクエリ結果] パネルにある [カテゴリ] 列で、個々の検出結果の名前をクリックします。検出結果の詳細パネルが開きます。
  10. [操作] をクリックします。
  11. [操作] メニューから [ミュートのオーバーライドを削除] を選択します。

gcloud

  1. Google Cloud コンソールで Cloud Shell をアクティブにします。

    Cloud Shell をアクティブにする

    Google Cloud コンソールの下部にある Cloud Shell セッションが開始し、コマンドライン プロンプトが表示されます。Cloud Shell はシェル環境です。Google Cloud CLI がすでにインストールされており、現在のプロジェクトの値もすでに設定されています。セッションが初期化されるまで数秒かかることがあります。

  2. 検出結果のミュート状態を UNDEFINED に設定するには、gcloud CLI で set-mute コマンドを使用します。

    gcloud scc findings set-mute FINDING_ID \
      --PARENT=PARENT_ID \
      --location=LOCATION \
      --source=SOURCE_ID \
      --mute=UNDEFINED

    次のように置き換えます。

    • FINDING_ID: リセットする検出結果の ID

      検出結果の ID を取得するには、Security Command Center API を使用して検出結果を一覧表示します。検出結果の ID は canonicalName 属性の最後の部分です(例: projects/123456789012/sources/1234567890123456789/findings/5ee30aa342e799e4e1700826de053aa9)。

    • PARENT: 親リソース(projectfolderorganization)。大文字と小文字が区別されます。

    • PARENT_ID: 親組織、フォルダ、またはプロジェクトの ID

    • LOCATION: 検出結果をミュートまたはミュート解除する Security Command Center のロケーション。データ所在地が有効になっている場合は、eusaus を使用します。それ以外の場合は、global を使用します。

    • SOURCE_ID: ソース ID

      ソース ID を取得する手順については、ソース ID の取得をご覧ください。

REST

Security Command Center API で、findings.setMute メソッドを使用して検出結果のミュート状態をリセットします。リクエストの本文は、結果のミュート状態を示す列挙型です。

POST https://securitycenter.googleapis.com/v2/PARENT/PARENT_ID/sources/SOURCE_ID/locations/LOCATION/findings/FINDING_ID:setMute

{
  "mute": "UNDEFINED"
}

次のように置き換えます。

  • PARENT: 親リソース(organizationsfolders、または projects
  • PARENT_ID: 親組織、フォルダ、またはプロジェクトの ID
  • LOCATION: 検出結果をミュートまたはミュート解除する Security Command Center のロケーション。データ所在地が有効になっている場合は、eusaus を使用します。それ以外の場合は、global を使用します。
  • SOURCE_ID: ソースの数値 ID

Java


import com.google.cloud.securitycenter.v2.Finding;
import com.google.cloud.securitycenter.v2.Finding.Mute;
import com.google.cloud.securitycenter.v2.SecurityCenterClient;
import com.google.cloud.securitycenter.v2.SetMuteRequest;
import java.io.IOException;

public class SetMuteUndefinedFinding {

  public static void main(String[] args) throws IOException {
    // TODO: Replace the variables within {}

    // findingPath: The relative resource name of the finding. See:
    // https://cloud.google.com/apis/design/resource_names#relative_resource_name
    // Use any one of the following formats:
    // - organizations/{organization_id}/sources/{source_id}/finding/{finding_id}
    // - folders/{folder_id}/sources/{source_id}/finding/{finding_id}
    // - projects/{project_id}/sources/{source_id}/finding/{finding_id}
    String findingPath = "{path-to-the-finding}";
    setMuteUndefined(findingPath);
  }

  // Reset mute state of an individual finding.
  // If a finding is already reset, resetting it again has no effect.
  // Various mute states are: MUTE_UNSPECIFIED/MUTE/UNMUTE/UNDEFINED.
  public static Finding setMuteUndefined(String findingPath) throws IOException {
    // Initialize client that will be used to send requests. This client only needs
    // to be created once, and can be reused for multiple requests.
    try (SecurityCenterClient client = SecurityCenterClient.create()) {

      SetMuteRequest setMuteRequest =
          SetMuteRequest.newBuilder()
              .setName(findingPath)
              .setMute(Mute.UNDEFINED)
              .build();

      Finding finding = client.setMute(setMuteRequest);
      System.out.println(
          "Mute value for the finding " + finding.getName() + " is: " + finding.getMute());
      return finding;
    }
  }
}

複数の既存の検出結果をミュートまたはリセットする

gcloud scc findings bulk-mute gcloud CLI コマンドまたは Security Command Center API の bulkMute メソッドを使用して、複数の既存の検出結果に対して次のミュート オペレーションを一括で実行できます。

  • 複数の既存の検出結果をミュートします。既存の検出結果を一括でミュートすると、検出結果が静的にミュートされ、検出結果に適用される動的ミュートルールがオーバーライドされます。類似した将来の検出結果をミュートする必要がある場合は、ミュートルールを作成します。

  • 複数の既存の検出結果のミュート状態のオーバーライドを削除します。検出結果のミュート状態のオーバーライドを削除すると、ミュート状態が MUTED(静的にミュート)または UNMUTED(静的にミュート解除)から UNDEFINED にリセットされます。この機能は、静的ミュートルールから動的ミュートルールに移行する場合に便利です。

検出結果フィルタを定義して、ミュートする必要がある一連の検出結果を指定します。一括ミュート フィルタは、すべての検出結果のプロパティに対応しているわけではありません。対応していないプロパティのリストについては、ミュートルールでサポートされていない検出結果のプロパティをご覧ください。

Security Command Center でデータ所在地が有効になっている場合は、一括ミュート オペレーションの範囲は、操作が実行される Security Command Center の場所に限定されます。

検出結果を一括でミュートするサンプルコードについては、検出結果の一括ミュートをご覧ください。

検出結果を一括でミュートまたはリセットするには、使用する方法のタブをクリックします。

コンソール

Google Cloud コンソールの場合、検索結果を一括でミュートするには、ミュートルールを作成する必要があります。Google Cloud コンソールでミュートルールを作成すると、既存の検出結果と今後の検出結果がミュートされます。

gcloud

  1. Google Cloud コンソールで Cloud Shell をアクティブにします。

    Cloud Shell をアクティブにする

    Google Cloud コンソールの下部にある Cloud Shell セッションが開始し、コマンドライン プロンプトが表示されます。Cloud Shell はシェル環境です。Google Cloud CLI がすでにインストールされており、現在のプロジェクトの値もすでに設定されています。セッションが初期化されるまで数秒かかることがあります。

  2. 複数の検出結果を一括でミュートまたはリセットするには、gcloud scc findings bulk-mute コマンドを実行します。

    gcloud scc findings bulk-mute \
      --PARENT=PARENT_ID \
      --location=LOCATION \
      --filter="FILTER" \
      --mute-state=MUTE_STATE

    次のように置き換えます。

    • PARENT: ミュートルールが適用されるリソース階層内の範囲(organizationfolder、または project)。
    • PARENT_ID: 親組織、フォルダ、またはプロジェクトの数値 ID、または親プロジェクトの英数字 ID。
    • LOCATION: 検出結果をミュートまたはミュート解除する Security Command Center のロケーション。データ所在地が有効になっている場合は、eusaus を使用します。それ以外の場合は、global を使用します。
    • FILTER: 検出結果のフィルタを定義する式。

      たとえば、internal-test プロジェクトで既存の重大度が低の OPEN_FIREWALLPUBLIC_IP_ADDRESS のすべての検出結果をミュートするには、フィルタを "category=\"OPEN_FIREWALL\" OR category=\"PUBLIC_IP_ADDRESS\" AND severity=\"LOW\" AND resource.projectDisplayName=\"internal-test\"" にできます。

    • MUTE_STATE: 検出結果が静的にミュートされているかどうかを示す値。有効な値は MUTEDUNDEFINED です。デフォルトでは MUTED に設定されています。この値を UNDEFINED に設定するのは、複数の既存の検出結果のミュート状態をリセットする場合だけです。

REST

Security Command Center API で、findings.bulkMute メソッドを使用して、複数の既存の検出結果のミュート状態をミュートまたはリセットします。リクエストの本文には、検出結果をフィルタリングする式が含まれます。

POST https://securitycenter.googleapis.com/v2/PARENT/PARENT_ID/locations/LOCATION/findings:bulkMute

{
  "filter": "FILTER",
  "muteState": "MUTE_STATE"
}

次のように置き換えます。

  • PARENT: 親リソース(organizationsfolders、または projects)。
  • PARENT_ID: 親組織、フォルダ、またはプロジェクトの ID。
  • LOCATION: 検出結果をミュートまたはミュート解除する Security Command Center のロケーション。データ所在地が有効になっている場合は、eusaus を使用します。それ以外の場合は、global を使用します。
  • FILTER: 検出結果のフィルタを定義する式。

    たとえば、internal-test プロジェクトで既存の重大度が低の OPEN_FIREWALLPUBLIC_IP_ADDRESS のすべての検出結果をミュートするには、フィルタを "category=\"OPEN_FIREWALL\" OR category=\"PUBLIC_IP_ADDRESS\" AND severity=\"LOW\" AND resource.projectDisplayName=\"internal-test\"" にできます。

  • MUTE_STATE: 検出結果がミュートされているかどうかを示す値。有効な値は MUTED または UNDEFINED です。デフォルトでは MUTED に設定されています。この値を UNDEFINED に設定するのは、複数の既存の検出結果のミュート状態をリセットする場合だけです。

選択したリソース内にあり、フィルタと完全に一致する既存の検出結果はすべて非表示になります。検出結果の mute 属性は MUTED に設定されます。

検出結果をミュートしても状態は変わりません。アクティブな検出結果がミュートされている場合、それらは非表示になりますが、検出の原因となった脆弱性、構成ミス、または脅威が解決されるまではアクティブなままになります。

Google Cloud コンソールでミュートされた検出結果を表示する

Google Cloud コンソールでミュートされた検出結果を表示するには、検出結果クエリを編集して、プロパティ値 mute="MUTED" を含む検出結果を選択します。

たとえば、次の検出結果クエリでは、ミュートされているアクティブな検出結果のみが表示されます。

state="ACTIVE"
AND mute="MUTED"

ミュートとミュート解除の両方の結果を表示するには、クエリから mute 属性を省略します。

state="ACTIVE"

デフォルトでは、 Google Cloud コンソールの検出結果クエリには、ミュートされていない検出結果のみが表示されます。

ミュートルールのタイプ別にミュートされた検出結果を表示する

次のセクションでは、ミュートルールのタイプ別にアクティブな検出結果をクエリする方法について説明します。

特定の検出結果の一覧表示の詳細については、検出結果をフィルタするをご覧ください。

静的ミュートルールでミュートされた検出結果をクエリする

指定した時間後に静的ミュートルールでミュートされたアクティブな検出結果を表示するには、次のクエリを使用し、muteInitiator 属性を調べて、検出結果が静的ミュートルールでミュートされたかどうかを確認します。

state="ACTIVE" AND
muteInfo.staticMute.applyTime>=TIMESTAMP AND
muteInfo.staticMute.state="MUTED"

TIMESTAMP は、クエリを実行する期間の開始を示す日時文字列に置き換えます。時間形式については、gcloud topic datetimes をご覧ください。

動的ミュートルールでミュートされた検出結果をクエリする

指定した時間後に動的ミュートルールでミュートされたアクティブな検出結果を表示するには、次のクエリを使用します。

state="ACTIVE" AND
muteUpdateTime>=TIMESTAMP AND
contains(muteInfo.dynamicMuteRecords, muteConfig="PARENT_ID/muteConfigs/CONFIG_ID")

次のように置き換えます。

  • TIMESTAMP: クエリする期間の開始を示す日時文字列。時間形式については、gcloud topic datetimes をご覧ください。
  • PARENT_ID: 親組織、フォルダ、またはプロジェクトの ID。organizations/123folders/456、または projects/789 の形式で指定されます。
  • CONFIG_ID: ミュートルールの名前。ID には英数字とハイフンを使用し、1 文字から 63 文字までの長さにする必要があります。

検出結果クエリの編集の詳細については、ダッシュボードで検出結果クエリを作成または編集するをご覧ください。

ミュートされた検出結果の通知とエクスポートを停止する

検出結果の通知を有効にしている場合、通知フィルタに一致する、新規または更新されたミュートされた検出結果は Pub/Sub にエクスポートされます

ミュートされた検出結果のエクスポートと通知を停止するには、mute 属性を使用して、NotificationConfig フィルタでミュートされた検出結果を除外します。たとえば、次のフィルタは、ミュートされていないか、ミュート属性が設定されていないアクティブな検出結果に対してのみ通知を送信します。

FILTER="state=\"ACTIVE\" AND -mute=\"MUTED\""