👋

Security Command Center でお手軽セキュリティ診断

2022/11/25に公開

はじめに

みなさんこんにちは!クラウドエースの中嶋です。
今回は、Google Cloud のセキュリティ診断の強い味方 Security Command Center について紹介します。

Security Command Center の概要

Security Command Center(以降、SCC)は、Google Cloud 上で使用しているサービスの脆弱性や脅威となりうる設定を検知することができるサービスです。
検知された脆弱性や脅威は、Google Cloud のダッシュボードに表示したり Pub/Sub にメッセージをパブリッシュすることができます。

ただし、SCC は Google Cloud の組織単位で有効にできるサービスなので、Google Cloud プロジェクトのみを使用しているユーザーは使用できません。

Google Workspace や Cloud Identity を使用して組織リソースを事前にプロビジョニングしておく必要があります。

ティアごとの違い

SCC には、無償版のスタンダードティアと有償版のプレミアムティアがあります。
それぞれのティアごとに使用できる機能を以下表に示します。

機能名 概要 スタンダードティア プレミアムティア
Security Health Analytics Google Cloud のマネージド脆弱性評価スキャン機能 ✅※1
Web Security Scanner FWの背後にない、Google Cloud 上に構築された
Webアプリケーションの脆弱性評価スキャン機能
✅※1
Cloud Data Loss Prevention との統合 検出された結果を SCC のダッシュボードで統合管理
Google Cloud Armor との統合 検出された結果を SCC のダッシュボードで統合管理
異常検出 サービスアカウントの漏洩・不正利用の可能性
VMの不正利用の可能性を検出
BigQuery との統合 SCC の検出結果を BigQuery エクスポート
Forseti Security との統合 OSSツール Forseti Security での検知結果を SCC へ送信
Event Threat Detection 脅威インテリジェンス・機械学習などを使用して、
組織ログをモニタリングし、脅威を検出
-
Container Threat Detection コンテナ ランタイム攻撃の検出 -
Virtual Machine Threat Detection VM インスタンス内で実行されている暗号通貨マイニング アプリケーションを検出 -
Rapid Vulnerability Detection ネットワークとウェブ アプリケーションをスキャンして、弱い認証情報、不完全なソフトウェアのインストール、悪用される可能性が高いその他の重大な脆弱性を検出 -
VM Manager の脆弱性レポート VM Manager によって検出された
Compute Engine の脆弱性レポート診断結果を SCC へ送信
-

※1 Security Health Analytics / Web Security Scanner はスタンダード・プレミアムティアともに使用することができますが、ティアごと検出できる項目や使用できる機能が異なります。

表の通り、プレミアムティアではスタンダードティアのすべての機能とプレミアムティア固有の機能を使用することができます。
スタンダードティアの機能だけでは、組織のセキュリティ診断内容として不十分である場合や
プレミアムティアの機能も必要としている場合は、プレミアムティアへ昇格することを検討することになります。

ティアごとの違いの詳細は、以下ドキュメントに記載があります。
https://cloud.google.com/security-command-center/docs/concepts-security-command-center-overview

料金

スタンダードティア

無料

プレミアムティア

1 年間または複数年の固定料金サブスクリプションで、Google Cloud 全体の利用料金の 5 % が料金となります。
ただし、最低年間費用は $15,000 の定めがあります。

料金プランの詳細は以下ドキュメントをご確認ください。
https://cloud.google.com/security-command-center/pricing

Security Command Center(スタンダード)を有効にしてみる

料金の関係上、今回はスタンダードティアを試していきます。

組織リソースをプロビジョニングしている環境で、Google Cloud コンソールのサイドバーから [セキュリティ] - [Security Command Center] を選択します。

初期セットアップ画面では、ティアの選択および説明画面が表示されます。
Google Cloud コンソール上からでは、スタンダードティアのみ選択することが可能となっております。
1

次へ進むと有効にするサービスを選択する画面に遷移します。
Security Health Analytics のみ有効にした状態で次へ進みます。
このときデフォルトでは、組織のサービス設定を継承して組織全体をスキャンしようとします。
特定のリソースのみでスキャンを実行したい場合は、[詳細設定] にてリソースを個別に除外してください。

2

Security Command Center を有効にすると、専用のサービスアカウントが作成されます。
このサービスアカウントにスキャンに必要な権限を付与するため、[ロールを付与] を選択して次へ進みます。
3

最後に有効化の確認をして終了です。
4

設定が完了すると、スキャンが開始されます。
しばらく待機すると SCC のダッシュボードに結果が表示されます。

只今ご紹介したセットアップ方法は、以下ドキュメントに記載があります。
https://cloud.google.com/security-command-center/docs/set-up

Security Health Analytics の結果を確認してみる

スキャンが完了すると、SCC のダッシュボードの [概要] タブにサマリが表示されます。
[検出] タブには、検出結果の一覧が表示されます。
検出結果をクリックして詳細を表示すると下記のように検出結果の詳細が表示できます。

  1. 検出結果の概要・改善方法の案内
  2. どの機能によって検出されたか
  3. どのリソースから検出されたか
  4. 検出結果が問題ない場合、手動でミュート設定

6

Security Health Analytics の検出一覧と、
検出項目に対する説明は以下ドキュメントに記載があります。
https://cloud.google.com/security-command-center/docs/concepts-vulnerabilities-findings#security-health-analytics-detectors

ただし、スタンダードティアとプレミアムティアでは検出項目の数が大きく異なります。
料金ティア: プレミアムまたはスタンダード と記載がある項目のみがスタンダードティアで検出できる項目です。

