启用实时电子邮件和聊天通知

概览

Security Command Center 会在 Google Cloud 控制台中提供发现结果的实时通知。本指南介绍了如何使用 Google Cloud 服务和第三方 API 来扩展该功能,并在电子邮件和聊天应用中接收近乎实时的通知。完成本指南后,您无需登录 Google Cloud 控制台即可在配置的第三方服务中收到有关新发现结果的提醒,从而加快漏洞和威胁的分类。详细了解 Security Command Center 中不同类型的漏洞和威胁

拓扑

在本指南中,您将创建下图所示的配置。

近乎实时的通知工作流程(点击可放大)
Security Command Center 的近乎实时的通知工作流(点击可放大)

目标

在本指南中,您将执行以下操作:

  1. 设置 Pub/Sub 主题。
  2. 设置 Slack、WebEx Teams 和 SendGrid 电子邮件。
  3. 在 Cloud Run 函数中编写代码。
  4. 配置 Pub/Sub 和 Cloud Run 函数,以便在向 Security Command Center 写入新的严重程度为“高”或“严重”的发现结果时向 Slack、WebEx Teams 或 SendGrid 电子邮件发送通知。
  5. 排查通知问题。

费用

本教程使用 Google Cloud 的以下收费组件:

  • Pub/Sub
  • Cloud Run functions
  • Cloud Build

您可使用价格计算器,根据您的预计使用情况来估算费用。

准备工作

