配置 VPC Service Controls

支持范围:

本指南介绍了如何为 Google Security Operations 配置 VPC Service Controls。

借助 VPC Service Controls,您可以设置服务边界以防范数据渗漏。使用 VPC Service Controls 配置 Google Security Operations,以便 Google SecOps 可以访问其服务边界之外的资源和服务。

如需详细了解 VPC Service Controls,请参阅 VPC Service Controls 概览。您还可以参阅 VPC Service Controls 支持的产品表格中的 Google Security Operations 条目。

准备工作

  • 确保您拥有在组织级配置 VPC Service Controls 所需的角色。
  • 如需将 Google SecOps 与 VPC Service Controls 搭配使用,您只能使用符合 VPC Service Controls 规范的功能。以下列出了符合 VPC Service Controls 规范的功能:

    • 采用 VPC Service Controls 的 Google SecOps 仅支持 Google Cloud 身份验证、第三方身份提供方和员工身份联合。
    • 必须启用 Google SecOps 功能 RBAC,才能将 VPC Service Controls 与 Google SecOps 搭配使用。
    • 采用 VPC Service Controls 的 Google SecOps 仅支持以下面向公众的 API:

      • chronicle.googleapis.com
      • chronicleservicemanager.googleapis.com

      如需加入 VPC Service Controls,您必须将所有相应端点迁移到 chronicle.googleapis.com API。

    • 如果 Google SecOps 启用了 VPC Service Controls,则仅支持将 Google SecOps 统一数据模型 (UDM) 数据导出到自行管理的 BigQuery 项目或使用高级 BigQuery Export。

    • VPC Service Controls 仅支持 Google SecOps 信息中心。

    • 您只能使用 v2 连接器创建 GOOGLE_CLOUD_STORAGE_V2 来源类型的 Cloud Storage Feed。

    • 当 Google SecOps 受到 VPC Service Controls 边界限制时,如果您创建新的 Pub/Sub 订阅,Google SecOps 会要求您将日志写入 Cloud Storage,并使用 GOOGLE_CLOUD_STORAGE_V2 或 GOOGLE_CLOUD_STORAGE_EVENT_DRIVEN,而不是 CLOUD_PUB_SUB Feed。

  • 对于使用客户管理的加密密钥 (CMEK) 的 Google SecOps 实例,Google 强烈建议您将 Cloud Key Management Service 项目与 Google SecOps 关联的 Google Cloud 项目放在同一边界内,或者将密钥放在 Google SecOps 关联的 Google Cloud 项目本身内。

  • 对于平台的 SOAR 部分,如果您的 Google SecOps 实例使用客户管理的加密密钥 (CMEK),请确认您的 SOAR 实例已迁移到 Google.com。

  • 如果您使用的是旧版 SOAR 数据导出到 BigQuery(例如 Looker 或代管式 BigQuery Export),Google 建议您改用自带 BigQuery (BYOBQ) 功能。由于 Looker 信息中心是一项旧版功能,Google 还建议您改用信息中心。如果您继续使用旧版 SOAR 数据导出到 BigQuery,则必须在 VPC Service Controls 服务边界中配置专用出站规则。如需获取所需的规则和项目信息(例如 SOAR_TENANT_PROJECT_ID 和 BQ_TLA_PROJECT_NUMBER),请与您的客户工程师 (CE) 联系或提交支持请求。

限制

  • Google SecOps Chronicle API 端点 ImportPushLogs 不支持 VPC Service Controls。不过,此限制不会带来数据渗漏风险,因为 ImportPushLogs 端点仅用于将数据推送到 Google SecOps 实例,而不用于访问数据。

  • 采用 VPC Service Controls 的 Google SecOps 不支持 Looker 信息中心。

  • Google Cloud Pub/Sub 不支持创建使用 Chronicle API 端点注入日志的新 Pub/Sub 订阅(VPC Service Controls 支持的产品表中的 Pub/Sub 条目)。不过,任何现有的 Pub/Sub 订阅(在将 Google Cloud 项目移入 VPC Service Controls 边界之前创建)都将继续按预期注入日志。

  • 搭配 VPC Service Controls 使用的 Google SecOps 不支持旧版云存储桶和第三方 API Feed 连接器。

