Security Command Centerを徹底解説。Google Cloud(GCP)の脆弱性を自動検知

記事タイトルとURLをコピーする

G-gen の杉村です。 Google Cloud (旧称 GCP) のセキュリティサービスである Security Command Center は Google Cloud 環境の構成ミス、脆弱性、脅威を特定して、セキュリティ強化・リスク軽減をするためのサービスです。
今回はこの Security Command Center (通称 SCC)を徹底解説します。

Security Command Center

Security Command Center 概要

Security Command Center とは

Security Command Center は Google Cloud 環境を自動的にスキャンして、構成ミスなどを自動検知して一覧化してくれるサービスです。
なお Google Cloud 環境で組織 (Organization) を構成していることが利用の前提条件です。

無償で使える スタンダードティア と 1 年〜複数年の固定料金サブスクリプションである プレミアムティア の 2 種類の料金体系があり、使える機能に差があります。

スタンダードティア

スタンダードティアでは、以下のような機能が含まれています。

  • Security Health Analytics : Google Cloud の ID (アカウント) や権限 (IAM) 周り、ネットワーク、データ管理などに関する設定ミス、危険な設定などを検知してくれる
  • Web Security Scanner custom scans : Web アプリケーションに対して簡易的な脆弱性診断を行う (スタンダードでは手動のみ)
  • Anomaly Detection : 異常検知。サービスアカウントの漏洩や VM での不正な暗号通貨マイニングなどの検知
  • Cloud Data Loss Prevention (DLP), Cloud Armor など他の Google Cloud サービスとの統合
  • オープンソースの Google Cloud 用セキュリティツールである Forseti Security との統合

プレミアムティア

プレミアムティアでは、スタンダードティアの機能に加えて以下のような機能が含まれています。

  • Security Health Analytics : スタンダードティアより強化され PCI DSS や CIS といった共通規格に準じた検知
  • Web Security Scanner : スタンダードティアより強化 (自動スキャンも可能)
  • Event Threat Detection : Cloud Logging や Google Workspace を機械学習等を用いて監視してマルウェア活動やデータ抜き取りなどの異常挙動を検知
  • Container Threat Detection : コンテナに関する不審な挙動を検知
  • 検知内容の Cloud Pub/Sub への定期的なエクスポート

コンプライアンス標準とのマッピング

前述の各機能により検出された検出結果は、以下のようなコンプライアンス標準規格にマッピングされます。
検出結果ごとに「この結果はこの標準規格に違反している可能性があるよ」とコンソール画面に表示されることをイメージしてください。

  • CIS ベンチマーク
  • PCI DSS
  • OWASP Top 10
  • NIST 800-53
  • ISO 27001

検知内容がどの標準規格に関係するか右側の列に表示されている

CIS ベンチマーク は、 CIS (Center for Internet Security 、米国の 国家安全保障局 (NSA) や米国立標準技術研究所 (NIST) 、学術団体などが設立した非営利団体) が定義するベンチマークです。
Amazon Web Services (AWS) における Security Command Center の類似サービスである AWS Security Hub でも、セキュリティ基準として利用されています。

PCI DSS はクレジットカード情報を扱うためのグローバルなセキュリティ基準です。
クレジットカードを扱うシステムに関わった方であれば、一度は耳にし、認証取得に苦労したこともあるでしょう。

OWASP Top 10 は米国の非営利団体である OWASP Foundation が定期的に発行しているセキュリティレポートで、日本でも広く参照されています。
この団体から提供されているオープンソースの脆弱性診断ツールである OWASP ZAP は、セキュリティの教則本でもハンズオンに利用されているのをよく目にします。

NIST 800-53 は米国の政府機関である米国立標準技術研究所 (NIST) が、米国連邦政府の情報システムのセキュリティ基準として定義したものです。

ISO 27001 は日本で ISMS として知られる認証の国際規格として有名ですね。

