本页面介绍了如何将日志从 Google Distributed Cloud (GDC) 网闸隔离配置导出到外部安全信息和事件管理 (SIEM) 系统。通过这种集成,可以实现中心化日志分析和增强的安全监控。
日志导出的核心涉及部署 SIEMOrgForwarder 自定义资源。此资源充当配置文件,指定指定用于接收日志的外部 SIEM 实例的详细信息。通过在 SIEMOrgForwarder 文件中定义这些参数,管理员可以建立一个简化且安全的日志导出流水线。
准备工作
如需获得管理 SIEMOrgForwarder 自定义资源所需的权限,请让您的 IAM 组织管理员为您授予关联的 SIEM 导出组织角色之一。
根据您需要的访问权限和权限级别,您可能会在项目命名空间中获得此资源的 creator、editor 或 viewer 角色。如需了解详情,请参阅准备 IAM 权限。
获得必要权限后,请在将日志导出到外部 SIEM 系统之前完成以下步骤:
建立连接:确保 GDC 与外部 SIEM 目标之间存在连接。如有需要,请与基础设施运营商 (IO) 协作,建立与客户网络的上行链路连接。
设置环境变量:设置以下环境变量,以便运行本页面中的命令:
kubeconfig 文件的路径:
export KUBECONFIG=KUBECONFIG_PATH将
KUBECONFIG_PATH替换为 Management API 服务器的 kubeconfig 文件的路径。您的项目命名空间:
export PROJECT_NAMESPACE=PROJECT_NAMESPACE
配置日志导出
在同一命名空间中创建 Secret 和 SIEMOrgForwarder 自定义资源。您可以使用任何项目命名空间。每个 SIEMOrgForwarder 都会从组织中的所有集群导出平台日志,因此您无需在其他项目或集群中创建这些资源。
最佳实践是使用 platform-obs 命名空间,因为 SIEMOrgForwarder 仅导出平台日志。SIEM Export Org 角色还会授予对授予这些角色的命名空间中所有 Secret 的读取权限,因此请让您的 IAM 组织管理员仅向平台管理员授予这些角色。
将日志导出到外部 SIEM 系统:
提供一个令牌,用于将日志记录堆栈连接到 SIEM 系统。如需执行此操作,您必须在项目命名空间中创建一个 Secret,以存储令牌(对于 Splunk)和密码(对于 Elastic SIEM):
cat <<EOF | kubectl --kubeconfig=${KUBECONFIG} apply -f - apiVersion: v1 kind: Secret metadata: name: SECRET_NAME namespace: ${PROJECT_NAMESPACE} type: Opaque stringData: SECRET_FIELD: FIELD_VALUE EOF替换以下内容:
SECRET_NAME:Secret 的名称。SECRET_FIELD:您要存储 Secret 的字段的名称。对于 Elastic,请使用与自定义资源中的HTTP_USER_NAME相同的值。FIELD_VALUE:FIELD_VALUE 是 Splunk 的令牌和 Elastic 的密码。TOKEN:您的令牌。
在项目命名空间中部署
SIEMOrgForwarder自定义资源。您必须通过在审核日志或运维日志之间进行选择来指定日志类型。如需为这两种日志类型配置日志导出,您必须为每种类型部署一个SIEMOrgForwarder资源。以下示例展示了如何将配置应用于 Splunk 的
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 destinations: splunkOutputs: - host: SIEM_HOST token: name: SECRET_NAME field: SECRET_FIELD tls: "TLS" netConnectTimeout: NET_CONNECT_TIMEOUT EOF替换以下内容:
SIEM_ORG_FORWARDER:SIEMOrgForwarder定义文件的名称。LOG_TYPE:要导出的日志类型。可接受的值为audit和operational。SIEM_HOST:SIEM 主机的名称。SECRET_NAME:Secret 的名称。SECRET_FIELD:您存储 Secret 的字段的名称。TLS:传输层安全协议 (TLS) 的状态。可接受的值为"On"和"Off"。NET_CONNECT_TIMEOUT:等待建立连接的最长时间(以秒为单位)。例如,值为180表示等待 180 秒。
以下示例展示了如何将配置应用于 Elastic 的
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 destinations: elasticOutputs: - host: SIEM_HOST port: SIEM_PORT http_credential: http_user: HTTP_USER_NAME http_passwd: SECRET_NAME tls: "TLS" netConnectTimeout: NET_CONNECT_TIMEOUT index: INDEX EOF替换以下内容:
SIEM_ORG_FORWARDER:SIEMOrgForwarder定义文件的名称。LOG_TYPE:要导出的日志类型。可接受的值为audit和operational。SIEM_HOST:SIEM 主机的名称。SIEM_PORT:SIEM 实例的端口。HTTP_USER_NAME:SIEM 实例的用户名。此值还必须是存储密码的 Secret 中的SECRET_FIELD键。SECRET_NAME:Secret 的名称。TLS:传输层安全协议 (TLS) 的状态。可接受的值为"On"和"Off"。NET_CONNECT_TIMEOUT:等待建立连接的最长时间(以秒为单位)。例如,值为180表示等待 180 秒。INDEX:Elastic 实例的索引。如果未指定,系统将使用日志类型(audit或operational)。此字段是可选字段。
验证已部署的
SIEMOrgForwarder自定义资源的状态:kubectl --kubeconfig=${KUBECONFIG} describe siemorgforwarder/SIEM_ORG_FORWARDER \ -n ${PROJECT_NAMESPACE}根据日志类型,检查以下状态:
- 审核日志:检查
AuditLoggingReady状态。 操作日志:检查
OperationalLoggingReady状态。
- 审核日志:检查