配置入站和出站规则

根据服务边界配置,配置入站和出站规则。如需了解详情,请参阅服务边界概览。

如果您遇到 VPC Service Controls 问题,请使用 VPC Service Controls 违规分析器来调试和分析问题。如需了解详情,请参阅在违规分析器中诊断访问遭拒问题。

为 SOAR 配置入站规则

本部分介绍如何为平台的 SOAR 端配置 VPC Service Controls。

为您在设置 Google SecOps 时指定的 Google Cloud 用户账号配置以下入站规则:

  - ingressFrom:
      identityType: ANY_SERVICE_ACCOUNT
      sources:
      - accessLevel: "*"
    ingressTo:
      operations:
      - serviceName: secretmanager.googleapis.com
        methodSelectors:
        - method: "*"
      resources:
      - projects/PROJECT_NUMBER

将 PROJECT_NUMBER 替换为与 Google SecOps 关联的 Google Cloud 项目编号。

为 SIEM 配置规则

本部分介绍如何为平台的 SIEM 端配置 VPC Service Controls。

基于 Cloud Storage 的 V2 Feed 的入站和出站规则

根据服务边界配置,配置入站和出站规则。如需了解详情,请参阅服务边界概览。如果在托管源 Cloud Storage 存储桶的 Google Cloud 项目或与 Google SecOps 关联的 Google Cloud 项目 (BYOP) 上启用了 VPC Service Controls,请根据边界设置配置所需的入站和出站规则:

场景 来源存储桶项目 与 Google SecOps 关联的项目 (BYOP) 来源边界的规则 BYOP 边界规则
案例一 在边界内 在同一边界内 无 无
情形 2 CUSTOMER_SOURCE_PERIMETER后 在 CUSTOMER_BYOP_PERIMETER(不同边界)中 规则 A1(入站流量)和规则 A2(出站流量) 规则 B1(出站流量)
情况 3 CUSTOMER_SOURCE_PERIMETER后 不在边界内 规则 A1(入站流量)和规则 A2(出站流量) 无
情况 4 不在边界内 CUSTOMER_BYOP_PERIMETER后 无 规则 B1(出站流量)

在以下入站和出站规则中替换这些占位符:

  • CUSTOMER_SOURCE_PROJECT_NUMBER:托管来源 Cloud Storage 存储桶的 Google Cloud 项目的数字项目 ID。
  • CUSTOMER_SOURCE_PERIMETER:保护来源存储桶项目的 VPC-SC 边界。
  • CUSTOMER_BYOP_PROJECT_NUMBER:与 Google SecOps 关联的 Google Cloud 项目 (BYOP) 的数字项目 ID。
  • CUSTOMER_BYOP_PERIMETER:保护 BYOP 项目的 VPC-SC 边界。
  • CHRONICLE_STS_SERVICE_AGENT:配置 Cloud Storage V2 Feed 时,Google SecOps 中显示的 Storage Transfer Service (STS) 服务账号(例如 project-123456789@storage-transfer-service.iam.gserviceaccount.com)。
A. 源存储桶项目边界的规则 (CUSTOMER_SOURCE_PERIMETER)

这些规则适用于上表中所定义的第二种和第三种情况。

规则 A1:入站规则
  {
    "ingressFrom": {
      "identities": [
        "serviceAccount:<CHRONICLE_STS_SERVICE_AGENT>"
      ],
      "sources": [
        {
          "accessLevel": "*"
        }
      ]
    },
    "ingressTo": {
      "operations": [
        {
          "serviceName": "storage.googleapis.com",
          "methodSelectors": [
            { "method": "*" }
          ]
        }
      ],
      "resources": [
        "projects/<CUSTOMER_SOURCE_PROJECT_NUMBER>"
      ]
    }
  }