Security Command Center では各種の検知結果をこのようなコンプライアンス標準にマッピングしてくれるので、認証取得などに向けて環境を整備したり、継続的なモニタリングにも活用できます。

Security Health Analytics

Security Health Analytics とは

数ある Security Command Center の機能の中でも、コアとなるのがこの Security Health Analytics です。
Security Health Analytics は Google Cloud 環境をスキャンすることで、設定ミスやセキュアでない設定を検知する機能です。

検出機能の一覧は、以下の公式ドキュメントに記載されています。

上記ドキュメントでは検出機能ごとに、どのような機能なのか、スタンダードティアで利用可能なのか、プレミアムティアへの登録が必要なのか、またリアルタイムスキャンが行われるのか、などが一覧化されています。

なおバックエンドでは Google Cloud リソースのメタデータを管理する仕組みである Cloud Asset Inventory (CAI) という仕組みが使われています。
また、 検査対象の対象となるサービス は以下の通りです。

  • Cloud Monitoring and Cloud Logging
  • Compute Engine
  • Google Kubernetes Engine containers and networks
  • Cloud Storage
  • Cloud SQL
  • Identity and Access Management (IAM)
  • Cloud Key Management Service (Cloud KMS)
  • Cloud DNS

検出機能の例

前掲のドキュメントから、検出機能の例をいくつか挙げます。
なお以下に挙げているものは、スタンダードティアで利用可能なもののみです。
プレミアムティアではさらに多数の検出機能があります。

  • PUBLIC_COMPUTE_IMAGE : Compute Engine イメージが一般公開されてしまっている
  • OPEN_SSH_PORT : VPC のファイアウォールで 22/TCP や 22/SCTP ポートが開いている
  • NON_ORG_IAM_MEMBER : "@gmail.com" メールアドレスのアカウントに IAM 権限が付与されている
  • MFA_NOT_ENFORCED : MFA が有効になっていないユーザーが存在
  • PUBLIC_BUCKET_ACL : 一般公開されている Cloud Storage バケットが存在

3 つのスキャン

Security Health Analytics は以下の 3 つのモードでスキャンを実行します。

  1. バッチスキャン ( 1 日 2 回以上の頻度)
  2. リアルタイムスキャン (リソースの変更と同時にスキャン)
  3. 混合 (バッチとリアルタイムの混合)

3 つのスキャンは、検出機能に応じて自動的に使い分けられます。
検出機能によっては、バッチスキャンのみでリアルタイムスキャンに対応していないものもあります。
前掲の検出機能一覧に、対応しているスキャンタイミングが記載されています。

Web Security Scanner

Web Security Scanner とは

Web Security Scanner は Google Compute Engine (GCE) や App Engine (GAE) 、Google Kubernetes Engine (GKE) でホストされている Web アプリケーションに対して、アプリケーションレベルの脆弱性スキャンをかける機能です。
ただし、スキャンできる対象はインターネットに公開されている Web アプリのみですので、ローカルネットワーク内で使われる社内システム等には使用できません。

2 つのスキャン

Web Security Scanner には「マネージドスキャン」と「カスタムスキャン」があります。

前者のマネージドスキャンは、週 1 回の自動スキャンです。認証なし、 GET リクエストのみ、という制限があります。プレミアムティアでのみ利用できます。

後者のカスタムスキャンは、手動設定によるスキャンです。認証情報を用いて検査ができます。スタンダードティアでも使用できますが、一部機能が制限されています。

検出結果

OWASP Top 10 に準じた検出を行うことができます。
以下のドキュメントに、検出結果の一覧があります。

例として以下のようなものがあります。

  • OUTDATED_LIBRARY : 既知の脆弱性があるライブラリが検出された。
  • SERVER_SIDE_REQUEST_FORGERY : サーバー側のリクエスト フォージェリ(SSRF)の脆弱性が検出された。
  • XSS : このウェブ アプリケーションのフィールドは、クロスサイト スクリプティング(XSS)攻撃に対して脆弱である。

