Google Cloud 集中式日志与监控实战:Foundation Builder 中央审计日志与跨项目监控范围配置指南
2026/9/14 11:08:41 网站建设 项目流程

Google Cloud 集中式日志与监控实战:Foundation Builder 中央审计日志与跨项目监控范围配置指南

【免费下载链接】skillsAgent Skills for Google products and technologies项目地址: https://gitcode.com/GitHub_Trending/skills29/skills

本篇指南基于google-cloud-recipe-foundation-builder(Foundation Builder)技能中的 Centralized Logging and Monitoring 参考文档,讲解如何在落地 Google Cloud 企业级着陆区(Landing Zone)时,于中央logging-[SUFFIX]项目内完成集中式审计日志与跨项目监控的端到端配置。读完本文,你将掌握创建中央日志存储桶、配置组织级审计日志汇(Log Sink)、授权日志汇写入权限以及建立跨环境监控指标范围(Metrics Scope)的完整命令与验证方法。

背景:Foundation Builder 中的中央可观测性设计

google-cloud-recipe-foundation-builder是当前仓库中用于搭建 Google Cloud 组织基线着陆区的技能,其核心目标之一是集中式日志与监控(Centralized Logging & Monitoring):所有环境产生的审计日志统一汇入一个全局日志存储桶,并通过监控指标范围将各环境项目纳入统一的监控视图。

该技能在 SKILL.md 中描述了整体蓝图:在组织根节点创建 4 个文件夹(CommonProductionNon-ProductionDevelopment),并依次创建 4 个全局唯一 ID 前缀的项目(logging-prod-non-prod-dev-,后接共享后缀)。其中:

  • logging-[SUFFIX](显示名central-logging-monitoring)位于Common文件夹,是集中日志与监控的中枢项目;
  • prod-[SUFFIX]non-prod-[SUFFIX]dev-[SUFFIX]分别对应生产、非生产、开发环境,是日志与监控的数据来源。

集中式设计的目标是:在组织层面拦截所有 Cloud Audit Logs,统一汇入中央桶,并让中央项目能够跨项目监控各环境的指标。本文档所对应的完整配置即 logging-monitoring.md 中的四个步骤,下文逐一展开。

前置条件与权限准备

在执行日志与监控配置前,需要满足以下前提(来自 SKILL.md):

  • 已存在 Google Cloud 组织资源;
  • 执行身份具备相应的管理权限;若某一步骤报Permission Denied,技能采用**惰性角色补救(Lazy Role Remediation)**策略,即直接执行命令、捕获权限错误、按组授予角色后重试;
  • 已安装并授权gcloudCLI。

其中与日志监控强相关的权限组是Logging/Monitoring Admin Group,包含两个角色(详见 admin-iam.md):

  • roles/logging.admin(Logging Administrator):负责日志桶、日志汇等全局日志配置;
  • roles/monitoring.admin(Monitoring Administrator):负责指标范围等集中监控配置。

gcloud logging sinks create在组织级别失败,补救策略会先尝试在组织级授予上述 Logging/Monitoring Admin Group,再授予 Security Admin Group(9 个角色),随后重试失败的部署命令;若补救授权本身也失败,则停止执行并请求管理员手动介入。

另外,logging-[SUFFIX]项目创建后需立即开通关键 API(这一步骤在资源层级阶段完成):

gcloud services enable compute.googleapis.com logging.googleapis.com monitoring.googleapis.com --project=logging-[SUFFIX]

第一步:创建中央日志存储桶

在中央项目logging-[SUFFIX]中创建名为[ORG_NAME]-logging的日志桶。[ORG_NAME]取组织域名的规范化形式,例如组织域名为example.com时桶名为example-com-logging。默认位置为global,保留期为 30 天:

gcloud logging buckets create [ORG_NAME]-logging \ --project=logging-[SUFFIX] \ --location=global \ --retention-days=30 \ --description="Central logging and monitoring bucket"

