リアルタイム メールとチャットの通知を有効にする

概要

Security Command Center は、Google Cloud コンソールに検出結果をリアルタイムで通知します。このガイドでは、Google Cloud サービスとサードパーティの API を使用して機能を拡張し、ほぼリアルタイムの通知をメールやチャットアプリで受け取る方法について説明します。このガイドを完了すると、Google Cloud コンソールにログインせずに、構成したサードパーティ サービスで新しい検出結果の通知を受け取り、脆弱性や脅威の優先順位付けをより迅速に行うことができます。Security Command Center では、さまざまな種類の脆弱性と脅威について確認できます。

トポロジ

このガイドでは、次の図に示す構成を作成します。

準リアルタイム通知のワークフロー(クリックして拡大)
Security Command Center の準リアルタイム通知のワークフロー(クリックして拡大)

目標

このガイドでは、次のことを行います。

  1. Pub/Sub トピックを設定する。
  2. Slack、WebEx Teams、SendGrid Email を設定する。
  3. Cloud Run functions でコードを記述する。
  4. 重要度が「高」または「重大」の新しい検出結果が Security Command Center に書き込まれるたびに、Slack、WebEx Teams、SendGrid Email に通知を送信するように Pub/Sub と Cloud Run functions を構成する。
  5. 通知に関する問題のトラブルシューティングを行う。

費用

このチュートリアルでは、Google Cloud の課金対象となる以下のコンポーネントを使用します。

  • Pub/Sub
  • Cloud Run 関数
  • Cloud Build

予想使用量に基づいて費用の見積もりを作成するには、料金計算ツールを使用します。

始める前に

