Security Health Analytics を使用する

このページでは、Security Command Center を使用して Security Health Analytics の検出結果を管理する方法について説明します。

Security Health Analytics は Security Command Center の組み込みサービスで、クラウド環境のリソースをスキャンし、検出された構成ミスの検出結果を出力します。

Security Health Analytics の検出結果を表示するには、Security Command Center の [サービス] 設定でこのサービスを有効にする必要があります。

別のクラウド プラットフォームの検出結果を受け取るには、Security Command Center を別のクラウド プラットフォームに接続する必要があります。

Security Health Analytics 検出器からの検出結果は、Security Command Center API を使用して、Google Cloud コンソールで確認できます。また、Security Command Center の Enterprise ティアを使用している場合は、セキュリティ運用コンソールでの検索が可能です。

スキャンは、Security Command Center が有効になってから約 1 時間後に開始します。Google Cloud では、2 つのモードで実行されます。バッチモードでは、1 日 1 回自動的にスキャンを実行します。リアルタイム モードでは、アセット構成が変更されるとスキャンを実行します。

リアルタイム スキャンモードをサポートしていない Security Health Analytics の検出機能は、Security Command Center レイテンシの概要に記載されています。

Security Health Analytics は、他のクラウド プラットフォームをバッチモードでのみスキャンします。

始める前に

Security Health Analytics の検出結果を管理するために必要な権限を取得するには、組織、フォルダ、プロジェクトに対する次の IAM ロールを付与するよう管理者に依頼してください。

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

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

検出機能を有効または無効にする

検出機能を無効にすると、アクティブな検出結果の状態に影響する可能性があります。検出機能を無効にすると、既存の検出結果は無効としてマークされます。

組織レベルで Security Command Center を有効にすると、特定のフォルダやプロジェクトに対して Security Health Analytics または特定の検出機能を無効にできます。フォルダとプロジェクトで Security Health Analytics または検出機能をオフにしている場合、それらのリソース内のアセットに関連する既存の検出結果は無効としてマークされます。

Google Cloud の次の Security Health Analytics 検出機能は、デフォルトでは無効になっています。

  • ALLOYDB_AUTO_BACKUP_DISABLED
  • ALLOYDB_CMEK_DISABLED
  • BIGQUERY_TABLE_CMEK_DISABLED
  • BUCKET_CMEK_DISABLED
  • CLOUD_ASSET_API_DISABLED
  • DATAPROC_CMEK_DISABLED
  • DATASET_CMEK_DISABLED
  • DISK_CMEK_DISABLED
  • DISK_CSEK_DISABLED
  • NODEPOOL_BOOT_CMEK_DISABLED
  • PUBSUB_CMEK_DISABLED
  • SQL_CMEK_DISABLED
  • SQL_NO_ROOT_PASSWORD
  • SQL_WEAK_ROOT_PASSWORD
  • VPC_FLOW_LOGS_SETTINGS_NOT_RECOMMENDED

Security Health Analytics の検出モジュールを有効または無効にする手順は次のとおりです。

コンソール

Google Cloud コンソールで Security Command Center の [設定] にある [Security Health Analytics] ページの [モジュール] タブで、検出機能を有効または無効にできます。検出機能は、組織レベルまたはプロジェクト レベルで有効または無効にできます。

gcloud

検出機能(モジュールとも呼ばれる)を有効にするには、gcloud alpha scc settings services modules enable コマンドを実行します。

組織レベルで Security Command Center を有効にした場合は、次のコマンドを実行します。

gcloud alpha scc settings services modules enable \
    --organization=ORGANIZATION_ID \
    --service=SECURITY_HEALTH_ANALYTICS \
    --module=DETECTOR_NAME

以下を置き換えます。

  • ORGANIZATION_ID: 組織 ID
  • DETECTOR_NAME: 有効にする検出機能の名前

プロジェクト レベルで Security Command Center を有効にした場合は、次のコマンドを実行します。