参数说明:

  • [ORG_NAME]:组织域名中-替换.后的字符串(如example-com),保证桶名全局唯一且可读;
  • --location=global:全局位置,日志数据可在全球范围内路由,是审计日志集中化的常用选择;如用户指定了其他区域,可用该区域覆盖;
  • --retention-days=30:日志在桶中的保留天数,基线配置为 30 天,与 SKILL.md 中的验证要求"保留期精确等于 30 天"一致;
  • --description:为桶添加可读描述,便于运维识别。

第二步:创建组织级审计日志汇

日志汇(Log Sink)负责将匹配的日志路由到目标位置。这里在组织层级创建 sink,将全部环境的 Cloud Audit Logs 统一汇聚到中央桶。

命名规范为[ORGANIZATION_ID]-logbucketsink-[RANDOM_4_HEX],其中[RANDOM_4_HEX]为随机生成的 4 位十六进制字符串(如a3f9),用于保证 sink 名称的唯一性、避免与历史同名 sink 冲突:

gcloud logging sinks create [ORGANIZATION_ID]-logbucketsink-[RANDOM_4_HEX] \ logging.googleapis.com/projects/logging-[SUFFIX]/locations/global/buckets/[ORG_NAME]-logging \ --organization=[ORGANIZATION_ID] \ --log-filter='logName: /logs/cloudaudit.googleapis.com%2Factivity OR logName: /logs/cloudaudit.googleapis.com%2Fsystem_event OR logName: /logs/cloudaudit.googleapis.com%2Fdata_access OR logName: /logs/cloudaudit.googleapis.com%2Faccess_transparency'

要点解析:

  • 目标地址logging.googleapis.com/projects/logging-[SUFFIX]/locations/global/buckets/[ORG_NAME]-logging,即第一步创建的中央桶的 Cloud Logging 资源名;
  • --organization=[ORGANIZATION_ID]:在组织层级创建 sink,使过滤器匹配整个组织的日志,而非单一项目;
  • --log-filter:精准选取四类 Cloud Audit Logs:
    • cloudaudit.googleapis.com/activity:管理员活动日志;
    • cloudaudit.googleapis.com/system_event:系统事件日志(如自动变更);
    • cloudaudit.googleapis.com/data_access:数据访问日志(需显式开启);
    • cloudaudit.googleapis.com/access_transparency:Google 员工访问透明日志。

[!IMPORTANT]务必保存命令输出中返回的writerIdentity(服务账号),它是下一步授权写入权限时需要用到的身份标识。Logging 会为该 sink 自动创建一个专用服务账号,负责把日志投递到目标桶。

第三步:为日志汇授予 IAM 写入权限

日志汇服务账号需要具备目标桶的写入权限,才能将日志落盘。此步骤在项目级授予安全敏感的桶写入权限,执行前应仔细核对服务账号身份:

[!IMPORTANT] 该步骤在项目级授予安全敏感的桶写入权限,请仔细核对服务账号身份后再执行。

gcloud projects add-iam-policy-binding logging-[SUFFIX] \ --member=[SINK_SERVICE_ACCOUNT_IDENTITY] \ --role=roles/logging.bucketWriter

说明:

  • [SINK_SERVICE_ACCOUNT_IDENTITY]为上一步保存的writerIdentity,形如serviceAccount:o...@logging.gserviceaccount.com
  • roles/logging.bucketWriter允许服务账号将日志写入指定的日志桶,是 sink 投递权限的最小化授予方式;
  • 权限授予于logging-[SUFFIX]项目级,与桶所在项目一致,避免跨项目授权面过大。

第四步:配置跨项目监控指标范围

Cloud Monitoring 的指标范围(Metrics Scope)决定了中央项目能够查看哪些项目的监控指标。为让logging-[SUFFIX]项目能够统一监控各环境,需要将dev-non-prod-prod-三个项目链接到中央指标范围。

首先describecreate,避免对已链接项目重复操作:

