导出 Security Command Center 数据

本页面介绍导出 Security Command Center 数据(包括资产、发现结果和安全标记)的两种方法:

  • 针对现有发现结果、资产和安全标记进行一次性导出
  • 持续导出功能,可自动将新发现结果导出到 Pub/Sub

您可以使用 Google Cloud 控制台、Google Cloud CLI 或 Security Command Center API 导出 Security Command Center 数据。

您还可以将发现结果流式传输到 BigQuery。如需了解详情,请参阅将发现结果流式传输到 BigQuery 以供分析

一次性导出

通过一次性导出,您可以手动转移和下载当前及历史发现结果和资产。

对于发现结果,您可以使用 Google Cloud 控制台将 JSON、JSONL 或 CSV 格式的数据转移到 Cloud Storage 存储桶。您还可以将有限数量的发现结果以 CSV 格式下载到工作站。

对于资产,您可以从 Google Cloud 控制台将数据以 CSV 文件格式下载到本地工作站。

权限

要执行一次性导出,您需要具有以下角色:

  • Identity and Access Management (IAM) 角色 Security Center Admin Viewer (roles/securitycenter.adminViewer) 或具有以下权限的任何角色:

    • resourcemanager.organizations.get(只有组织级 Security Command Center 激活需要此角色)
    • resourcemanager.projects.get(只有项目级 Security Command Center 激活需要此角色)
    • securitycenter.assets.group
    • securitycenter.assets.list
    • securitycenter.findings.group
    • securitycenter.findings.list
    • securitycenter.sources.get
    • securitycenter.sources.list
    • securitycenter.userinterfacemetadata.get
  • Storage Admin 角色,可让您将数据存储在 Cloud Storage 存储分区中。

Security Command Center 的 IAM 角色可以在组织、文件夹或项目级层授予。您能否查看、修改、创建或更新发现结果、资产和安全来源,取决于您获授予的访问权限级别。如需详细了解 Security Command Center 角色,请参阅访问权限控制

数据驻留和一次性导出

您不能将任何受数据驻留控制的数据添加到一次性导出到 Cloud Storage 的过滤条件中。

如果您在发现结果过滤器中指定包含受控数据的属性,则 Security Command Center 会在您尝试导出时返回错误消息。

使用 Google Cloud 控制台导出数据

使用 Google Cloud 控制台,您可以执行以下操作:

将发现结果导出到 Cloud Storage 存储桶

本部分介绍如何将 Security Command Center 数据导出到 Cloud Storage 存储桶。点击 Google Cloud 控制台中的发现结果页面上的导出后,Security Command Center 会自动获取写入 Cloud Storage 存储桶的凭据或权限。

发现结果会在单独的操作中导出。您可以在导出过程中将 JSON 文件、JSONL 文件或 CSV 文件导出到现有 Cloud Storage 存储桶或创建一个存储桶。

您可以导出所有当前发现结果,或选择在导出之前要使用的过滤条件。

  1. 进入 Google Cloud 控制台中的发现结果页面。

    转至“发现结果”

  2. 在工具栏上,点击 项目选择器,然后选择您的项目、文件夹或组织。

  3. 通过对发现结果查询应用过滤条件,选择需要导出的结果。如需详细了解如何创建过滤条件,请参阅在 Google Cloud 控制台中创建或修改发现结果查询

  4. 创建完过滤条件后,点击导出,然后在一次性下,点击 Cloud Storage

  5. 导出页面上配置导出:

    1. 导出到部分,指定以下字段:
      1. 项目名称字段中,指定包含 Cloud Storage 存储桶的项目。
      2. 导出路径字段中(仅在指定项目后显示)中,点击浏览
      3. 选择对象面板上,选择现有的 Cloud Storage 存储桶或创建存储桶
      4. 选择或创建存储桶后,在文件名下,为导出文件输入名称。
      5. 点击选择
    2. 导出条件部分,指定以下字段:
      1. 点击结果分组依据,然后选择对导出数据的分组方式。
      2. 点击格式字段,然后选择 JSONJSONLCSV
      3. 点击时间范围字段,然后选择导出发现结果的时间段。
    3. 发现结果查询部分中,确认查询按预期显示。
    4. 在查询下方,确认匹配结果的数量和类型是否符合您的预期。
    5. 点击导出

    如果您选择存储桶中的现有文件,则会显示确认覆盖对话框。

    • 要覆盖现有文件,请点击确认
    • 要更改写入文件,请点击取消,然后点击导出路径框中的浏览,并选择或创建不同的文件。