gcloud alpha scc settings services modules enable \
    --project=PROJECT_ID \
    --service=SECURITY_HEALTH_ANALYTICS \
    --module=DETECTOR_NAME

以下を置き換えます。

  • PROJECT_ID: プロジェクト ID
  • DETECTOR_NAME: 有効にする検出機能の名前

検出機能を無効にするには、gcloud alpha scc settings services modules disable コマンドを実行します。

組織レベルで Security Command Center を有効にした場合は、次のコマンドを実行します。

gcloud alpha scc settings services modules disable \
    --organization=ORGANIZATION_ID \
    --service=SECURITY_HEALTH_ANALYTICS \
    --module=DETECTOR_NAME

以下を置き換えます。

  • ORGANIZATION_ID: 組織 ID
  • DETECTOR_NAME: 無効にする検出機能の名前

プロジェクト レベルで Security Command Center を有効にした場合は、次のコマンドを実行します。

gcloud alpha scc settings services modules disable \
    --project=PROJECT_ID \
    --service=SECURITY_HEALTH_ANALYTICS \
    --module=DETECTOR_NAME

以下を置き換えます。

  • PROJECT_ID: プロジェクト ID
  • DETECTOR_NAME: 無効にする検出機能の名前

Google Cloud コンソールで検出結果をフィルタする

大規模な組織では、デプロイメント全体で確認、優先順位付け、追跡が必要な脆弱性の検出結果が大量に表示される場合があります。Google Cloud コンソールの Security Command Center の [脆弱性] ページと [検出] ページで利用可能なフィルタを使用して、組織全体で最も重大度の高い脆弱性に重点を置き、アセットのタイプやプロジェクトごとに脆弱性を確認できます。

脆弱性の検出結果のフィルタリングの詳細については、Security Command Center で脆弱性の検出結果をフィルタするをご覧ください。

ケースを使用して検出結果を管理する

Security Command Center では、重大度が HIGH または CRITICAL の脆弱性と構成ミスの検出結果について、セキュリティ運用コンソールでケースが自動的に開かれます。1 つのケースには、関連する複数の検出結果を含めることができます。

ケースを使用すると、任意のチケット発行システムと統合して、オーナーの割り当て、関連情報の確認、ハンドブックによるレスポンス ワークフローの自動化により、検出結果の調査と修正を管理できます。

検出結果に対応するケースがある場合は、検出結果の詳細ページでケースへのリンクを確認できます。Google Cloud コンソールの [検出結果] ページで検出結果の詳細ページを開きます。オープン状態の脆弱性ケースの合計数は、Google Cloud コンソールの [リスクの概要] ページでも確認できます。

ケースの詳細については、ケースの概要をご覧ください。

検出結果をミュートする

Google Cloud コンソールで検出結果の量を制御するには、手動またはプログラムによって個々の検出結果をミュートするか、定義したフィルタに基づいて検出結果を自動的にミュートするミュートルールを作成します。検出結果の量を制御するために使用できるミュートルールには、次の 2 種類があります。

  • 今後の検出結果を無期限にミュートする静的ミュートルール。
  • 現在将来の検出結果を一時的にミュートするオプションを含む動的ミュートルール。

手動で確認する検出結果の数を減らすには、動的ミュートルールのみを使用することをおすすめします。混乱を避けるために、静的ミュートルールと動的ミュートルールの両方を同時に使用することはおすすめしません。2 つのルールタイプの比較については、ミュート ルールの種類をご覧ください。

Google Cloud コンソールでミュートした検出結果は表示されませんが、監査とコンプライアンスのために引き続き記録されます。ミュートされた検索結果はいつでも表示できます。また、ミュートを解除することもできます。詳しくは、Security Command Center で検出結果をミュートするをご覧ください。

セキュリティ マークによるアセットと検出結果のマーキング

セキュリティ マークを使用することで、Security Command Center の検出結果とアセットにカスタム プロパティを追加できます。セキュリティ マークを使用すると、本番環境のプロジェクト、バグやインシデントの追跡番号を含むタグなど、優先度の高い分野を特定できます。

