导出 Security Command Center 数据

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

您可以使用 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 存储桶,也可以在导出过程中创建存储桶。您可以导出所有当前发现结果,也可以在导出前选择要使用的过滤条件。

您无法将发现结果导出到已设置保留政策的 Cloud Storage 存储桶。

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

    转至“发现结果”

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

  3. 通过对发现结果查询应用过滤条件,选择您需要导出的发现结果。如需详细了解如何创建过滤条件,请参阅查找和查看特定发现结果

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

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

    1. 导出到部分中,指定以下字段:
      1. Project name(项目名称)字段中,指定包含 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 项发现结果直接下载到工作站。如果发现结果的数量超过 1,000 个,系统会提示您优化查询以减少结果数量。或者,您也可以将数据导出到 Cloud Storage 存储桶

发现结果记录与一组默认列一起导出,可能与您在控制台中看到的内容不匹配。也就是说,隐藏或显示列不会更改导出的列。同样,更改每页显示的行数(您可以在 Google Cloud 控制台中执行此操作)对导出的内容没有影响。

如需了解如何将发现结果导出为 CSV 文件,请点击您所用的控制台对应的标签页。

Google Cloud 控制台

  1. 在 Google Cloud 控制台中,前往 Security Command Center 的发现结果页面。

    前往“发现结果”页面

  2. 选择您的 Google Cloud 项目或组织。
  3. 可选:如需优化要导出的发现结果的选择,请应用过滤条件
  4. 依次点击 导出 > CSV。CSV 文件将下载到您的本地工作站。

安全运维控制台

  1. 在 Security Operations 控制台中,前往发现结果页面。
    https://CUSTOMER_SUBDOMAIN.backstory.chronicle.security/posture/findings
    

    CUSTOMER_SUBDOMAIN 替换为您的客户专用标识符。

  2. 可选:如需优化要导出的发现结果的选择,请应用过滤条件
  3. 依次点击导出 > CSV。CSV 文件将下载到您的本地工作站。

将资产导出为 CSV 文件

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

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

  1. 在 Google Cloud 控制台中,前往 Security Command Center 的资产页面。

    前往“素材资源”页面

  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 字段中指定值,则可以使用以下方法按您指定的属性对组织、文件夹或项目中的发现结果进行分组列出:

使用 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=LOCATION \
        --filter="FILTER" > FINDINGS.txt

    请替换以下内容:

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

    • 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 存储分区。

    gcloud storage 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 数据导出到 BigQuery

在 Security Command Center 中更新发现结果的属性时,系统会拍摄该发现结果的快照,并尝试将该快照发送到 BigQuery。

  • 如果快照中发现结果的属性与 BigQueryExport 中定义的导出过滤条件匹配,系统会将快照发送到 BigQuery,在 BigQuery 中,该快照会成为发现结果的当前记录。

  • 如果发现的属性与过滤条件不匹配,系统不会将快照发送到 BigQuery。如果 BigQuery 中存在相应发现结果的上一个快照,则该上一个快照会成为 BigQuery 中相应发现结果的当前记录,即使该快照未反映 Security Command Center 中发生的属性更新也是如此。

例如,如果 BigQuery 导出的过滤条件包含“有效”状态,系统会发出一个具有“有效”状态的新发现,并将该发现的快照成功导出到 BigQuery。

之后,Security Command Center 中该发现结果的状态会更新为无效。此更新会触发将发现结果的新快照导出到 BigQuery,但由于状态值不再与过滤条件匹配,因此过滤条件会阻止导出发现结果快照。

因此,BigQuery 中相应发现结果的快照仍处于“活跃”状态,但 Security Command Center 中的同一发现结果处于“无效”状态。

这也会导致 Security Command Center 中的有效发现结果数量与 BigQuery 中的有效发现结果数量不一致。BigQuery 中的数量几乎总是比 Security Command Center 中的数量多。

例如,如果导出过滤条件指定了“有效”状态,并且系统生成了 100 条具有“有效”状态的发现结果,则系统会将这 100 条结果全部导出到 BigQuery。之后,在 Security Command Center 中,其中 50 项发现结果会更新为“无效”,而过滤条件会阻止更新触发的导出,因为状态值不再与过滤条件匹配。因此,在 BigQuery 中,所有 100 项发现结果都仍然有效,而在 Security Command Center 中,只有 50 项发现结果仍然有效。

持续导出与发现结果通知

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/organizations/123/locations/eu/notificationConfigs/my-pubsub-export-01

同样,如需使用 gcloud CLI 检索连续导出内容,您需要使用 --location 标志指定位置。例如:

gcloud scc notifications describe myContinuousExport --organization=123 \
    --location=us

创建持续导出到 Pub/Sub

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

为 Pub/Sub 创建新的持续导出时,您可以使用 Google Cloud 控制台、gcloud CLI、v2 Security Command Center API 或 Security Command Center 的 v2 客户端库进行管理。

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

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

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

    转至“发现结果”

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

  3. 可选:如果为 Security Command Center 启用了数据驻留,请根据需要更改数据位置。

    如需更改数据位置,请点击操作栏中的位置选择器。

    系统随即会显示营业地点列表。选择新位置。

  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"
    1. 如有必要,请使用查询编辑器重新输入与要测试的导出过滤条件匹配的过滤条件变量。
    2. 选择一条发现,然后依次点击更改有效状态 > 无效
    3. 再次选择您标记为非活跃状态的发现结果,然后依次点击更改活跃状态 > 活跃。系统会发送有关新的活跃发现结果的通知。
    4. 转到 Google Cloud 控制台中的 Pub/Sub 页面。

    转到“Pub/Sub”

    1. 在主题列表中,点击您的主题的名称。
    2. 前往消息标签页,然后从列表中选择您的订阅以查看发现结果通知。
    3. 可选:点击拉取以刷新消息。

管理连续导出

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

  1. 在 Google Cloud 控制台中,前往 Security Command Center 设置页面。

    转至“设置”

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

  3. 可选:如果为 Security Command Center 启用了数据驻留,请根据需要更改数据位置。

    如需更改数据位置,请点击操作栏中的位置选择器。

    系统随即会显示营业地点列表。选择新位置。

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

在 Google Cloud 控制台中,某些持续导出内容可能带有旧版标签,这表示它们是使用 v1 Security Command Center API 创建的。您可以使用 Google Cloud 控制台、gcloud CLI、v1 Security Command Center API 或 Security Command Center 的 v1 客户端库来管理这些持续导出。

如需使用 gcloud CLI 管理这些持续导出,您在运行 gcloud CLI 命令时不得指定位置。

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

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

持续导出页面上,选择某个导出项名称旁边的显示更多标签 ,然后点击查看相关过滤条件中。

系统随即会加载发现结果页面,其中包含与导出过滤条件匹配的结果。

修改持续导出

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

删除连续导出

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

后续步骤

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