GCP审计日志正则匹配GCS指定路径下CSV文件问题求助
问题根因
你使用的正则表达式不符合GCP日志查询支持的RE2正则规范,核心错误如下:
- 混淆了Shell通配符和正则语法:正则中
*是量词,代表匹配前一个字符0次或多次,你写的/*.csv实际含义是「匹配0个或多个/,后跟任意1个字符,再后跟csv」,完全不符合你要匹配「指定路径下任意CSV文件」的需求 - 未转义正则特殊字符:正则中
.默认匹配任意单个字符,你要匹配文件名后缀的.需要加反斜杠转义
正确的审计日志过滤器语句
如果需要匹配指定路径下所有CSV文件(包含子目录中的CSV),使用以下写法:
protoPayload.resourceName =~ "projects/_/buckets/<bucket_name>/objects/<path>/<to>/.*\\.csv"
如果需要仅匹配该路径下的CSV文件、不包含子目录的CSV,使用更严格的写法:
protoPayload.resourceName =~ "projects/_/buckets/<bucket_name>/objects/<path>/<to>/[^/]+\\.csv"
补充注意事项
- GCP日志查询的正则字符串如果用双引号包裹,反斜杠需要二次转义,所以写
\\.而不是\.,如果用单引号包裹可以只写一个反斜杠 - 正则中的
.*代表匹配任意字符0次或多次,对应Shell通配符中*的效果
内容的提问来源于stack exchange,提问作者user15778874
相关产品推荐
相关产品推荐