注意点

スキャンを実行すると、フォームへの入力、ボタン押下、リンクへのアクセスなど、一般ユーザーの動きを模したリクエストが行われます。
そのため、 本番環境に思わぬ破壊的な結果を及ぼすおそれもゼロではありません (これは Security Command Center だけに言えることではなく、通常の脆弱性診断でも同じです) 。

公式ドキュメントでは ベストプラクティス として以下が紹介されています。

  1. テスト環境でのスキャン実行
  2. テストアカウントの利用
  3. CSS クラス inq-no-click の利用
  4. スキャン前のバックアップ
  5. テストを行わない URL パターンの指定

Anomaly Detection

Anomaly Detection とは

Security Command Center を有効化すると、スタンダードティア・プレミアムティアの両方で自動的に Anomaly Detection の機能が有効化されます。
主に Google Cloud 外部からの情報を元に異常検出する機能です。

「サービスアカウントのクレデンシャル情報の流出」「 Google Cloud リソースが暗号通貨のマイニングに利用されている」などの検知内容があります。
ただし、検知の仕組みはブラックボックスであり、公式ドキュメントでは公開されていません。
Google が自社サービスでも用いているであろう様々な技術によって、これらの検知を行っていると考えられます。

検知内容の例

  • account_has_leaked_credentials : Google Cloud サービスアカウントのクレデンシャル情報がオンラインに漏洩または不正利用されている
  • resource_compromised_alert : 組織内のリソースが不正利用されている可能性あり
  • resource_involved_in_coin_mining : 組織内の VM が暗号通貨の採掘に使われている予兆あり
  • outgoing_intrusion_attempt : 組織内のリソースが外部への攻撃 (SSH ブルートフォース、ポートスキャン、 FTP ブルートフォース等) に使われている予兆あり
  • resource_used_for_phishing : 組織内のリソースがフィッシング攻撃に使われている

Event Threat Detection

Event Threat Detection とは

Event Threat Detection は、 Cloud Logging および Google Workspace ログを監視し、機械学習等により検査することで、ニアリアルタイムで脅威を検知する仕組みです。
プレミアムティアのみで利用することができます。

「BigQuery からのデータの持ち出し」「 VM から発生したマルウェアによる通信」「 Google Workspace グループの安全でない権限設定」「政府に支援された攻撃と疑われるアクション」などを検知することができます。

検出結果は Security Command Center コンソール等で確認できる他、 Cloud Logging に出力されたり、 Pub/Sub にパブリッシュしたりできるため、後続アクションの自動化などにも繋げられます。

前述の Security Health Analytics と、この Event Threat Detection の違いですが、前者が Cloud Asset Inventory (CAI) にある構成情報を元に検査するのに対して、後者は Cloud Logging や Google Workspace のログを検査してアクティビティを検知する、という違いだと言えます。

検知内容の例

以下のドキュメントに、検知可能な内容がリストされています。

そのうちのいくつかを例示します。

  • DATA_EXFILTRATION_BIG_QUERY : BigQuery からデータが組織外へコピーされる等。 Cloud Audit Logs から検知。
  • MALWARE_BAD_DOMAIN : マルウェア通信と疑われるドメインへの通信。 Cloud DNS のログから検知。
  • ANOMALOUS_ACCESS : Tor など匿名化されたプロキシの IP から Google Cloud リソースが変更された。 Cloud Audit Logs から検知。
  • BRUTE_FORCE_SSH : VM の SSH にブルートフォース攻撃。 Cloud Logging にエクスポートされた syslog から検知。
  • SUSPICIOUS_LOGIN : 疑わしいログインが発生。 Google Workspace ログから検知。
  • 2SV_DISABLE : ユーザーが 2 段階認証を無効化した。 Google Workspace ログから検知。