已配置的数据将保存到您指定的 Cloud Storage 存储桶中。

从 Cloud Storage 存储桶下载导出数据

如需下载导出的 JSON、JSONL 或 CSV 数据,请按以下步骤操作:

  1. 转到 Google Cloud 控制台中的 Storage 浏览器页面。

    转至“Storage 浏览器”

  2. 选择您的项目,然后点击向其中导出了数据的存储桶。

  3. 选中导出文件旁边的复选框,然后点击下载

  4. 保存文件对话框中,选择要保存文件的位置,然后点击保存

系统会将 JSON、JSONL 或 CSV 文件下载到您指定的位置。

将发现结果导出为 CSV 文件

如需配置导出,您可以按类别、严重级别和其他属性过滤发现结果。与过滤条件匹配的所有发现结果都包含在 CSV 文件中。

您最多可以将 1,000 个发现结果直接下载到工作站。如果发现结果数量超过 1000 个,系统会自动将您重定向到将发现结果导出到 Cloud Storage 页面,您可以在其中将数据导出到 Cloud Storage 存储桶。

发现结果记录与一组默认列一起导出,可能与您在 Google Cloud 控制台中看到的内容不匹配。也就是说,使用 列显示选项隐藏或取消隐藏列不会改变要导出哪些列。同样,更改每页行数值对导出的内容没有影响。

如需将发现结果导出为 CSV 文件,请执行以下步骤:

  1. 在 Google Cloud 控制台的 Security Command Center 页面上,转到发现结果页面。

    转至“发现结果”

  2. 在工具栏上,点击 项目选择器,然后选择您的项目、文件夹或组织。

  3. 可选:如需缩小要导出的发现结果的范围,请应用过滤条件

  4. 点击 导出,然后点击 CSV。Security Command Center 开始导出发现结果。

    导出完成后,工具栏上会显示一条通知。

  5. 在工具栏中,点击通知图标。

  6. 已将导出另存为 CSV 通知上,点击下载。CSV 文件将下载到您的本地工作站。

将资产导出为 CSV 文件

您可以从 Google Cloud 控制台的资产页面中将资产数据下载为 CSV 文件。

如需将资产数据下载为 CSV 文件,请按照以下步骤操作:

  1. 进入资产页面:

    打开“资产”

  2. 在工具栏上,点击 项目选择器,然后选择您的项目、文件夹或组织。

  3. 使用快速过滤条件面板或资产结果面板的过滤条件字段来选择需要导出的资产。如需详细了解如何过滤资产,请参阅过滤资产

  4. 在显示的资产上方,点击导出,然后点击下载 CSV。结果面板中的资产数据会下载到工作站。

使用 API 方法导出数据

您可以使用 Security Command Center API 将资产、发现结果和安全标记导出到 Cloud Storage 存储桶或本地工作站。

使用 API 方法导出资产数据

如需导出或列出资产数据,请使用 Cloud Asset Inventory API。如需了解详情,请参阅导出资产历史记录和元数据

Security Command Center API 的资源方法和字段已弃用,将于 2024 年 6 月 26 日当天或之后移除。

移除之前,在 2023 年 6 月 26 日之前激活了 Security Command Center 的用户可以使用 Security Command Center API 的资产方法列出和导出资产数据,但这些方法仅支持 Security Command Center 支持的资产。

