NRIネットコム社員が様々な視点で、日々の気づきやナレッジを発信するメディアです

注目のタグ

    Security Command Centerを使用してGoogle Cloud内のセキュリティイベントを検知する

    こんにちは、最近Google Cloudを頑張って勉強している上野です。

    今回はSecurity Command Centerおよびその通知設定方法を紹介します。

    Security Command Centerとは?

    Security Command Center(以下SCC)は、Google Cloudの組織配下のプロジェクトにおいて、セキュリティリスクのある設定や、脆弱性(アプリも含む)を見つけてくれるサービスです。 見つけた結果を表示するダッシュボード機能もあります。 なお、SCCは組織に対して設定するサービスのため、プロジェクト単体では使用できません。

    無料のスタンダード ティアと有料のプレミアム ティアがあり、スタンダードでは一部機能のみ使用できます。

    機能(サービス)名 機能概要 スタンダード プレミア
    Security Health Analytics 公開FWなど、Google Cloud の脆弱性と構成ミスをに検出 一部利用可(公開FWなど一部の設定検知のみ) 利用可(CISなど各種基準に対する準拠チェックも含む)
    Web Security Scanner アプリケーションの脆弱性スキャン 一部利用可(公開 URL と IPをスキャン) 利用可(アプリ脆弱性を含めスキャン)
    Event Threat Detection アカウントへの不正アクセスなど各種イベントを検知 利用不可 利用可
    Container Threat Detection コンテナへの攻撃を検知 利用不可 利用可

    これらの基本4サービスのほか、以下の3つも統合されたサービスとして、検知内容をSCC上で確認できるようになっています。スタンダードでも利用可能です。

    統合されたサービス名 機能概要
    Anomaly Detection 仮想マシン(VM)のセキュリティ異常(漏洩された認証情報やコイン マイニングなど)を検知
    Cloud Armor DDoSやXSSなどの攻撃を保護
    Data Loss Prevention 機密性の高いデータを検出、分類、保護

    Security Command Centerを有効にする

    できればプレミア、特にEvent Threat Detectionを試したいところですが、予算の関係上今回は泣く泣くスタンダードで見ていきます。

    有効にするのは、SCCの画面からポチポチやっていけば簡単にできます。

    有効にすると、以下のように各種検知情報が見れます。

    検知した情報をSlackへ通知する

    検知情報をダッシュボードから見るだけであれば、すぐにできましたが、検知内容を通知するとなると、追加の設定がいくつか必要です。 以下のドキュメントを参考に、設定していきます。

    cloud.google.com

    通知の構成は以下のとおりです。SCCの設定は組織単位で行いますが、通知用の処理は特定のプロジェクト内に作成します。

    Pub/Sub トピックの作成

    Cloud ShellからgcloudコマンドでPub/Sub トピックを作成していきます。 トピック名「scc-findings-topic」とサブスクリプション名「scc-findings-sub」は任意の名前でOKです。

     gcloud config set project [プロジェクトID]
     export PROJECT_ID=[プロジェクトID]
     export ORG_ID=[組織ID]
    
    #トピックの作成
     gcloud pubsub topics create scc-findings-topic 
    #サブスクリプションの作成(Cloud Function通知用)
     gcloud pubsub subscriptions create scc-findings-sub \
      --topic scc-findings-topic
    
     export TOPIC=projects/$PROJECT_ID/topics/scc-findings-topic
    
    #SCCの通知をトピックへパブリッシュする設定
     gcloud scc notifications create scc-critical-and-high-severity-findings-notify \
       --pubsub-topic $TOPIC \
       --organization $ORG_ID \
       --filter "state=\"ACTIVE\""
    

    今回は有効な検知をすべて通知するようにしていますが、結果の重要度によってフィルターしたい場合は、最後の部分を次のように修正すればOKです。

    --filter "(severity=\"HIGH\" OR severity=\"CRITICAL\") AND state=\"ACTIVE\""
    

    Slack APIの設定、Tokenの発行

    トピックの設定ができたので、Slack側のAPIを準備していきます。

    Slack APIのページから、Create New Appでアプリを作ります。

    初期設定として、「Bots」を押下し、

    Botの名前(Slackでの表示名)を入れておきます。

    その後、OAuth & Permissionsを選択します。

    Bot Token Scopesから「Add an OAuth Scope」を押下します。

    以下のようにchat:writechat:write.publicを追加しておきます。

    画面上部のInstall to WorkSpaceを押下します。 押下すると、Slackとの接続を許可する画面が出るので、許可しておきます。

    Tokenが発行されるので、メモしておきます。

    通知用Cloud Functionの作成

    通知用のCloudFunctionを作成していきます。

    トリガーのタイプを Cloud Pub/Subにし、作成したトピックを指定します。

    コードの編集画面になるので、ランタイムをpython 3.9 にして、ドキュメントのコードを参考に、TOKENと通知先チャンネル名だけ変更しておきます。

    import base64
    import json
    import requests
    
    ## 取得したTOKENに変更
    TOKEN = [取得したトークン]
    
    def send_slack_chat_notification(event, context):
        pubsub_message = base64.b64decode(event['data']).decode('utf-8')
        message_json = json.loads(pubsub_message)
        finding = message_json['finding']
    
        requests.post("https://slack.com/api/chat.postMessage", data={
            "token": TOKEN,
            ## 通知したいチャンネル名に変更
            "channel": "[通知先チャンネル名]",
            "text": f"A high severity finding {finding['category']} was detected!"
        })
    

    requirements.txt へrequestsの追加もしておきます。

    変更したらデプロイを押します。デプロイが正常終了すれば、通知の設定は完了です。

    通知のテスト

    実際のリソースで検知させてみます。今回は検証用に、RDP(3389ポート)を公開したファイアウォールルールを作成してみます。

    ※今回は検証用のため作成していますが、むやみにこのような公開されたルールを作るのはやめましょう。

    するとSlack上に以下の通知が来ました!

    無事に通知設定ができました。

    ちなみに通知のテストを繰り返し行いたい場合は、SCCの結果画面からアクティブ状態を変更して、非アクティブ→有効にすれば再度通知されます。

    まとめ

    SCCの有効は簡単にできましたが、通知までは少し手間がかかったかなという印象です。私が慣れてないというのもあります。 スタンダードであれば無料で利用できるので、Google Cloudを使う場合は基本有効にして通知まで設定しておきたいですね。

    今回はSlackへ通知を行いましたが、メール通知やBiqQueryに送って分析など、ほかの活用方法もありそうです。

    これから設定を試そうと思っている方、参考になれば幸いです。

    最後にですが、Google Cloudでセキュリティ設定ってなにやればいいの?って迷ったときは、以下の資料がおススメです!私もよく参考にしています。

    speakerdeck.com

    それではまた!

    執筆者上野史瑛

    Japan APN Ambassador 2020
    AWSを中心としたクラウドの導入、最適化を専門に行っています。