Google Cloud API Gateway API密钥认证失效问题求助
问题排查:API Gateway无需API密钥即可访问受保护的Cloud Run服务
问题根源在于你的OpenAPI配置文件中,/hi路径的get操作显式覆盖了全局安全规则,导致该接口跳过API密钥验证。
具体问题点
在paths -> /hi -> get节点下,你设置了security: [],这是一个空数组,代表明确禁用该接口的所有安全校验,会直接覆盖全局配置里的security: - api_key: []规则。
修复方法
将/hi的get操作中的security: []删除,或者替换为与全局一致的安全规则:
修改后的配置片段:
paths: /hi: get: summary: Get hello operationId: getHi # 移除security: [],或替换为- api_key: [] parameters: [] responses: 200: description: A successful response schema: type: string
原理说明
在OpenAPI 2.0规范中,单个接口的security配置优先级高于全局配置。空的security数组表示该接口不需要任何认证,因此API Gateway不会检查请求中的API密钥,直接放行到后端Cloud Run服务。
验证步骤
- 更新配置文件后,重新部署API Gateway
- 直接访问网关的
/hi路径,此时应返回403 Forbidden - 携带
?key=你的API密钥参数访问,应正常返回Hello, World?
内容的提问来源于stack exchange,提问作者tc19
相关产品推荐
相关产品推荐