アセットの場合、セキュリティ マークは Security Command Center でサポートされているアセットにのみ追加できます。サポートされているアセットの一覧については、Security Command Center でサポートされているアセットタイプをご覧ください。

許可リストにアセットを追加する

おすすめの方法ではありませんが、専用のセキュリティ マークをアセットに追加して、不要な検出結果を抑制することもできます。これにより、これらのアセットのセキュリティの検出結果が Security Health Analytics の検出機能で生成されなくなります。

検出結果の量を制御するために推奨される最も効果的な方法は検出結果のミュートです。レビューの必要がない検出結果(分離されたアセットに対する検索結果や、許容されるビジネス パラメータに該当する検出結果)をミュートします。

アセットに専用のセキュリティ マークを適用すると、アセットが Security Health Analytics の許可リストに追加され、これらのアセットに対する検出結果は次回のバッチスキャンで解決済みとしてマークされます。

このページの許可リストの仕組みで説明するように、専用のセキュリティ マークは検出結果ではなく、アセットに直接適用する必要があります。検出結果にマークを適用しても、基盤となるアセットで検出結果を生成できます。

許可リストの仕組み

各 Security Health Analytics 検出機能には、allow_FINDING_TYPE:true 形式の許可リスト専用のマークタイプがあります。この専用マークを Security Command Center でサポートされているアセットに追加すると、そのアセットを検出ポリシーから除外できます。

たとえば、検出タイプ SSL_NOT_ENFORCED を除外するには、関連する Cloud SQL インスタンスでセキュリティ マーク allow_ssl_not_enforced:true を設定します。指定された検出器では、マークされたアセットの検出結果は作成されません。

検出タイプの一覧については、Security Health Analytics 検出機能のリストをご覧ください。 セキュリティ マークとそのセキュリティを使用する手法についての詳細は、セキュリティ マークの使用をご覧ください。

アセットタイプ

このセクションでは、さまざまなアセットに対するセキュリティ マークがどのように機能するかについて説明します。

  • アセットを許可リストに追加する: Cloud Storage バケットやファイアウォールなどのアセットに専用マークを追加すると、次のバッチ スキャンの実行時に関連する検出が解決済みのマークが付けられます。検出機能は、マークが削除されるまで、アセットに対して新しい検出結果の生成や既存の検出結果の更新を行いません。

  • プロジェクトを許可リストに追加する: プロジェクト リソースにマークを追加すると、プロジェクト自体の検出結果は解決済みになります。ただし、仮想マシンや暗号鍵など、プロジェクト内に含まれるアセットに対しては、引き続き検出結果が生成されます。このセキュリティ マークは、組織レベルで Security Command Center のプレミアム ティアを有効にした場合にのみ利用できます。

  • フォルダを許可リストに追加する: フォルダ リソースにマークを追加すると、フォルダ自体の検出結果は解決済みになります。ただし、フォルダ内のアセット(プロジェクトを含む)に対しては引き続き検出結果が生成されます。このセキュリティ マークは、組織レベルで Security Command Center のプレミアム ティアを有効にした場合にのみ利用できます。

  • 複数のアセットをサポートする検出機能: 複数のアセットタイプをサポートする検出機能の場合は、各アセットに専用のマークを適用する必要があります。たとえば、KMS_PUBLIC_KEY 検出機能は、CryptoKeyKeyRing の Cloud Key Management Service アセットをサポートしています。マーク allow_kms_public_key:trueCryptoKey アセットに適用すると、そのアセットの KMS_PUBLIC_KEY 検出結果が解決されます。ただし、KeyRing アセットについては、検出結果は引き続き生成できます。

セキュリティ マークは、リアルタイム スキャンではなくバッチスキャンでのみ更新されます。専用のセキュリティ マークが削除され、そのアセットに脆弱性がある場合、マークを削除して検出結果を書き込むまでに最大で 24 時間かかることがあります。