如需了解如何使用已弃用的资产 API 方法,请参阅列出资产

使用 Security Command Center API 导出发现结果数据

如需使用 Security Command Center API 导出发现结果,请按照有关列出安全发现结果的指南操作,然后下载或导出 API 响应。

如需列出带有任何附加安全标记的发现结果,您可以使用以下 API 方法:

这些方法会以 JSON 格式返回发现结果及其完整的属性、特性和关联标记。如果您的应用需要其他格式的数据,则需要编写自定义代码来转换 JSON 输出。

如果您在 groupBy 字段中指定值,则可以使用以下方法:

GroupFindings 方法会返回组织的发现结果列表,按指定的属性分组。

使用 gcloud CLI 导出发现结果

如需在 Cloud Shell 中使用 Google Cloud CLI 命令将发现结果导出到 Cloud Storage 存储桶,请按以下步骤操作:

  1. 打开 Cloud Shell。

    打开 Cloud Shell

  2. 如需将发现结果写入文件,请在 gcloud CLI 命令中添加输出字符串,以列出发现结果

    例如,以下命令将列出的发现结果存储在名为 FINDINGS.txt 的文本文件中。

     gcloud scc findings list PARENT_ID --source=SOURCE_ID \
       --location=locations/LOCATION --filter="FILTER" > FINDINGS.txt
    

    替换以下内容:

    • FILTER:可选表达式,用于仅输出与过滤表达式匹配的发现结果列表。

      • LOCATION:如果启用了数据驻留,请指定存储发现结果的 Security Command Center 位置

        如果未启用数据驻留,则指定 --location 标志会使用 Security Command Center API v2 列出发现结果,并且该标志的唯一有效值为 global

    • PARENT_ID:以下任意父级资源的 ID:

      • 组织,指定为 organizations/ORGANIZATION_IDORGANIZATION_ID
      • 文件夹,指定为 folders/FOLDER_ID
      • 项目,指定为 projects/PROJECT_ID
    • SOURCE_ID:发现结果提供商的来源 ID。 如需查找来源 ID,请参阅获取来源 ID

    • FINDINGS.txt:用于存储发现结果列表的目标文件的名称和扩展名。

  3. FINDINGS.txt 复制到您的 Cloud Storage 存储桶。

    gsutil cp FINDINGS.txt gs://BUCKET_NAME

    BUCKET_NAME 替换为您的存储桶名称。

  4. 如需将 FINDINGS.txt 保存到您的本地工作站(而不是 Cloud Storage 存储桶),请运行以下命令:

    cloudshell download FINDINGS.txt

持续导出

持续导出功能可简化将 Security Command Center 发现结果自动导出到 Pub/Sub 的过程。新发现结果写入时,它们会近乎实时地自动导出到指定的 Pub/Sub 主题,使您能够将其集成到现有工作流中。

如需了解有关 Pub/Sub 的更多信息,请参见什么是 Pub/Sub

持续导出与发现结果通知

Security Command Center 允许您使用 Security Command Center API 为 Pub/Sub 设置发现结果通知。此 API 要求您使用 Google Cloud CLI 设置 Pub/Sub 主题,创建发现结果过滤条件,以及创建 NotificationConfigs 文件(包含发送通知的配置设置)。持续导出提供相同的功能,但使用 Google Cloud 控制台可以简化导出创建过程。

权限

如需创建和管理持续导出,您需要以下角色之一。

  • roles/securitycenter.adminEditor
  • roles/securitycenter.adminViewer

您也可以使用具有以下权限的任何角色:

  • 如需查看或发布 Pub/Sub 主题:

    • pubsub.topics.publish
    • pubsub.topics.list
  • 如需查看持续导出页面:

    • securitycenter.notificationconfig.get
    • securitycenter.notificationconfig.list
  • 如需管理持续导出,请执行以下操作:

    • securitycenter.notificationconfig.create
    • securitycenter.notificationconfig.update
    • securitycenter.notificationconfig.delete