# 检查现有指标范围链接 gcloud beta monitoring metrics-scopes describe locations/global/metricsScopes/logging-[SUFFIX] # 查看 monitoredProjects 列表。若缺少某环境项目,再执行链接: # 链接开发项目 gcloud beta monitoring metrics-scopes create projects/dev-[SUFFIX] --project=logging-[SUFFIX] # 链接非生产项目 gcloud beta monitoring metrics-scopes create projects/non-prod-[SUFFIX] --project=logging-[SUFFIX] # 链接生产项目 gcloud beta monitoring metrics-scopes create projects/prod-[SUFFIX] --project=logging-[SUFFIX]

要点解析:

  • metrics-scopes describe返回当前指标范围及其monitoredProjects列表,先查询可避免对已链接项目的幂等冲突报错;
  • metrics-scopes create的语法为projects/[PROJECT_ID],需配合--project=logging-[SUFFIX]指明指标范围所属的宿主项目(即中央项目);
  • 命令处于gcloud beta阶段,属于 Cloud Monitoring API 的 Beta 功能,使用时请留意 CLI 版本兼容性。

部署验证清单

完成以上四步后,可按 SKILL.md 中的验证逻辑逐项核对:

  • 日志桶与保留期:确认[ORG_NAME]-logging桶存在于logging-[SUFFIX]项目、位于global、保留期精确为 30 天;
  • 日志汇路由:在组织级执行gcloud logging sinks describe,确认 sink 将 Cloud Audit Logs 路由到全局桶,且持有标准的writerIdentity凭据;
  • 指标范围链接:执行gcloud beta monitoring metrics-scopes describe,断言devnon-prodprod三个项目出现在中央logging项目的受监控列表中。

对应命令示例:

# 验证日志桶(在中央项目内) gcloud logging buckets describe [ORG_NAME]-logging \ --project=logging-[SUFFIX] --location=global # 验证组织级日志汇 gcloud logging sinks describe [ORGANIZATION_ID]-logbucketsink-[RANDOM_4_HEX] --organization=[ORGANIZATION_ID] # 验证指标范围 gcloud beta monitoring metrics-scopes describe locations/global/metricsScopes/logging-[SUFFIX]

故障排查与惰性权限补救

Foundation Builder 技能明确采用惰性补救(Lazy Remediation)而非前置权限预检:不提前测试权限,而是直接执行部署命令;一旦某步失败并提示Permission Denied,则按 admin-iam.md 的映射表判断缺少的角色,并整组授予该角色所属的管理组后重试。

针对日志与监控阶段的失败,可尝试在组织级授予 Logging/Monitoring Admin Group:

for role in roles/logging.admin roles/monitoring.admin; do gcloud organizations add-iam-policy-binding [ORGANIZATION_ID] \ --member="user:[YOUR_ACCOUNT_EMAIL]" \ --role="$role" done

如果授予命令本身因缺少setIamPolicy权限而失败,应立即停止执行,并请组织/账单管理员手动授予对应管理组的全部角色(详见 admin-iam.md 中的权限映射表)。此外,创建 sink 失败也可能涉及 Security Admin Group 的权限,可按同一补救协议在组织级整组授予后重试。

与其他参考文档的协同

  • SKILL.md:技能总入口,包含完整的 Phase 1~5 流程、蓝图确认摘要与验证清单;
  • admin-iam.md:23 个管理角色、4 个管理组的完整清单及权限映射与补救脚本;
  • org-policies.md:17 条基线组织策略(13 条 Boolean + 4 条 List)的 YAML 模板,是集中日志配置之前的组织级安全护栏。

集中式日志与监控是着陆区安全架构的收尾环节:先由组织策略建立安全边界,再由资源层级划分环境项目,最后由本文的四个步骤将全部审计日志与监控指标汇聚到中央项目,形成可审计、可观测、可统一治理的企业级基线。

【免费下载链接】skillsAgent Skills for Google products and technologies项目地址: https://gitcode.com/GitHub_Trending/skills29/skills

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询