特殊なケースの検出器: 顧客指定の暗号鍵

DISK_CSEK_DISABLED 検出機能はデフォルトでオンになっていません。この検出器を使用するには、セルフマネージド暗号鍵を使用するアセットにマークを付ける必要があります。

特定のアセットに対して DISK_CSEK_DISABLED 検出機能を有効にするには、値が true のアセットにセキュリティ マーク enforce_customer_supplied_disk_encryption_keys を適用します。

有効な検出結果の数を検出結果のタイプごとに表示する

有効な検出結果の数を検出結果タイプごとに表示するには、Google Cloud コンソールまたは Google Cloud CLI コマンドを使用します。

コンソール

Google Cloud コンソールでは、検出結果の種類ごとに有効な検出結果の数を確認できます。

Security Health Analytics の検出結果を検出タイプ別に確認する手順は次のとおりです。

  1. Google Cloud コンソールで Security Command Center に移動します。

    Security Command Center に移動

  2. Security Health Analytics の検出結果を表示するには、[脆弱性] ページをクリックします。

  3. 検出結果のタイプごとに有効な検出数で検出結果を並べ替えるには、[有効] 列のヘッダーをクリックします。

gcloud

gcloud CLI を使用してすべての検出結果の数を取得するには、Security Command Center にクエリを送信し、Security Health Analytics のソース ID を取得します。このソース ID を使用してクエリを送信し、有効な検出結果の数を取得します。

手順 1: ソース ID を取得する

ソース ID を取得するには、次のいずれかのコマンドを実行します。

  • 組織レベルで Security Command Center を有効にした場合は、次のコマンドを実行します。

    gcloud scc sources describe organizations/ORGANIZATION_ID \
        --source-display-name="Security Health Analytics"
    
  • プロジェクト レベルで Security Command Center を有効にした場合は、次のコマンドを実行します。

    gcloud scc sources describe projects/PROJECT_ID \
        --source-display-name="Security Health Analytics"
    

Security Command Center API をまだ有効にしていない場合は、有効にするように求められます。Security Command Center API が有効になっている場合は、上記のコマンドをもう一度実行します。このコマンドによって、次のような出力が表示されます。

description: Scans for deviations from a GCP security baseline.
displayName: Security Health Analytics
name: organizations/ORGANIZATION_ID/sources/SOURCE_ID

次のステップで使用する SOURCE_ID をメモします。

手順 2: アクティブな検出結果の数を取得する

前の手順でメモした SOURCE_ID を使用して、Security Health Analytics の検出結果をフィルタします。次の gcloud CLI コマンドは、検出結果の数をカテゴリごとに返します。

  • 組織レベルで Security Command Center を有効にした場合は、次のコマンドを実行します。

    gcloud scc findings group organizations/ORGANIZATION_ID/sources/SOURCE_ID \
        --group-by=category --page-size=PAGE_SIZE
    
  • プロジェクト レベルで Security Command Center を有効にした場合は、次のコマンドを実行します。

    gcloud scc findings group projects/PROJECT_ID/sources/SOURCE_ID \
        --group-by=category --page-size=PAGE_SIZE
    

ページサイズは 1,000 までの任意の値に設定できます。このコマンドにより、特定の組織からの結果と一緒に次のような出力が表示されます。

groupByResults:
- count: '1'
properties:
  category: MFA_NOT_ENFORCED
- count: '3'
properties:
  category: ADMIN_SERVICE_ACCOUNT
- count: '2'
properties:
  category: API_KEY_APIS_UNRESTRICTED
- count: '1'
properties:
  category: API_KEY_APPS_UNRESTRICTED
- count: '2'
properties:
  category: API_KEY_EXISTS
- count: '10'
properties:
  category: AUDIT_CONFIG_NOT_MONITORED
- count: '10'
properties:
  category: AUDIT_LOGGING_DISABLED
- count: '1'
properties:
  category: AUTO_UPGRADE_DISABLED