如需详细了解 Security Command Center 角色,请参阅访问权限控制

数据驻留和持续导出

如果为 Security Command Center 启用了数据驻留,则定义到 Pub/Sub 的持续导出到 notificationConfig 资源的配置受数据驻留控制,并存储在您选择的 Security Command Center 位置

如需将某个 Security Command Center 位置中的发现结果导出到 Pub/Sub,您必须在发现结果所在的 Security Command Center 位置配置持续导出。

由于持续导出中使用的过滤条件可能包含受驻留控制措施约束的数据,因此在创建它们之前,请务必指定正确的位置。Security Command Center 不限制您在哪个位置创建导出作业。

持续导出仅存储在创建它们的位置,无法在其他位置查看或修改。

创建持续导出后,便无法更改其位置。如需更改位置,您需要删除持续导出,然后在新位置重新创建。

如需使用 API 调用检索连续导出,您需要在 notificationConfig 的完整资源名称中指定位置。例如:

GET https://securitycenter.googleapis.com/v2/{name=organizations/123/locations/eu/notificationConfigs/my-pubsub-export-01}

同样,如需使用 gcloud CLI 检索连续导出,您需要在配置的完整资源名称中或使用 --locations 标志指定位置。例如:

gcloud scc notifications describe myContinuousExport organizations/123 \
    --location=locations/us

创建到 Pub/Sub 的持续导出

借助持续导出功能,您可以将所有未来的所有发现结果自动导出到 Pub/Sub,或者创建过滤条件以导出符合特定条件的未来发现结果。您可以按类别、来源、资产类型、安全标记、严重程度、状态和其他变量来过滤发现结果。

您的组织最多可以创建 500 项持续导出。

如需为 Pub/Sub 创建导出任务,请执行以下操作:

  1. 转到 Google Cloud 控制台中的 Security Command Center 发现结果页面。

    转至“发现结果”

  2. 在工具栏上,点击 项目选择器,然后选择您的项目、文件夹或组织。

  3. 如果已启用数据驻留支持,请在项目选择器的正下方选择数据驻留位置。例如:

    位置选择器的屏幕截图

  4. 发现结果查询结果字段中,使用以下任一方法选择要导出的结果:

    • 通过点击添加过滤条件选择需要导出的发现结果的属性。

      选择过滤条件对话框中,您可以选择支持的发现结果属性和值。 查询过滤条件对话框

      1. 选择发现结果特性或在搜索发现结果特性框中输入其名称。 系统会显示可用子特性的列表。
      2. 选择子特性。评估选项的选择字段显示在位于发现结果的查询结果面板中的发现结果的子特性值列表上方。
      3. 为所选子特性的值选择评估选项。如需详细了解评估选项及其使用的运算符和函数,请参阅“添加过滤条件”菜单中的查询运算符
      4. 选择应用

        对话框将会关闭,并且您的查询即会更新。

      5. 重复这些步骤,直到发现结果查询包含所需的所有特性。
    • 通过在查询编辑器中手动编写发现结果查询代码。您可以使用标准 SQL 运算符 ANDOR、等于 (=)、包含 (:) 和不包含 (-) 来指定需要导出的发现结果属性和发现结果值。

      当您在查询中输入内容时,系统会显示自动补全菜单,您可以在其中选择过滤条件名称和函数。

      例如,以下查询会忽略 prod-project 中严重级别为“低”和“中等”的 anomalous IAM grant 发现结果,并排除名称具有子字符串 compute 的资源类型:

      severity="LOW" OR severity="MEDIUM" AND category="Persistence:
      IAM Anomalous Grant" AND resource.project_display_name="prod-project"
      AND -resource.type:"compute"
      

      如需查看有关过滤发现结果的更多示例,请参阅过滤通知

  5. 查看生成的查询的准确性。如需进行更改,请根据需要删除或添加属性并过滤值。

  6. 点击刷新匹配的发现结果。表格中会显示与您的查询匹配的发现结果。如需详细了解如何查询发现结果,请参阅在 Google Cloud 控制台中修改发现结果查询

  7. 点击导出,然后在连续下,点击 Pub/Sub

  8. 检查您的过滤条件以确保其正确无误,并在必要时返回发现结果页面进行修改。

  9. 持续导出名称下,为导出项输入名称。

  10. 持续导出说明下,输入导出的说明。

  11. 导出到下,选择用于导出的项目。您无法在此页面上创建项目。如需创建新项目,请参阅创建项目

  12. Pub/Sub 主题下,选择要导出发现结果的主题。要创建主题,请执行以下操作:

    1. 选择创建主题
    2. 输入主题 ID,然后根据需要选择其他选项:
      1. 了解如何创建和管理架构
      2. 了解如何搭配使用客户管理的加密密钥 (CMEK) 和 Pub/Sub
    3. 点击创建主题
  13. 点击保存。您会看到确认并返回到发现结果页面。

  14. 按照指南为您的 Pub/Sub 主题创建订阅