検査対象のログの有効化

Event Threat Detection は、 Google Workspace のログや Cloud Logging のログを使って脅威を検知します。
Cloud Audit Logs の管理アクティビティ監査ログ (Admin Activity audit logs) はデフォルトで ON になっており Cloud Logging に出力されるので、何も設定しなくても自動的に検知対象になります。

しかし、以下のようなログは必要に応じて ON にする必要があります。

  • SSH logs/syslog (Ops Agent / Cloud Logging Agent 経由で Cloud Logging にエクスポート)
  • データアクセス監査ログ (Cloud Audit Logs)
  • VPC flow logs
  • Cloud DNS logs
  • Firewall Rules logs
  • Cloud NAT logs

これらのログは明示的に有効化しないと出力されません。出力されていないと当然、 Event Threat Detection の検査対象にもなりません。
出力によるログ料金の増大を理解しながら、必要に応じて ON にする必要があります。

なお Cloud Audit Logs については以下の記事で解説していますので、ご参照ください。

blog.g-gen.co.jp

またログ出力先となる Cloud Logging については以下の記事で解説していますので、ご参照ください。

blog.g-gen.co.jp

Container Threat Detection

Container Threat Detection とは

Container Threat Detection は Google Kubernetes Engine (GKE) におけるコンテナ稼働用ノードのモニタリングを行い、ノード上の変更やコンテナランタイムに対する攻撃をニアリアルタイムで検知します。
コンテナノードで実行されるバイナリやコンテナにロードされるライブラリの検査や、 NLP (自然言語処理) による bash スクリプトの検査などが行われます。

Container Threat Detection はプレミアムティアのみの機能です。

サポートしている GKE のバージョン等は ドキュメント をご参照ください。

検知できる内容

以下のような内容が 検知対象 となります。

  • Added Binary Executed : オリジナルのコンテナイメージに無いバイナリが実行された
  • Added Library Loaded : オリジナルのコンテナイメージに無いライブラリがロードされた
  • Malicious Script Executed : 悪意ある bash スクリプトが実行された
  • Reverse Shell : リモートのソケットへのストリームリダイレクションを行うプロセスが開始された

VM の脆弱性レポート

2021 年 12 月現在ではプレビュー段階ですが、 VM Manager の脆弱性レポート 機能があります。
この機能では Google Compute Engine (GCE) を統合管理する機能である VM Manager を利用し、エージェントにより VM 内をスキャンして OS レベルの脆弱性を検知することができます。

詳細は、以下のドキュメントを参照してください。

Security Command Center の運用

Security Command Center は、ただ有効化しただけでは、セキュリティリスクを通知し続けることしかできません。
検知内容を正しく理解し、 Google Cloud の設定をセキュアな状態に変更するなど、通知されたリスクに対処する運用が必要になります。

しっかりしたスキルに基づく運用体制を築いたり、自動対処の仕組みを構築しない限り、 Security Command Center が「オオカミ少年」のようになってしまうことに注意が必要です。

ひとまず無償で利用できるスタンダードティアを有効化して、検知内容を確認し、体制を検討することも可能です。

料金

Security Command Center のスタンダードティアは 無料 です。

プレミアムティアは、 1 年 or 複数年のサブスクリプションです。
Google Cloud 全体の利用料金の 5 % がその費用となります。
最小年間費用は $25,000 (約 2,750,000 円) です。
契約は年単位ですが、支払いは月単位となります。

上記は 2021 年 12 月現在の情報ですため、最新情報は以下のページでご確認ください。

cloud.google.com

杉村 勇馬 (記事一覧) (Facebook)

クラウドソリューション部 部長

元・警察官という経歴を持つ現・エンジニア。クラウド管理運用やネットワークに知見。AWS 12冠、Google Cloud認定資格11冠。

2022年6月現在、ハマっているものはピーナッツくんの新しいアルバム Walk Through the Stars 。