- count: '10'
properties:
  category: BUCKET_IAM_NOT_MONITORED
- count: '10'
properties:
  category: BUCKET_LOGGING_DISABLED
nextPageToken: TOKEN
readTime: '2023-08-05T21:56:13.862Z'
totalSize: 50

検出結果をプログラムで管理する

Security Command Center SDK と Google Cloud CLI を使用すると、Google Cloud コンソールの Security Command Center で実行できるほぼすべての操作を自動化できます。また、gcloud CLI を使用して、多くの検出結果を修正することもできます。詳細については、各検出結果で説明されているリソースの種類のドキュメントをご覧ください。

アセットをプログラムでエクスポートまたは一覧表示するには、Cloud Asset Inventory API を使用します。詳しくは、アセットの履歴とメタデータをエクスポートするをご覧ください。

Security Command Center API のアセット メソッドとフィールドは非推奨であり、2024 年 6 月 26 日以降に削除されます。

削除されるまで、2023 年 6 月 26 日より前に Security Command Center を有効にしたユーザーは、Security Command Center API のアセット メソッドを使用してアセットを一覧表示することができますが、これらのメソッドは Security Command Center をサポートするアセットのみをサポートします。

非推奨のアセット API メソッドの使用については、アセットの一覧表示をご覧ください。

サービス境界で保護されているプロジェクトのスキャン

この機能は、組織レベルで Security Command Center のプレミアム ティアを有効にした場合にのみ使用できます。

たとえば、特定のプロジェクトやサービスへのアクセスをブロックするサービス境界がある場合は、そのサービス境界へのインバウンド アクセスを Security Command Center サービス アカウントに許可する必要があります。そうしないと、セキュリティ状況の分析において、保護されたプロジェクトとサービスに関する結果を生成できません。

サービス アカウントの ID は、次の形式のメールアドレスです。

service-org-ORGANIZATION_ID@security-center-api.iam.gserviceaccount.com

ORGANIZATION_ID は、組織の数値 ID に置き換えます。

サービス アカウントにサービス境界への受信アクセス権を付与するには、次の手順を実施します。

  1. [VPC Service Controls] に移動します。

    [VPC Service Controls] に移動

  2. ツールバーで Google Cloud 組織を選択します。

    プロジェクト セレクタ

  3. プルダウン リストで、アクセスを許可するサービス境界を含むアクセス ポリシーを選択します。

    アクセス ポリシー リスト

    アクセス ポリシーに関連付けられているサービス境界がリストに表示されます。

  4. サービスの名前をクリックします。

  5. [境界を編集] をクリックします。

  6. ナビゲーション メニューで、[上り(内向き)ポリシー] をクリックします。

  7. [ルールの追加] をクリックします。

  8. 次のようにルールを構成します。

    API クライアントの FROM 属性

    1. [ソース] で [すべてのソース] を選択します。
    2. [ID] で、[選択した ID] を選択します。
    3. [ユーザー アカウント / サービス アカウントの追加] フィールドで [選択] をクリックします。
    4. サービス アカウントのメールアドレスを入力します。組織レベルとプロジェクト レベルの両方にサービス アカウントがある場合は、両方を追加します。
    5. [保存] をクリックします。

    GCP サービス / リソースの TO 属性

    1. [プロジェクト] で、[すべてのプロジェクト] を選択します。

    2. [サービス] で [すべてのサービス] を選択するか、Security Health Analytics に必要な次の各サービスを選択します。

      • BigQuery API
      • Binary Authorization API
      • Cloud Logging API
      • Cloud Monitoring API
      • Compute Engine API
      • Kubernetes Engine API

    サービス境界で必要なサービスへのアクセスを制限している場合、Security Health Analytics はこのサービスの検出結果を生成できません。

  9. ナビゲーション メニューで、[保存] をクリックします。

詳細については、上り(内向き)ポリシーと下り(外向き)ポリシーの構成をご覧ください。

次のステップ