
Agent Skills为 Google Cloud 安全审计日志生成 LQL 查询的实战指南【免费下载链接】skillsAgent Skills for Google products and technologies项目地址: https://gitcode.com/GitHub_Trending/skills29/skills本文以 Agent Skills 仓库Google products and technologies 的 Agent 技能集合中cloud-logging-query-generation技能的安全审计日志查询参考文件为核心系统讲解如何用 Logging Query LanguageLQL查询 Google Cloud 审计日志audit logging覆盖全部审计日志类型筛选、Access TransparencyAXT、VPC Service Controls 服务边界Service Perimeter变更追踪等安全运营场景并结合技能定义文件SKILL.md与 LQL 语法参考剖析查询生成的底层规则帮助读者掌握可直接复制到 Cloud Logging 控制台或gcloud logging read中使用的安全审计查询。1. 文档定位query_security.md 在整个技能中的角色query_security.md位于 安全审计 LQL 查询参考是 cloud-logging-query-generation 技能 的 20 个服务专属参考文件之一。该技能的定位是从自然语言生成正确的 LQL 查询用于查询 Cloud Logging 日志数据或排查问题技能明确声明不要用它查询其他数据库如 SQL 或 Cloud Spanner。SKILL.md 中定义了强制流程Agent 在生成查询前必须先读取目标服务的参考文件Security 服务对应references/query_security.md因为 LQL 的 schema 和resource.type取值都是服务专属的并且特别强调不要在读到 Base Schema 后就停止阅读必须核对该文件 schema 块下方段落或具体查询示例中是否有状态跟踪如previousState和资源专属 log ID 的特殊要求。这条规则直接对应本文第 4 节中 VPC Service Controls 查询里previousState的用法是理解安全审计查询的关键。2. 写安全审计查询前必须遵守的 LQL 语法硬规则SKILL.md 的 Core rules 与 LQL 语法参考 给出了所有查询都必须遵守的约束安全审计查询同样适用字符串字面量一律使用双引号禁止单引号。布尔运算符必须全大写AND、OR、NOT也可用-前缀表示取反-field:value。必须用括号显式分组强制执行优先级。占位符规则Never block on missing variables当用户请求缺少具体标识符项目 ID、实例名、IP时不要反问而应在必需处插入尖括号大写占位符如PROJECT_ID但如果某过滤条件非必需则必须整行省略含占位符的过滤否则会漏掉日志。输出格式只输出原始 LQL 文本不带对话性文字唯一的注释方式是 LQL 注释--见 api_reference.md 的 Comments 小节。与本文查询相关的几个关键内置函数来自 api_reference.md函数/运算符作用示例log_id(...)匹配非 URL 编码的日志 ID是区分审计日志类型的核心手段log_id(cloudaudit.googleapis.com/activity)SEARCH()大小写不敏感的 token 化子串搜索参数必须是单个字符串字面量SEARCH(protoPayload.methodName, UpdateServicePerimeter):子串搜索注意用于methodName时可能产生子串误匹配技能要求改用SEARCH()field:substring精确匹配schema 明确时优先使用protoPayload.serviceNameaccesscontextmanager.googleapis.com3. 审计日志类型总览与五个基础查询Google Cloud 审计日志audit log统一写入cloudaudit.googleapis.com前缀的日志 ID。query_security.md首先给出 5 个无变量的基础查询用于按日志类型筛选3.1 全部审计日志需要替换的变量无logName:cloudaudit.googleapis.com3.2 Access TransparencyAXT日志需要替换的变量无log_id(cloudaudit.googleapis.com/access_transparency)AXT 日志记录 Google 工作人员对用户数据的访问情况是数据合规审计的重要来源。3.3 Admin Activity管理活动日志需要替换的变量无log_id(cloudaudit.googleapis.com/activity)Admin Activity 记录用户驱动的、会修改配置或元数据的 API 调用例如创建 VM、变更 IAM 角色。这是安全审计查询中使用频率最高的日志类型本文第 4 节的 VPC Service Controls 两个查询都基于它。3.4 Data Access数据访问日志需要替换的变量无log_id(cloudaudit.googleapis.com/data_access)Data Access 记录读取配置/元数据的 API 调用以及用户驱动的、对用户数据而非平台数据的创建、修改、读取操作。3.5 System Event系统事件日志需要替换的变量无log_id(cloudaudit.googleapis.com/system_event)System Event 记录Google Cloud 系统自动修改资源的事件非用户直接操作如自动扩缩容器触发。注完整的四类审计日志语义含 Policy Deniedlog_id(cloudaudit.googleapis.com/policy)在 审计日志通用参考 的 Log types (log_id) 小节中有系统说明query_security.md的五个示例正是围绕上述log_id()前缀展开。4. VPC Service Controls 安全边界变更查询核心实战query_security.md的后两个查询是安全运营中最有价值的场景追踪VPC Service Controls 服务边界service perimeter的访问级别挂载与边界策略的更新/删除。4.1 检测某个 Access Level 被挂到服务边界上需要替换的变量ACCESS_LEVEL要追踪的访问级别名称log_id(cloudaudit.googleapis.com/activity) AND protoPayload.serviceNameaccesscontextmanager.googleapis.com AND protoPayload.methodNamegoogle.identity.accesscontextmanager.v1.AccessContextManager.UpdateServicePerimeter AND -protoPayload.metadata.previousState:ACCESS_LEVEL AND protoPayload.request.servicePerimeter.spec.accessLevels:ACCESS_LEVEL该查询的构造逻辑值得逐行拆解结合 query_audit_logs.md 的 The client configuration pattern 与 state diffs 说明protoPayload.serviceNameaccesscontextmanager.googleapis.com锁定 VPC Service Controls 服务Access Context Manager避免全库扫描protoPayload.methodNamegoogle.identity.accesscontextmanager.v1.AccessContextManager.UpdateServicePerimeter精确匹配更新服务边界这一管理动作只关注 Admin Activity 日志protoPayload.request.servicePerimeter.spec.accessLevels:ACCESS_LEVEL更新后的请求体中包含目标访问级别说明它现在被包含在边界内-protoPayload.metadata.previousState:ACCESS_LEVEL取反变更前的状态中不包含该访问级别——这是确保匹配到新挂载而非原本就存在的关键条件即 SKILL.md 强调的previousState状态跟踪要求。4.2 检测服务边界策略被更新或删除需要替换的变量无resource.typeaudited_resource AND (protoPayload.methodNameAccessContextManager.UpdateServicePerimeter OR protoPayload.methodNameAccessContextManager.DeleteServicePerimeter)这里体现了一个服务专属的取值要求使用resource.typeaudited_resource。SKILL.md 的 Query generation rules 明确指出针对通用 API 启用/禁用等跨服务管理事件应始终使用audited_resource作为资源类型因为这类审计条目不落在具体服务资源上。4.3 同源场景交叉验证同一查询在审计参考中的另一种写法在 query_audit_logs.md 的 VPC SC access level attached to a perimeter (Admin Activity) 示例中同一个场景给出了一个更宽松的版本log_id(cloudaudit.googleapis.com/activity) AND protoPayload.serviceNameaccesscontextmanager.googleapis.com AND SEARCH(protoPayload.methodName, UpdateServicePerimeter) AND protoPayload.request.servicePerimeter.spec.accessLevels:ACCESS_LEVEL_NAME AND -protoPayload.metadata.previousState:ACCESS_LEVEL_NAME两者的差异正体现了 SKILL.md 中的防误匹配策略query_security.md使用精确等值匹配methodNamegoogle.identity.accesscontextmanager.v1.AccessContextManager.UpdateServicePerimeter因为该方法的全名是已知的固定字符串而通用参考使用SEARCH(protoPayload.methodName, UpdateServicePerimeter)作为兜底。SKILL.md 的规则是知道完整方法名时优先用不确定前缀时用作用域化的SEARCH()禁止用冒号运算符:匹配methodName因为它可能产生子串误匹配。5. 相关安全审计查询的扩展参考query_security.md聚焦审计日志类型与 VPC SC 场景如果安全调查需要扩展到 IAM 角色变更、服务账号密钥创建等相邻场景仓库内有两个紧密关联的参考文件可直接复用同一套log_id()protoPayload模式query_audit_logs.md给出protoPayload基础 schemaauthenticationInfo.principalEmail定位谁干的、requestMetadata.callerIp定位从哪来的、authorizationInfo.granted与status.code判定授权结果以及policyDeltaIAM 变更统一对象和request/previousState配置与状态 diff两大结构模式并附带 IAM 角色增删、API 服务禁用、BigQuery 作业执行、VPC SC 访问拦截Policy Denied等示例查询。query_iam.md覆盖服务账号创建、服务账号密钥生成高泄露风险事件等查询例如resource.typeservice_account AND log_id(cloudaudit.googleapis.com/activity) AND protoPayload.methodNamegoogle.iam.admin.v1.CreateServiceAccountKey6. 在 Agent 环境中使用这些查询该技能面向 Agent 消费通过仓库 README.md 提供的安装方式npx skills add google/skills安装技能后Agent 在处理查询安全审计日志类自然语言请求时会按 SKILL.md 的强制流程先加载query_security.md再把其中的查询模板作为事实依据替换尖括号占位符后输出纯 LQL 文本。由于技能规定输出仅原始 LQL、解释只能写在--注释中Agent 产出的查询可以直接粘贴到 Cloud Logging 查询控制台或gcloud logging read命令中使用。使用这些查询时的前提与限制以当前仓库文档为准查询针对Google Cloud 项目的 Cloud Logging 数据前提是相关审计日志已开启AXT 与 Data Access 属于可选启用项未开启则查不到对应条目所有字符串字面量必须双引号、布尔运算符必须大写这两条是 SKILL.md 声明的硬性语法要求按项目/文件夹/组织缩小范围时注意resource.type取值是服务专属的不要凭猜测填写——这正是技能要求先读服务参考文件的原因query_security.md中带ACCESS_LEVEL等占位符的查询替换变量前请勿执行占位符若未被替换会作为字面量过滤条件导致漏查。7. 小结query_security.md虽然篇幅精炼但它把安全审计查询的完整方法链条压缩进了 7 个可复制的查询用log_id()的五种前缀划定审计日志类型用protoPayload.serviceName/methodName锁定管理动作用requestpreviousState的组合区分新增与已存在的状态变更用resource.typeaudited_resource承接跨服务管理事件。配合 SKILL.md 的生成规则和 api_reference.md 的语法细节这套参考足以支撑从查全部审计日志到精准定位某访问级别被挂到服务边界的安全审计查询编写。【免费下载链接】skillsAgent Skills for Google products and technologies项目地址: https://gitcode.com/GitHub_Trending/skills29/skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考