外部公開されているリソース設定(ex. OPEN_SSH_PORT、PUBLIC_BUCKET_ACL)等、
一般的に脆弱性になり得る設定が、スタンダードティアでも検出できるようになっていて

暗号鍵のローテーション設定がされていない(ex. KMS_KEY_NOT_ROTATED)等、
システムの要件次第では考慮すべき設定が、プレミアムティアのみで検出できるような印象ですね。

検出結果を通知するには?

SCC で検出された結果をメールや Slack 等のアプリケーションに通知するためには、ひと手間が必要です。

以下図のように、Pub/Sub と Cloud Functions 等のコンピューティングリソースを準備して
Pub/Sub にメッセージが到着したときに、
Slack 等のアプリケーションにメッセージ送信する関数を記述しておきます。

8

このような通知を実装するための手順は以下ドキュメントに記載があります。
https://cloud.google.com/security-command-center/docs/how-to-enable-real-time-notifications

アセット情報を確認してみる

SCC ダッシュボードでは、検出結果の他に [アセット] タブにて
SCC のスキャン対象となるアセット情報を表示で確認することができます。

こちらでは、どのリソースにどんな設定が入っているのか事細かく確認することができます。
(モザイクだらけになるのであえて画像は添付しません。)

SCC のアセットとして確認できる情報は以下のドキュメントに記載があります。
https://cloud.google.com/security-command-center/docs/supported-asset-types?_ga=2.90869018.-1005813824.1654222601

SCC のアセット情報は、SCC のダッシュボード上での確認だけではなくエクスポートすることもできます。

Cloud Storage へのエクスポートの場合、ダッシュボード上の [エクスポート] を選択して
エクスポート先のバケットを指定すると対象のバケットにJSONファイルとして出力することができます。

7

エクスポートしたアセット情報には、対象のリソースの作成日、リソースの配置場所、リソースの設定、リソースへのアクセス権をもつユーザーの情報等が事細かく記録されます。

例えば、Firewall ルールのアセット情報は以下のように出力されます。

{
  "asset": {
    "name": "organizations/{org_id}/assets/{resource_id}",
    "securityCenterProperties": {
      "resourceName": "//compute.googleapis.com/projects/{project_name}/global/firewalls/{resource_id}",
      "resourceType": "google.compute.Firewall",
      "resourceParent": "//cloudresourcemanager.googleapis.com/projects/{project_id}",
      "resourceProject": "//cloudresourcemanager.googleapis.com/projects/{project_id}",
      "resourceOwners": ["serviceAccount:{project_id}@cloudbuild.gserviceaccount.com", "serviceAccount:service-{project_id}@gcp-sa-cloudbuild.iam.gserviceaccount.com", "user:hoge@cloud-ace.jp", "user:fuga@cloud-ace.jp"],
      "resourceDisplayName": "default-allow-internal",
      "resourceParentDisplayName": "{project_name}",
      "resourceProjectDisplayName": "{project_name}",
      "location": "global"
    },
    "resourceProperties": {
      "creationTimestamp": "2022-07-12T00:01:03.849-07:00",
      "name": "default-allow-internal",
      "sourceRanges": "[\"10.128.0.0/9\"]",
      "direction": "INGRESS",
      "logConfig": "{\"enable\":false}",
      "description": "Allow internal traffic on the default network",
      "selfLink": "https://www.googleapis.com/compute/v1/projects/{project_name}/global/firewalls/default-allow-internal",
      "priority": 65534.0,
      "allowed": "[{\"IPProtocol\":\"icmp\"},{\"IPProtocol\":\"tcp\",\"ports\":[\"0-65535\"]},{\"IPProtocol\":\"udp\",\"ports\":[\"0-65535\"]}]",
      "disabled": false,
      "network": "https://www.googleapis.com/compute/v1/projects/{project_name}/global/networks/default",
      "id": "{resource_id}"
    },
    "securityMarks": {
      "name": "organizations/{org_id}/assets/{resource_id}/securityMarks"
    },
    "createTime": "2022-07-12T07:01:04.881Z",
    "updateTime": "2022-07-12T07:01:04.881Z",
    "iamPolicy": {
    },
    "resourceUpdateTime": "2022-07-12T07:01:04.293Z",
    "canonicalName": "projects/{project_id}/assets/{resource_id}"
  }

また、Cloud Storage だけではなく、BigQuery へのエクスポートも対応しています。
アセット情報をクエリなどで検索したい場合や、Looker Studio などで可視化したい場合は、BigQuery にエクスポートしておくと便利でしょう。

BigQuery へのエクスポートは、gcloud CLI を使用して行うことになります。
エクスポート手順は、以下ドキュメントに記載があります。
https://cloud.google.com/security-command-center/docs/how-to-analyze-findings-in-big-query

Security Command Center の使い方について考える

こちらの記事でご紹介した機能以外にも SCC には、セキュリティ診断を行う際に役立つ便利な機能が揃っています。

まだ何もセキュリティ診断や対策について取り組まれていない場合は、
無料のスタンダードティアを使用して一般的な脆弱性が発見されないか確認してみると良いでしょう。

プレミアムティアの機能も必要になってきたら、
費用対効果も鑑みてプレミアムティアの導入も検討していく形でしょうか。

また、運用しているシステムの特性や組織が準拠すべきコンプライアンスやガバナンスはそれぞれなので、SCC の機能だけでは、不足する箇所も出てくるかもしれません。
その場合は SCC + α で、何か運用方法を検討していく必要があるでしょう。

私は、まず SCC でできることを理解して使いこなしていけるように頑張ろうと思いました。
SCC の他の機能も積極的に試していきたいです。

Discussion