このガイドの内容を行うには、次の Identity and Access Management(IAM)ロールが必要です。

  • 組織管理者(roles/resourcemanager.organizationAdmin
  • セキュリティ センター管理者(roles/securitycenter.admin
  • セキュリティ管理者(roles/iam.securityAdmin
  • オーナー(roles/owner)、編集者(roles/editor)、カスタムロールなど、serviceusage.services.use 権限を持つロール
  • サービス アカウントを作成する(roles/iam.serviceAccountCreator
  • Pub/Sub 編集者(roles/pubsub.editor
  • 請求先アカウント管理者(roles/billing.admin

Security Command Center の IAM ロールは、組織レベル、フォルダレベル、またはプロジェクト レベルで付与できます。検出結果、アセット、セキュリティ ソースを表示、編集、作成、更新する権限は、アクセス権が付与されているレベルによって異なります。Security Command Center のロールの詳細については、アクセス制御をご覧ください。

プロジェクトの設定

プロジェクトを作成または選択するためには、次の手順を完了します。

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  3. Make sure that billing is enabled for your Google Cloud project.

  4. Enable the Cloud Build API.

    Enable the API

  5. Install the Google Cloud CLI.
  6. To initialize the gcloud CLI, run the following command:

    gcloud init
  7. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Go to project selector

  8. Make sure that billing is enabled for your Google Cloud project.

  9. Enable the Cloud Build API.

    Enable the API

  10. Install the Google Cloud CLI.
  11. To initialize the gcloud CLI, run the following command:

    gcloud init

所要時間: 1 つのサービスに対する通知の設定とテストに約 1 時間かかります。

Pub/Sub トピックの設定

Pub/Sub は、独立したアプリケーション間でメッセージを送受信できるリアルタイム メッセージング サービスです。詳細については Pub/Sub をご覧ください。

このセクションでは、検出結果を Pub/Sub トピックにパブリッシュするように Security Command Center を構成します。

Pub/Sub トピックを設定してサブスクライブする手順は次のとおりです。

  1. 環境変数に Google Cloud プロジェクトを指定します。

    export PROJECT_ID=PROJECT_ID
    

    PROJECT_ID を実際のプロジェクト ID に置き換えます。

  2. 環境変数に Google Cloud 組織を指定します。

    export ORG_ID=ORG_ID
    

    ORG_ID は、実際の組織 ID に置き換えます。

  3. gcloud コマンドのプロジェクト ID を設定します。

    gcloud config set project PROJECT_ID
    
  4. 通知をパブリッシュする Pub/Sub トピックを作成します。

    gcloud pubsub topics create scc-critical-and-high-severity-findings-topic
    
  5. 環境変数にトピックを指定します。

    export TOPIC=projects/$PROJECT_ID/topics/scc-critical-and-high-severity-findings-topic
    
  6. メッセージがトピックにパブリッシュされたときに、メールやチャットのメッセージを送信するように Cloud Run functions に通知するサブスクリプションを作成します。

    gcloud pubsub subscriptions create scc-critical-and-high-severity-findings-sub \
      --topic scc-critical-and-high-severity-findings-topic
    
  7. トピックに通知をパブリッシュするように、Security Command Center を構成します。filter には、ListFindings API に対応する形を使用できます。

    次のフィルタでは、アクティブな高重要度および重大重要度の検出結果に関する通知をパブリッシュします。詳細は、検索結果のフィルタリングをご覧ください。

     gcloud scc notifications create scc-critical-and-high-severity-findings-notify \
       --pubsub-topic $TOPIC \
       --organization $ORG_ID \
       --filter "(severity=\"HIGH\" OR severity=\"CRITICAL\") AND state=\"ACTIVE\""
    

次に、Pub/Sub から通知を受け取るメールアプリかチャットアプリを作成または構成します。

メッセージ アプリの設定

このセクションでは、Pub/Sub と Cloud Run functions または Cloud Run functions(第 1 世代)を使用して、SendGrid Email API、Slack、WebEx Teams でほぼリアルタイムの通知を有効にする方法について説明します。

SendGrid Email

メール通知を有効にする方法は、次のとおりです。

  • SendGrid Email API アカウントを作成し、API キーを取得する。
  • Pub/Sub から通知を受信するとメールを送信する Cloud Run functions の関数を作成してデプロイする。

SendGrid Email API アカウントを作成する

このセクションでは、SendGrid Email API アカウントを作成し、API キーを取得します。SendGrid が有効になっている場合は、Sendgrid Email API キーを取得するにスキップし、既存の API キーに適切な権限があることを確認します。

  1. Google Cloud Console に移動します。
    Google Cloud Console に移動
  2. ページの上部にある検索ボックスで、SendGrid Email API を検索します。SendGrid 検索
  3. 次のページで、ニーズに合うプランを選択します。

    • 無料プランでは、月に最大 12,000 件のメールが可能で、このガイドには十分ですが、大規模な組織ではさらに必要になることがあります。これより大量のメール通知を受け取ることが予想される場合は、通知にフィルタを追加して不要な検出結果を除外することを検討してください。
    • SendGrid に関連付けるプロジェクトの選択を求められることがあります。プロジェクトを選択し、続行してください。プロジェクトに関連付けられた請求先アカウントの購入情報を管理するために、適切な権限が必要になる場合があります。
  4. 利用規約を確認し、問題がなければ [登録] をクリックします。

  5. [SENDGRID に登録] をクリックして、SendGrid サービスを有効にします。

  6. 登録画面で、ユーザー名、パスワード、メールアドレスを入力します。利用規約に同意し、[Continue] をクリックします。

  7. 確認ダイアログで [Return to Google] をクリックします。

SendGrid Email API キーを取得する

  1. [Manage API keys on SendGrid website] をクリックします。SendGrid ウェブサイトの新しいタブが開きます。API キーの管理

  2. 表示された指示に従って、フォームに入力するかログインします。[Get Started!] をクリックします。

  3. メニューパネルで [Settings] を展開し、[API Keys] をクリックします。

  4. 次の画面で [Create API Key] ボタンをクリックします。

  5. [API Key Name] で「SCC Email Notifications」と入力して、[Full Access] を選択し、続いて [Create & View] ボタンをクリックします。

    API キー名

  6. API キーが表示されます。値を記録します。コピーしたメールアドレスは次のセクションで必要になります。

  7. [完了] をクリックします。現在の API キーのセットが表示されます。タブを閉じて Google Cloud コンソールに戻ります。

次に、1 つのメールアドレスに通知を送信する Cloud Run functions の関数をデプロイします。

SendGrid の Cloud Run functions 関数を作成する

このセクションでは、メール アカウントに通知を送信する関数をデプロイします。

  1. Cloud Run functions に移動します。
    Cloud Run functions に移動

  2. PROJECT_ID は、Pub/Sub トピックの作成に使用したものと同じであることを確認してください。

  3. [関数を作成] をクリックします。SendGrid の関数

  4. [関数名] を「send-high-and-critical-finding-email-notification」に、[トリガーのタイプ] を [Pub/Sub] に設定します。

  5. Pub/Sub トピックには、Pub/Sub トピックの設定で作成したものを選択します。

  6. [保存] をクリックし、[次へ] をクリックします。

  7. 次のページで、[ランタイム] を [Python 3.8] に設定します。このセクションのコードサンプルは Python で記述されていますが、Cloud Run functions でサポートされている任意の言語を使用できます。

  8. ファイルリストで、[requirements.txt] をクリックし、テキスト フィールドに 「sendgrid」を追加します。

    SendGrid の要件

  9. [main.py] をクリックし、その内容を次のコード スニペットに置き換えます。

    import base64
    import json
    from sendgrid import SendGridAPIClient
    from sendgrid.helpers.mail import Mail
    
    def send_email_notification(event, context):
        """Triggered from a message on a Pub/Sub topic.
        Args:
             event (dict): Event payload.
             context (google.cloud.functions.Context): Metadata for the event.
        """
        pubsub_message = base64.b64decode(event['data']).decode('utf-8')
        message_json = json.loads(pubsub_message)
        message = Mail(
            from_email='noreply@yourdomain.com',
            to_emails='$EMAIL_ADDRESS',
            subject='New High or Critical Severity Finding Detected',
            html_content='A new high or critical severity finding was
            detected: ' + ''.join(message_json['finding']['category']))
        try:
            sg = SendGridAPIClient('$SENDGRID_EMAIL_API_KEY')
            response = sg.send(message)
            print(response.status_code)
            print(response.body)
            print(response.headers)
        except Exception as e:
            print(e)
    
        print(pubsub_message)
    
  10. 以下を置き換えます。

    • noreply@yourdomain.com を、メッセージの送信元として使用するメールアドレスに変更します。
    • $EMAIL_ADDRESS を、対象とする受信者のメールアドレスに変更します。注: この変数は、メールアドレスの配列(['user1@yourdomain.com', 'user2@yourdomain.com'])を保持できます。また、カスタムコードを記述して、ローテーションする待機者のリストなどの動的変数のセットを作成することも可能です。
    • $SENDGRID_EMAIL_API_KEY を、既存の API キーまたは前のセクションで作成した API キーに変更します。
  11. [エントリ ポイント] フィールドにカーソルを移し、コード スニペットに関数の名前を入力します(この例では「send_email_notification」)。

  12. [デプロイ] をクリックします。Cloud Run functions の関数のリストに戻ります。ここに新しい関数が表示されます。関数名の横に緑色のチェックマークが付けば、デプロイは正常に終了しています。この処理には、数分かかる場合があります。SendGrid 関数のデプロイ

Slack

Slack チャンネルに通知を送信する方法は、次のとおりです。

  • メッセージを公開 Slack チャンネルに投稿するために十分な権限を持つ新しい Slack アプリを作成する。
  • Pub/Sub からの通知の受信時にチャット メッセージを Slack に投稿する Cloud Run functions の関数を作成してデプロイする。

新しい Slack アプリを作成する

このセクションでは、通知を受け取るる新しい Slack アプリを作成します。

  1. Slack API アプリに移動します。ページは新しいタブで開きます。
  2. ログインするか、アカウントを作成します。

  3. [Create New App] を選択します。

  4. [アプリ名] を「SCC Finding Notifier」に設定します。

  5. Slack Bot でメッセージを投稿する [Development Slack Workspace] を選択し、[Create App] をクリックします。

  6. ナビゲーション パネルで [OAuth & Permissions] を選択します。

    Slack の権限

  7. [Scopes] セクションに移動します。Scopes は、次の 2 つの種類に分類されます。

    • Bot Token Scopes
    • User Token Scopes
  8. ここでは、User Token Scopes のスコープを追加する必要はありません。[Bot Token Scopes] で、[Add an OAuth Scope] をクリックし、次の項目を入力します。

    • chat:write
    • chat:write.public

      Slack のスコープ
  9. [OAuth & Permissions] ページの上部までスクロールし、[Install App to Workspace] をクリックします。

  10. 確認のダイアログで [Allow] をクリックします。

  11. Cloud Functions の関数で使用する [Bot User OAuth Access Token] を [Copy] します。

次に、Slack グループに通知を送信する Cloud Run functions の関数をデプロイします。

Slack の Cloud Run functions 関数を作成する

このセクションでは、Slack のアカウントに通知を送信する関数をデプロイします。

  1. Cloud Run functions に移動します。
    Cloud Run functions に移動

  2. PROJECT_ID は、Pub/Sub トピックの作成で使用したものと同じであることを確認してください。

  3. [関数を作成] をクリックします。SendGrid の関数

  4. [関数名] を「slack-chat-high-and-critical-findings」に、[トリガーのタイプ] を「Pub/Sub」に設定します。

  5. Pub/Sub トピックには、Pub/Sub トピックの設定で作成したものを選択します。

  6. [保存] をクリックし、[次へ] をクリックします。

  7. 次のページで、[ランタイム] を [Python 3.8] に設定します。このセクションのコードサンプルは Python で記述されていますが、Cloud Run functions でサポートされている任意の言語を使用できます。

  8. ファイルのリストに移動します。[requirements.txt] をクリックし、requests を追加します。Slack の要件

  9. [main.py] をクリックし、その内容を次のコード スニペットに置き換えます。

    import base64
    import json
    import requests
    
    TOKEN = "BOT_ACCESS_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": "#general",
            "text": f"A high severity finding {finding['category']} was detected!"
        })
    
  10. BOT_ACCESS_TOKEN は、Slack アプリで作成した Bot User OAuth Access Tokenに置き換えます。

  11. [エントリ ポイント] フィールドにカーソルを移し、コード スニペットに関数の名前を入力します(この例では「send_slack_chat_notification」)。

  12. [デプロイ] をクリックします。Cloud Run functions の関数のリストに戻ります。ここに新しい関数が表示されます。関数名の横に緑色のチェックマークが付けば、デプロイは正常に終了しています。この処理には、数分かかる場合があります。メッセージは、#general Slack チャンネルに表示されます。 Slack の関数

WebEx

WebEx Teams アカウントに通知を送信する方法は、次のとおりです。

  • Security Command Center からアセットを取得する権限を持つ、新しいサービス アカウントを作成する。
  • ワークスペースにメッセージを投稿するための十分な権限を持つ新しい WebEx Bot を作成する。
  • Pub/Sub をサブスクライブし、Pub/Sub トピックから通知を受け取ると WebEx にチャット メッセージを投稿する、Cloud Run functions の関数を作成してデプロイする。

サービス アカウントを作成する

デフォルトでは、Cloud Run functions は Security Command Center からアセットを取得できません。このセクションでは、Cloud Run functions が検出結果に関連するアセットを取得できるようにするサービス アカウントをプロビジョニングします。

  1. サービス アカウントに名前を付け、環境変数として指定します。

    export SERVICE_ACCOUNT=ACCOUNT_NAME
    
  2. プロジェクトのサービス アカウントを作成します。

    gcloud iam service-accounts create $SERVICE_ACCOUNT \
     --display-name "Service Account for SCC Finding Notifier WebEx Cloud Function" \
     --project $PROJECT_ID
    
  3. サービス アカウントに、組織レベルで securitycenter.assetsViewer ロールを付与します。

     gcloud organizations add-iam-policy-binding $ORG_ID \
       --member="serviceAccount:$SERVICE_ACCOUNT@$PROJECT_ID.iam.gserviceaccount.com" \
       --role='roles/securitycenter.assetsViewer'
    

Webex Bot を作成する

このセクションでは、ワークスペースにメッセージを送信する WebEx Bot を作成します。

  1. WebEx Teams アカウントにログインして、[New Bot] ページに移動します。

  2. Bot 名を [SCC Finding Notifier] に設定します。

  3. わかりやすい一意の名前を [Bot Username] に設定します(your-name-scc-finding-notifier-demo)。

  4. [Icon] で [Default 1] を選択します。

  5. [Description] を「新しい高重要度か重大重要度の検出結果が Security Command Center にパブリッシュされると、チームに通知するボット」に設定します。

  6. [Add Bot] をクリックします。

  7. 確認ページで Bot Access Token をコピーし、Cloud Run functions の関数で使用するために保存します。

ワークスペースに Webex Bot を追加する

このセクションでは、WebEx Bot をワークスペースに追加します。

  1. Bot が通知を送信する WebEx Space で、アクティビティ パネルを展開します。 WebEx パネル

  2. [Add People] を選択します。

  3. テキスト フィールドに「SCC Finding Notifier」と入力し、作成したボットをプルダウン メニューから選択します。 WebEx の追加

  4. [Add] ボタンを選択して、パネルを閉じます。

  5. Cloud Run functions 関数のワークスペースの Room ID を取得します。 デスクトップ パソコンで、https://developer.webex.com/docs/api/v1/rooms/list-rooms にアクセスし、必要に応じてログインします。このページでは、WebEx API を使用して、参加している会議室の一覧を取得します。 WebEx 会議室

  6. 検索パネルに移動します。

  7. パネルの上部にある [Try it] タブを選択します。

  8. すべてのオプションをデフォルト値のままにして、[Run] をクリックします。

  9. [Response] タブでは、items つまり会議室のリストを含む JSON 形式のレスポンスを受け取ります。通知を表示する会議室の title を探して、関連する id の値を記録します。WebEx のレスポンス

次に、WebEx ワークスペースに通知を送信する Cloud Run functions の関数をデプロイします。

WebEx の Cloud Run functions 関数を作成する

このセクションでは、WebEx のアカウントに通知を送信する関数をデプロイします。

  1. Cloud Run functions に移動します。
    Cloud Run functions に移動

  2. PROJECT_ID は、Pub/Sub トピックの作成に使用したものを選択します。

  3. [関数を作成] をクリックします。WebEx の関数

  4. [関数名] を「webex-teams-high-and-critical-findings」に、[トリガーのタイプ] を「Pub/Sub」に設定します。

  5. Pub/Sub トピックには、Pub/Sub トピックの設定で作成したものを選択します。

  6. [変数、ネットワーク、詳細設定] 欄を展開します。

  7. [サービス アカウント] で、作成した webex-cloud-function-sa サービス アカウントをフィルタリングして選択します。 WebEx の変数

  8. [保存] をクリックし、[次へ] をクリックします。

  9. 次のページで、[ランタイム] を [Python 3.8] に設定します。このセクションのコードサンプルは Python で記述されていますが、Cloud Run functions でサポートされている任意の言語を使用できます。

  10. ファイルのリストに移動します。[requirements.txt] をクリックし、次の内容を追加します。

    • requests==2.25.1
    • google-cloud-securitycenter==1.1.0 WebEx の要件
  11. [main.py] をクリックし、その内容を次のコード スニペットに置き換えます。

    #!/usr/bin/env python3
    import base64
    import json
    
    import requests
    from google.cloud import securitycenter_v1
    
    WEBEX_TOKEN = "WEBEX_TOKEN"
    ROOM_ID = "ROOM_ID"
    
    TEMPLATE = """
    **Severity:** {severity}\n
    **Asset:** {asset}\n
    **SCC Category:** {category}\n
    **Project:** {project}\n
    **First observed:** {create_time}\n
    **Last observed:** {event_time}\n
    **Link to finding:** {finding_link}
    """
    
    PREFIX = "https://console.cloud.google.com/security/command-center/findings"
    
    def get_finding_detail_page_link(finding_name):
        """Constructs a direct link to the finding detail page."""
        org_id = finding_name.split("/")[1]
        return f"{PREFIX}?organizationId={org_id}&resourceId={finding_name}"
    
    def get_asset(parent, resource_name):
        """Retrieves the asset corresponding to `resource_name` from SCC."""
        client = securitycenter_v1.SecurityCenterClient()
        resp = client.list_assets(
            securitycenter_v1.ListAssetsRequest(
                parent=parent,
                filter=f'securityCenterProperties.resourceName="{resource_name}"',
            )
        )
        page = next(resp.pages)
        if page.total_size == 0:
            return None
        asset = page.list_assets_results[0].asset
        return json.loads(securitycenter_v1.Asset.to_json(asset))
    
    def send_webex_teams_notification(event, context):
        """Send the notification to WebEx Teams."""
        pubsub_message = base64.b64decode(event["data"]).decode("utf-8")
        message_json = json.loads(pubsub_message)
        finding = message_json["finding"]
    
        parent = "/".join(finding["parent"].split("/")[0:2])
        asset = get_asset(parent, finding["resourceName"])
    
        requests.post(
            "https://webexapis.com/v1/messages",
            json={
                "roomId": ROOM_ID,
                "markdown": TEMPLATE.format(
                    severity=finding["severity"],
                    asset=asset["securityCenterProperties"]["resourceDisplayName"],
                    category=finding["category"],
                    project=asset["resourceProperties"]["project"],
                    create_time=finding["createTime"],
                    event_time=finding["eventTime"],
                    finding_link=get_finding_detail_page_link(finding["name"]),
                ),
            },
            headers={"Authorization": f"Bearer {WEBEX_TOKEN}"},
        )
    
  12. 以下を置き換えます。

    • WEBEX_TOKEN は、WebEx Bot を作成するセクションの Bot Access Token に置き換えます。
    • ROOM_ID は、ワークスペースに WebEx Bot を追加するセクションの Room ID で置き換えます。
  13. [エントリ ポイント] フィールドにカーソルを移し、コード スニペットに関数の名前を入力します(この例では「send_webex_teams_notification」)。

  14. [デプロイ] をクリックします。Cloud Run functions の関数のリストに戻ります。ここに新しい関数が表示されます。関数名の横に緑色のチェックマークが付けば、デプロイは正常に終了しています。この処理には、数分かかる場合があります。WebEx のデプロイ

選択したサービスの上記の手順をエラーなしで完了すると、セットアップが終了し、通知を受信し始めます。注意事項:

  • 重要度が「重大」または「高」の個々の検出結果ごとに個別のメールかチャット メッセージを受け取ります。通知の頻度や数は、組織内のリソースによって変わります。
  • 通知は、ほぼリアルタイムでパブリッシュされ、送信されます。ただし、メールやメッセージの即時性は保証されておらず、SendGrid、メールシステム、Slack、WebEx の問題を含め、さまざまな要因により遅延が発生する可能性があります。

通知ワークフローを変更する方法は、次のとおりです。

  • Cloud Run functions の関数を更新することにより、受信者を変更します。
  • Pub/Sub トピックのフィルタを更新することにより、通知をトリガーする検出結果を変更します。

通知のテスト

通知が正しく構成されているかどうかをテストするには、次の手順に沿って、重要度「高」の検出の有効 / 無効を切り替えます。

  1. Security Command Center の [検出] ページに移動します。
    [検出結果] ページに移動
  2. メッセージが表示されたら、組織を選択します。
  3. [クイック フィルタ] パネルで、[重大度] セクションまで下にスクロールし、[] または [重大] を選択します。[検出結果クエリの結果] パネルが更新され、選択した重要度のみの検出結果が表示されます。
  4. [検出結果クエリの結果] パネルで、名前の横にあるチェックボックスをオンにして検出結果を選択します。
  5. [検出結果クエリの結果] アクションバーの [アクティブ状態を変更] メニューから、[無効] を選択します。現在の検出結果クエリにアクティブな検出結果のみが表示される場合、検出結果はクエリ結果から削除されます。
  6. [クイック フィルタ] パネルで [状態] セクションまでスクロールし、選択を変更して [無効] のみが選択されるようにします。[検出結果クエリの結果] パネルが更新され、無効な検出結果のみが表示されます。
  7. [検出結果クエリの結果] パネルで、無効としてマークした検出結果を選択します。
  8. [検出結果クエリの結果] アクションバーの [アクティブ状態を変更] メニューから、[有効] を選択します。
  9. メールまたはメッセージング サービスを確認すると、次の画像のようなメッセージが表示されます。

メール:

メール通知

Slack:

Slack 通知

このガイドでは多くの情報が含まれますが、WebEx に送信されるメッセージは、次の図のようなものになります。

WebEx 通知

トラブルシューティング

メールやチャットのメッセージが送受信されない場合は、次の手順で問題を特定して解決します。

  • SendGrid Email:

    • メールが迷惑メールフォルダに入らないようにするには、メールの許可リストに from_email 値を追加するか、SendGrid で送信者認証を構成します。
    • SendGrid プランのレート上限を超えていないことを確認してください。
    • 失敗したメールは、SendGrid レポートで見つけることができます。
      • 未認証の送信者からのメールは、ドメインまたはメール プロバイダの DMARC ポリシーによってブロックされることがあります。SendGrid が送信者 ID を管理する方法を確認してください。エラーが発生した場合は、from_email の値に別のメールアドレスをお試しください。
  • SendGrid Email、Slack、WebEx:

    1. Stackdriver ログで、Cloud Run functions の関数を確認して、関数が呼び出されているかどうか判断します。呼び出されていない場合は、通知が正しく設定されていることを確認します。

    2. Cloud Run functions の関数が呼び出されている場合は、関数がクラッシュしている可能性があります。Google Cloud コンソールで Error Reporting を使用して、Cloud Run functions のエラーを確認します。

クリーンアップ

このチュートリアルで使用したリソースについて、Google Cloud アカウントに課金されないようにするには、リソースを含むプロジェクトを削除するか、プロジェクトを維持して個々のリソースを削除します。

プロジェクトの削除

  1. In the Google Cloud console, go to the Manage resources page.

    Go to Manage resources

  2. In the project list, select the project that you want to delete, and then click Delete.
  3. In the dialog, type the project ID, and then click Shut down to delete the project.

リソースを個別に削除する

  1. 通知構成を削除します。

    gcloud scc notifications delete organizations/ORG_ID/notificationConfigs/scc-critical-and-high-severity-findings-notify
    

    ORG_ID は、実際の組織 ID に置き換えます。

    構成を維持したまま、通知を一時停止するには、Cloud Run functions の関数の send または post の呼び出しをコメントアウトします。

  2. Cloud Run functions の関数を削除する

    1. Cloud Run functions に移動します。
      Cloud Run functions に移動
    2. 削除する関数の横にあるチェックボックスをクリックします。
    3. [削除] をクリックします。
  3. サービス アカウントを削除します。

    1. [サービス アカウント] ページに移動します。
      [サービス アカウント] ページに移動
    2. プロジェクトを選択します。
    3. 削除するサービス アカウントを選択して、[削除] をクリックします。

次のステップ