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 个文件夹(Common、Production、Non-Production、Development),并依次创建 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-三个项目链接到中央指标范围。
首先先describe再create,避免对已链接项目重复操作:
# 检查现有指标范围链接 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,断言dev、non-prod、prod三个项目出现在中央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),仅供参考