如何增强GCP Cloud Run链接的访问安全性?
GCP Cloud Run 实现IP限制与身份验证方案
一、限制仅特定IP地址访问
方法1:VPC连接器+防火墙规则
- 创建VPC连接器,将Cloud Run实例接入你的VPC网络
- 部署Cloud Run时选择内部访问模式,禁止公共网络直接访问
- 在VPC的防火墙规则中,创建允许规则,仅放行目标IP/IP段对Cloud Run服务端口的请求
- 注意:调用API的前端服务需处于同一VPC或可访问该VPC的网络环境中
方法2:Cloud Armor安全策略
- 为Cloud Run实例创建Cloud Armor安全策略
- 添加允许规则,指定需要放行的IP地址或地址段(如
10.0.0.0/24) - 设置策略默认规则为拒绝所有请求
- 将安全策略关联到你的Cloud Run服务,所有外部请求会先经过IP校验
二、添加用户名/密码验证
方法1:应用层实现基础认证
- 在API入口处添加HTTP基础认证逻辑,校验请求头的
Authorization字段 - 示例(Python Flask):
from flask import Flask, request, abort import os app = Flask(__name__) # 从环境变量读取认证信息,避免硬编码 VALID_USER = os.getenv('AUTH_USER') VALID_PASS = os.getenv('AUTH_PASS') def validate_auth(auth): return auth and auth.username == VALID_USER and auth.password == VALID_PASS @app.before_request def check_auth(): auth = request.authorization if not validate_auth(auth): return ('请提供合法的用户名和密码', 401, {'WWW-Authenticate': 'Basic realm="API Access"'}) @app.route('/api/endpoint') def protected_endpoint(): return {'status': 'success', 'data': 'authorized content'} if __name__ == '__main__': app.run(host='0.0.0.0', port=int(os.getenv('PORT', 8080)))
- 部署时通过Cloud Run的环境变量注入用户名和密码,保障敏感信息安全
方法2:Cloud Identity-Aware Proxy(IAP)
- 为Cloud Run服务绑定自定义域名(IAP依赖自定义域名配置)
- 启用IAP并关联到该Cloud Run服务
- 在IAP权限设置中,添加允许访问的用户或用户组
- 用户访问API时需通过Google账号完成身份验证,实现安全访问控制
内容的提问来源于stack exchange,提问作者Zach Gonzalez
相关产品推荐
相关产品推荐