如需完成本指南,您必须拥有以下 Identity and Access Management (IAM) 角色:

  • Organization Admin (roles/resourcemanager.organizationAdmin)
  • Security Center Admin (roles/securitycenter.admin)
  • Security Admin (roles/iam.securityAdmin)
  • 具有 serviceusage.services.use 权限的角色,例如 Owner (roles/owner)、Editor (roles/editor) 或自定义角色
  • Create Service Accounts (roles/iam.serviceAccountCreator)
  • Pub/Sub Editor (roles/pubsub.editor)
  • Billing Account Administrator (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

预计时间:设置和测试单服务通知大约需要一小时。

设置 Pub/Sub 主题

Pub/Sub 是一种实时消息传递服务,可让您在独立的应用之间发送和接收消息。详细了解 Pub/Sub

在本部分中,您将配置 Security Command Center 以将发现结果发布到 Pub/Sub 主题。

如需设置和订阅 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 函数在向主题发布消息时发送电子邮件或聊天消息。

    gcloud pubsub subscriptions create scc-critical-and-high-severity-findings-sub \
      --topic scc-critical-and-high-severity-findings-topic
    
  7. 配置 Security Command Center 以向主题发布通知。可以使用与 ListFindings API 兼容的任何过滤器。

    以下过滤器可发布关于 global 位置中有效的严重程度为“高”和“严重”的发现结果的通知。详细了解如何过滤发现结果

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

接下来,您需要创建或配置电子邮件或聊天应用,以便接收来自 Pub/Sub 的通知。

设置即时通讯应用

本部分介绍了如何使用 Pub/Sub 和 Cloud Run 函数或 Cloud Run 函数(第 1 代)为 SendGrid Email API、Slack 和 WebEx Teams 启用接近实时的通知。

SendGrid 电子邮件

如需启用电子邮件通知,请执行以下操作:

  • 创建一个 SendGrid Email API 账号并获取 API 密钥。
  • 创建和部署 Cloud Run 函数,以便在收到 Pub/Sub 发出通知时发送电子邮件。

创建 SendGrid Email API 账号

在本部分中,您将创建一个 SendGrid Email API 账号并获取 API 密钥。如果您已启用 SendGrid,请跳至获取 Sendgrid Email API 密钥,并确保现有 API 密钥具有足够的权限。

  1. 前往 Google Cloud 控制台。
    前往 Google Cloud 控制台
  2. 在页面顶部的搜索框中,搜索 SendGrid Email APISendGrid 搜索
  3. 在下一页中,选择满足您的需求的方案。

    • 免费方案每月最多可发送 12000 封电子邮件,足以满足本指南的需求,但大型组织可能需要更多可发送电子邮件的数量。如果您预计收到大量电子邮件通知,请考虑向通知添加其他过滤条件,以排除嘈杂的发现结果。
    • 系统可能会要求您选择与 SendGrid 关联的项目。请选择项目以继续。您可能需要具备足够的权限才能管理项目关联的结算账号的购买交易。
  4. 查看条款,如果您同意,请点击订阅

  5. 点击注册 SendGrid 激活 SendGrid 服务。

  6. 在注册屏幕上,输入用户名、密码和电子邮件地址。接受服务条款,然后点击继续

  7. 在确认对话框中,点击返回 Google

获取 SendGrid Email API 密钥

  1. 点击在 SendGrid 网站上管理 API 密钥。 为 SendGrid 网站打开一个新标签页。管理 API 密钥

  2. 如果系统提示,请填写表单或登录。然后点击开始使用!

  3. 在菜单面板中,展开设置并点击 API 密钥

  4. 在下一个屏幕上,点击创建 API 密钥按钮。

  5. API 密钥名称下,输入“SCC 电子邮件通知”,选择完整访问权限,然后点击创建和查看按钮。

    API 密钥名称

  6. 您将看到 API 密钥。记录该值。您将在下一部分中用到该值。

  7. 点击完成。您将看到当前的 API 密钥集。关闭标签页并返回 Google Cloud 控制台。

接下来,您将部署 Cloud Run 函数以向电子邮件地址发送通知。

创建 SendGrid Cloud Run 函数

在本部分中,您将部署一个向您的电子邮件账号发送通知的函数。

  1. 前往 Cloud Run functions。
    前往 Cloud Run 函数

  2. 确保您使用的是用于创建 Pub/Sub 主题的 PROJECT_ID

  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 函数支持的任何语言。

  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 密钥或您在上一部分中创建的密钥。
  11. 转到入口点字段,然后在代码段中(在此示例中为 send_email_notification)输入函数的名称。

  12. 点击部署。您将返回到 Cloud Run 函数列表,您应该会在其中看到新函数。如果函数名称旁显示绿色对勾标记,则表示相应函数已成功部署。此过程可能需要几分钟时间。 SendGrid 函数部署

Slack

如需向 Slack 渠道发送通知,请执行以下操作:

  • 创建一个新的 Slack 应用,该应用拥有向公共 Slack 频道发布消息的权限。
  • 创建和部署 Cloud Run 函数,使其在从 Pub/Sub 收到通知时向 Slack 发布聊天消息。

创建一个新的 Slack 应用

在此部分中,您将创建一个新的 Slack 应用来接收通知。

  1. 导航到 Slack API 应用。该页面将在一个新的标签页中打开。
  2. 登录或创建账户。

  3. 选择创建应用

  4. 应用名称设置为“SCC Finding Notifier”。

  5. 选择您希望 Slack 聊天机器人要向其发布消息的开发 Slack 工作区,然后点击创建应用

  6. 在导航面板中,选择 OAuth 和权限

    Slack 权限

  7. 导航到范围部分。范围分为两类:

    • 聊天机器人令牌范围
    • 用户令牌范围
  8. 在本练习中,您无需添加用户令牌范围。在“聊天机器人令牌范围”下,点击添加 OAuth 范围并输入以下内容:

    • chat:write
    • chat:write.public

      Slack 范围
  9. 滚动到 OAuth 和权限页面顶部,然后点击将应用安装到工作区

  10. 在确认对话框中点击允许

  11. 复制聊天机器人用户 OAuth 访问令牌,以便在 Cloud Functions 函数中使用。

接下来,您将部署一个 Cloud Run 函数以向 Slack 群组发送通知。

创建 Slack Cloud Run 函数

在本部分中,您将部署一个函数来向 Slack 账号发送通知。

  1. 前往 Cloud Run functions。
    前往 Cloud Run 函数

  2. 确保您使用的是创建 Pub/Sub 主题的同一 PROJECT_ID

  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 并添加以下内容:requestsSlack 要求

  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 应用创建的聊天机器人用户 OAuth 访问令牌

  11. 转到入口点字段,然后在代码段中(在此示例中为 send_slack_chat_notification)输入函数的名称。

  12. 点击部署。您将返回到 Cloud Run 函数列表,您应该会在其中看到新函数。如果函数名称旁显示绿色对勾标记,则表示相应函数已成功部署。此过程可能需要几分钟时间。消息会显示在 #general Slack 频道中。 Slack 函数

WebEx

如需向 WebEx Teams 账号发送通知,请执行以下操作:

  • 创建一个有权从 Security Command Center 中检索资源的新服务账号。
  • 创建一个有足够的权限将消息发送到工作区的 WebEx 聊天机器人。
  • 创建和部署一个 Cloud Run 函数,用于订阅 Pub/Sub,并在收到 Pub/Sub 主题的通知时向 WebEx 发布聊天消息。

创建服务账号

默认情况下,Cloud Run 函数无法从 Security Command Center 中检索资源。在本部分中,您将预配服务账号,以允许 Cloud Run 函数检索与发现结果关联的资产。

  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 聊天机器人

在本部分中,您将创建一个可将消息发布到您的工作区的 WebEx 聊天机器人。

  1. 登录您的 WebEx Teams 账号,然后前往新建聊天机器人页面。

  2. 聊天机器人名称设置为“SCC Finding Notifier”。

  3. 选择具有描述性但唯一的聊天机器人用户名 (your-name-scc-finding-notifier-demo)。

  4. 图标下,选择默认 1

  5. 在新的严重程度为“高”或“严重”的发现结果发送到 Security Command Center 时,将说明设置为“会通知团队的机器人”。

  6. 点击添加聊天机器人

  7. 在确认页面上,复制聊天机器人访问令牌并保存,以在 Cloud Run 函数中使用。

将 Webex 聊天机器人添加到工作区

在本部分中,您可将 WebEx 聊天机器人添加到工作区。

  1. 在您希望聊天机器人向其发布通知的 WebEx 空间中,展开活动面板。 WebEx 面板

  2. 选择加人

  3. 在文本字段中键入“SCC Finding Notifier”,然后从下拉菜单中选择您创建的聊天机器人。 WebEx 添加

  4. 选择添加按钮,然后关闭面板。

  5. 获取 Cloud Run 函数工作区的聊天室 ID。在台式机上,转到 https://developer.webex.com/docs/api/v1/rooms/list- rooms,然后在必要时登录。本页面使用 WebEx API 来列出您所属的聊天室。 WebEx 聊天室

  6. 导航到搜索面板。

  7. 选择面板顶部标记为试用的标签页。

  8. 将所有选项保留为默认值,然后点击运行

  9. 响应 (Response) 标签页中,您会收到 JSON 格式的响应,其中包含 items 或聊天室列表。找到您要显示通知的聊天室的 title,并记录关联的 id 值。WebEx 响应

接下来,您将部署 Cloud Run 函数以向 WebEx 工作区发送通知。

创建 WebEx Cloud Run 函数

在本部分中,您将部署一个函数来向您的 WebEx 账号发送通知。

  1. 前往 Cloud Run functions。
    前往 Cloud Run 函数

  2. 选择在其中创建 Pub/Sub 主题的 PROJECT_ID

  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 聊天机器人部分中的聊天机器人访问令牌。
    • ROOM_ID 替换为将 WebEx 聊天机器人添加到工作区部分中的聊天室 ID。
  13. 转到入口点字段,然后在代码段中(在此示例中为 send_webex_teams_notification)输入函数的名称。

  14. 点击部署。您将返回到 Cloud Run 函数列表,您应该会在其中看到新函数。如果函数名称旁显示绿色对勾标记,则表示相应函数已成功部署。此过程可能需要几分钟的时间。WebEx 部署

如果所选服务的上述步骤已正确完成,则说明安装已完成,您可开始接收通知。注意:

  • 对于每个关键或高严重性发现,您都会收到单独的电子邮件或聊天消息。通知的频率或数量取决于组织内的资源。
  • 系统会近乎实时地发布和发送通知。然而,电子邮件或消息的即时性得不到保证,多种因素可能导致延迟,包括 SendGrid、电子邮件系统、Slack 或 WebEx 的问题。

如需更改通知工作流,您可以执行以下操作:

  • 通过更新 Cloud Run 函数来更改收件人。
  • 更新 Pub/Sub 主题的过滤条件,以更改发现结果触发通知。

测试通知

如要测试通知是否已正确配置,请按照以下说明将高严重级别的发现结果在活跃状态和非活跃状态之间切换。

  1. 转到 Security Command Center“发现结果”页面。
    转到“发现结果”页面
  2. 如果出现提示,请选择您的组织。
  3. 快速过滤条件面板中,向下滚动到严重级别部分,然后选择严重发现结果的查询结果面板会相应更新,以仅显示所选严重级别的发现结果。
  4. 发现结果的查询结果面板中,通过勾选发现结果名称旁边的复选框选中一个发现结果。
  5. 发现结果的查询结果操作栏的更改活跃状态菜单中,选择非活跃。如果当前发现结果查询仅显示活跃发现结果,则系统会从查询结果中移除该发现结果。
  6. 快速过滤条件面板中,向下滚动到状态部分,然后更改选项,以仅选择非活跃发现结果的查询结果面板会相应更新,以仅显示非活跃发现结果。
  7. 发现结果的查询结果面板中,选择您标记为非活跃的发现结果。
  8. 发现结果的查询结果操作栏的更改活跃状态菜单中,选择活跃
  9. 检查您的电子邮件或消息传递服务,您应该会看到类似于下图的消息。

电子邮件:

电子邮件通知

Slack:

Slack 通知

发送到 WebEx(包含本指南中详细信息)的消息,类似于下图。

WebEx 通知

问题排查

如果未发送或接收电子邮件或聊天消息,请按照以下步骤识别并解决潜在问题。

  • SendGrid 电子邮件:

    • 如要阻止电子邮件发送到垃圾邮件文件夹,请将 from_email 值添加到电子邮件许可名单中或在 SendGrid 上配置发件人身份验证
    • 确保您未超过 SendGrid 方案的速率限制。
    • 您可以通过 SendGrid 报告检测失败的电子邮件。
      • 您的网域或电子邮件服务提供商的 DMARC 政策可能会阻止来自未经身份验证的发件人的电子邮件。了解 SendGrid 如何管理发件人身份。如果出现错误,请尝试使用 from_email 值中的另一个电子邮件地址。
  • SendGrid 电子邮件、Slack 和 WebEx:

    1. 检查 Cloud Run 函数的 Stackdriver 日志,以确定函数是否被调用。如果未调用,请确保正确设置该通知。

    2. 如果调用 Cloud Run 函数,它可能会崩溃。使用 Google Cloud 控制台 Error Reporting 检查 Cloud Run 函数中的错误。

清理

为避免因本教程中使用的资源导致您的 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 scc-critical-high-severity \
        --organization=ORG_ID \
        --location=global
    

    ORG_ID 替换为您的组织 ID。

    为了保留配置并暂停通知,您可以在 Cloud Run 函数中注释掉 sendpost 调用。

  2. 删除 Cloud Run functions 函数:

    1. 前往 Cloud Run functions。
      前往 Cloud Run 函数
    2. 点击您要删除的函数旁的复选框。
    3. 点击删除
  3. 删除服务账号:

    1. 转到服务账号页面。
      转到“服务账号”页面
    2. 选择一个项目。
    3. 选择要删除的服务账号,然后点击删除

后续步骤