Pub/Sub 导出配置完成。如需发布通知,系统会以 service-org-ORGANIZATION_ID@gcp-sa-scc-notification.iam.gserviceaccount.com 的形式为您创建一个服务账号。此服务账号会在组织级层被自动授予 roles/securitycenter.notificationServiceAgent 角色。需要此服务账号角色才能接收通知。

测试持续导出

如需确认导出作业正常,请执行以下步骤切换发现结果的活跃状态和非活动状态状态。

  1. 转到 Google Cloud 控制台中的 Security Command Center 发现结果页面。

    转至“发现结果”

  2. 点击修改查询按钮。系统会打开查询编辑器

  3. 修改查询,以便同时显示有效和无效的发现结果。以下查询会省略 state 属性,以显示被忽略的发现结果之外的所有发现结果:

    NOT mute="MUTED"

  4. 如有必要,请使用查询编辑器重新输入与要测试的导出过滤条件匹配的过滤条件变量。

  5. 点击发现结果名称旁边的复选框。

  6. 选择更改活跃状态,然后选择非活跃

  7. 重新选择标记为非活跃状态的发现结果。

  8. 选择更改活跃状态,然后选择活跃。将发送有关新的活跃发现结果的通知。

  9. 转到 Google Cloud 控制台中的 Pub/Sub 页面。

    转到“Pub/Sub”

  10. 在主题列表中,点击您的主题的名称。

  11. 选择 查看消息

  12. 消息面板中,从下拉列表中选择您的订阅以查看发现结果通知。如有必要,点击拉取以刷新消息。

管理持续导出

如需查看、修改或删除导出,请执行以下操作:

  1. 转至 Security Command Center 中的设置页面。

    转至“设置”

  2. 在工具栏上,点击 项目选择器,然后选择您的项目、文件夹或组织。

  3. 如果已启用数据驻留支持,请在项目选择器的正下方选择数据驻留位置。例如:

    位置选择器的屏幕截图

  4. 选择持续导出。您会看到项目、文件夹或组织的持续导出列表。

设置持续导出页面上,您可以创建、查看、修改和删除持续导出。

要查看与导出过滤条件匹配的发现结果,请执行以下操作:

  1. 持续导出页面上,选择某个导出项名称旁边的显示更多标签 ,然后点击查看相关过滤条件中。
  2. 系统随即会加载发现结果页面,其中包含与导出过滤条件匹配的结果。

修改持续导出内容

  1. 持续导出页面上,点击要查看或修改的导出作业的名称,或点击更多图标
  2. 选择修改
  3. 输入新说明、更改导出保存到的目标项目,或输入新的 Pub/Sub 主题。
  4. 完成后,点击保存

删除持续导出

  1. 持续导出页面上,点击要删除的导出的名称。
  2. 点击 删除
  3. 在该对话框中,点击删除。导出将被删除。

后续步骤

详细了解如何发现结果通知