将日志导出到 SIEM 系统

本页面介绍了如何将日志从 Google Distributed Cloud (GDC) 气隙环境导出到外部安全信息和事件管理 (SIEM) 系统。此集成可实现集中式日志分析和增强型安全监控。

日志导出的核心是部署 SIEMOrgForwarder 自定义资源。此资源充当配置文件,用于指定指定接收日志的外部 SIEM 实例的详细信息。通过在 SIEMOrgForwarder 文件中定义这些参数,管理员可以建立简化的安全日志导出流水线。

准备工作

如需获得管理 SIEMOrgForwarder 自定义资源所需的权限,请让组织 IAM 管理员为您授予关联的 SIEM Export Org 角色之一。

根据您需要的访问权限级别,您可以在项目命名空间中获得此资源的创建者、编辑者或查看者角色。如需了解详情,请参阅准备 IAM 权限

获得必要的权限后,请在将日志导出到外部 SIEM 系统之前完成以下步骤:

  1. 建立连接:确保 GDC 与外部 SIEM 目标之间存在连接。如有必要,请与基础设施运营商 (IO) 协作,以建立与客户网络的上行链路连接。

  2. 设置环境变量:设置以下环境变量,以便运行此页面中的命令:

    • kubeconfig 文件的路径:

      export KUBECONFIG=KUBECONFIG_PATH
      

      KUBECONFIG_PATH 替换为管理 API 服务器的 kubeconfig 文件的路径。

    • 您的项目命名空间:

      export PROJECT_NAMESPACE=PROJECT_NAMESPACE
      

配置日志导出

将日志导出到外部 SIEM 系统:

  1. 提供令牌以将日志记录堆栈连接到 SIEM 系统。如需执行此操作,您必须在项目命名空间中创建一个 Secret 来存储令牌:

    cat <<EOF | kubectl --kubeconfig=${KUBECONFIG} apply -f -
    apiVersion: v1
    kind: Secret
    metadata:
      name: SECRET_NAME
      namespace: ${PROJECT_NAMESPACE}
    type: Opaque
    stringData:
      SECRET_FIELD: TOKEN
    EOF
    

    替换以下内容:

    • SECRET_NAME:您的 Secret 的名称。
    • SECRET_FIELD:您要存储 Secret 的字段的名称。
    • TOKEN:您的令牌。
  2. 在项目命名空间中部署 SIEMOrgForwarder 自定义资源。您必须通过选择审核日志或操作日志来指定日志类型。如需为这两种日志类型配置日志导出,您必须为每种类型部署一个 SIEMOrgForwarder 资源。

    以下示例展示了如何将配置应用于 SIEMOrgForwarder 自定义资源:

      cat <<EOF | kubectl --kubeconfig=${KUBECONFIG} apply -f -
      apiVersion: logging.gdc.goog/v1
      kind: SIEMOrgForwarder
      metadata:
        name: SIEM_ORG_FORWARDER
        namespace: ${PROJECT_NAMESPACE}
      spec:
        source: LOG_TYPE
        splunkOutputs:
          - host: SIEM_HOST
            token:
              name: SECRET_NAME
              field: SECRET_FIELD
            tls: "TLS"
            netConnectTimeout: NET_CONNECT_TIMEOUT
      EOF
    

    替换以下内容:

    • SIEM_ORG_FORWARDERSIEMOrgForwarder 定义文件的名称。
    • LOG_TYPE:您要导出的日志类型。可接受的值为 auditoperational
    • SIEM_HOST:SIEM 主机的名称。
    • SECRET_NAME:您的 Secret 的名称。
    • SECRET_FIELD:您存储 Secret 的字段的名称。
    • TLS:传输层安全协议 (TLS) 的状态。可接受的值为 "On""Off"
    • NET_CONNECT_TIMEOUT:等待建立连接的最长时间(以秒为单位)。例如,值为 180 表示等待 180 秒。
  3. 验证已部署的 SIEMOrgForwarder 自定义资源的状态:

      kubectl --kubeconfig=${KUBECONFIG} describe siemorgforwarder/SIEM_ORG_FORWARDER \
          -n ${PROJECT_NAMESPACE}
    

    根据日志类型,检查以下状态:

    • 审核日志:检查 AuditLoggingReady 状态。
    • 操作日志:检查 OperationalLoggingReady 状态。