规则 A2:出站流量规则
  {
    "egressFrom": {
      "identities": [
        "serviceAccount:<CHRONICLE_STS_SERVICE_AGENT>"
      ]
    },
    "egressTo": {
      "operations": [
        {
          "serviceName": "storage.googleapis.com",
          "methodSelectors": [
            { "method": "google.storage.objects.create" },
            { "method": "google.storage.objects.delete" }
          ]
        }
      ],
      "resources": [
        "projects/<CUSTOMER_BYOP_PROJECT_NUMBER>"
      ]
    }
  }
B. BYOP 项目边界的规则 (CUSTOMER_BYOP_PERIMETER)

对于上表中所定义的第二种和第四种情况,请应用此规则。

规则 B1:出站规则
  {
    "egressFrom": {
      "identities": [
        "serviceAccount:<CHRONICLE_STS_SERVICE_AGENT>"
      ]
    },
    "egressTo": {
      "operations": [
        {
          "serviceName": "storage.googleapis.com",
          "methodSelectors": [
            { "method": "*" }
          ]
        }
      ],
      "resources": [
        "projects/<CUSTOMER_SOURCE_PROJECT_NUMBER>"
      ]
    }
  }

如果您遇到 VPC Service Controls 问题,请使用 VPC Service Controls 违规分析器来调试和分析问题。如需了解详情,请参阅在违规分析器中诊断访问遭拒问题。

高级 BigQuery Export 的入站规则

如果您使用的是高级 BigQuery Export 功能,请为您在设置 Google SecOps 时指定的 Google Cloud 用户账号配置以下规则:

    - ingressFrom:
      identities:
      - serviceAccount:malachite-bq-export-entity-graph-batch-adv-bq@system.gserviceaccount.com
      - serviceAccount:malachite-customer-monitoring-exporter@system.gserviceaccount.com
      sources:
      - accessLevel: "*"
    ingressTo:
      operations:
      - serviceName: bigquery.googleapis.com
        methodSelectors:
        - method: "*"
      resources:
      - projects/PROJECT_NUMBER

将 PROJECT_NUMBER 替换为与 Google SecOps 关联的 Google Cloud 项目编号。

数据表的入站规则

如果您使用的是数据表,请为您在设置 Google SecOps 时指定的 Google Cloud 用户账号配置以下规则:

  - ingressFrom:
      identities:
      - user:malachite-data-plane-api@prod.google.com
      sources:
      - accessLevel: "*"
    ingressTo:
      operations:
      - serviceName: storage.googleapis.com
        methodSelectors:
        - method: "*"
      resources:
      - projects/PROJECT_NUMBER

将 PROJECT_NUMBER 替换为与 Google SecOps 关联的 Google Cloud 项目编号。

使用 Security Command Center 为 Google SecOps 配置规则

本部分介绍了如何为 Google SecOps 配置 VPC Service Controls 以及 Security Command Center。

以下规则中的服务账号仅在 Google SecOps 预配期间创建,因此,您应在预配之后、开始使用 Security Command Center 之前配置 Security Command Center 规则。

为您在设置 Google SecOps 时指定的 Google Cloud 用户账号完成以下任务:

  1. 配置以下入站规则:

    - ingressFrom:
        identities:
        - serviceAccount: service-org-GOOGLE_ORGANIZATION_NUMBER@gcp-sa-chronicle-soar.iam.gserviceaccount.com
        - serviceAccount: service-org-GOOGLE_ORGANIZATION_NUMBER@security-center-api.iam.gserviceaccount.com
        - serviceAccount: service-org-GOOGLE_ORGANIZATION_NUMBER@gcp-sa-csc-hpsa.iam.gserviceaccount.com
        - serviceAccount: service-org-GOOGLE_ORGANIZATION_NUMBER@gcp-sa-asm-hpsa.iam.gserviceaccount.com
        sources:
        - accessLevel: "*"
      ingressTo:
        operations:
        - serviceName: chronicle.googleapis.com
          methodSelectors:
          - method: "*"
        - serviceName: securitycenter.googleapis.com
          methodSelectors:
          - method: "*"
        - serviceName: compute.googleapis.com
          methodSelectors:
          - method: "*"
        - serviceName: cloudasset.googleapis.com
          methodSelectors:
          - method: "*"
        - serviceName: monitoring.googleapis.com
          methodSelectors:
          - method: "*"
        - serviceName: iam.googleapis.com
          methodSelectors:
          - method: "*"
        - serviceName: orgpolicy.googleapis.com
          methodSelectors:
          - method: "*"
        - serviceName: serviceusage.googleapis.com
          methodSelectors:
          - method: "*"
        - serviceName: dns.googleapis.com
          methodSelectors:
          - method: "*"
        resources:
        - projects/PROJECT_NUMBER
    

    替换以下内容:

    • GOOGLE_ORGANIZATION_NUMBER:您的 Google Cloud 组织编号
    • PROJECT_NUMBER:与 Google SecOps 关联的 Google Cloud 项目编号
  2. 配置以下出站规则:

    - egressTo:
        operations:
        - serviceName: pubsub.googleapis.com
          methodSelectors:
          - method: "*"
        - serviceName: securitycenter.googleapis.com
          methodSelectors:
          - method: "*"
        - serviceName: cloudasset.googleapis.com
          methodSelectors:
          - method: "*"
        - serviceName: iam.googleapis.com
          methodSelectors:
          - method: "*"
        - serviceName: compute.googleapis.com
          methodSelectors:
          - method: "*"
        resources:
        - "*"
      egressFrom:
        identities:
        - serviceAccount: service-org-GOOGLE_ORGANIZATION_NUMBER@gcp-sa-chronicle-soar.iam.gserviceaccount.com
        - serviceAccount: service-org-GOOGLE_ORGANIZATION_NUMBER@security-center-api.iam.gserviceaccount.com
        sources:
        - resource: projects/PROJECT_NUMBER
    

    替换以下内容:

    • GOOGLE_ORGANIZATION_NUMBER:您的 Google Cloud 组织编号
    • PROJECT_NUMBER:与 Google SecOps 关联的 Google Cloud 项目编号

为客户管理的加密密钥 (CMEK) 配置入站流量规则

本部分介绍了如何使用客户管理的加密密钥 (CMEK) 为 Google SecOps 配置 VPC Service Controls。CMEK 是您在 Cloud Key Management Service 中拥有、管理和存储的加密密钥。

配置以下入站规则:

  - ingressFrom:
    identities:
    - serviceAccount: service-SECRET_MANAGER_PROJECT_NUMBER@gcp-sa-secretmanager.iam.gserviceaccount.com
    - serviceAccount: service-GOOGLE_MANAGED_BIGQUERY_PROJECT_NUMBER@gs-project-accounts.iam.gserviceaccount.com
    - serviceAccount: bq-GOOGLE_MANAGED_BIGQUERY_PROJECT_NUMBER@bigquery-encryption.iam.gserviceaccount.com
      sources:
      - accessLevel: "*"
    ingressTo:
      operations:
      - serviceName: secretmanager.googleapis.com
        methodSelectors:
        - method: "*"
      - serviceName: cloudkms.googleapis.com
        methodSelectors:
        - method: "*"
      resources:
      - projects/CMEK_PROJECT_NUMBER

替换以下内容:

  • SECRET_MANAGER_PROJECT_NUMBER:Google 用于存储某些注入功能的 Secret 的项目,您可以从 Google SecOps 代表处获取
  • GOOGLE_MANAGED_BIGQUERY_PROJECT_NUMBER:Google 用于存储某些导出功能的 BigQuery 资源的项目,您可以从 Google SecOps 代表处获取
  • CMEK_PROJECT_NUMBER:存储 CMEK 的项目编号