如何自动化更新Google Cloud SQL授权网络中的本机公网IP
Cloud SQL 动态公网IP白名单自动更新PowerShell方案
前置准备
- 安装Google Cloud SDK(gcloud CLI),完成身份认证:执行
gcloud auth login登录对应项目的所有者账号,执行gcloud config set project [你的GCP项目ID]设置默认项目 - 提前记录需要操作的Cloud SQL实例ID
实现脚本
脚本逻辑:先拉取现有授权IP列表、获取当前网络公网IP、去重合并后调用更新接口,不会覆盖原有IP
# 替换为你的Cloud SQL实例ID $INSTANCE_ID = "你的实例ID" # 获取当前公网IP,转为单IP的CIDR格式 $currentPublicIp = (Invoke-WebRequest -Uri "https://api.ipify.org" -UseBasicParsing).Content.Trim() + "/32" # 获取实例现有授权网络列表 $existingNetworks = gcloud sql instances describe $INSTANCE_ID --format="csv[no-heading](settings.ipConfiguration.authorizedNetworks.value)" | Where-Object { $_ -ne "" } # 检查当前IP是否已在白名单中,存在则直接退出避免重复操作 if ($existingNetworks -contains $currentPublicIp) { Write-Host "当前IP $currentPublicIp 已在白名单中,无需更新" exit 0 } # 合并新旧IP列表,去重 $updatedNetworks = $existingNetworks + $currentPublicIp | Select-Object -Unique $networkParam = $updatedNetworks -join "," # 执行更新 gcloud sql instances patch $INSTANCE_ID --authorized-networks=$networkParam --quiet if ($LASTEXITCODE -eq 0) { Write-Host "白名单更新成功,已添加IP:$currentPublicIp" } else { Write-Host "白名单更新失败,请检查权限和实例ID配置" exit 1 }
定时执行配置
可以通过Windows任务计划程序配置定时触发:
- 触发条件可设置为「系统启动时」、「网络连接变更时」或者每天固定时间执行
- 操作设置为「启动程序」,程序/脚本选
powershell.exe,参数填-ExecutionPolicy Bypass -File "你保存脚本的完整路径.ps1"
注意事项
- 首次使用前请先手动执行脚本测试,对比执行前后的白名单列表(可执行
gcloud sql instances describe $INSTANCE_ID --format="value(settings.ipConfiguration.authorizedNetworks.value)"查看现有列表),确认原有IP未被覆盖 - 如果需要保留白名单IP的备注信息,可调整
gcloud describe的输出格式同时获取备注字段,构造包含name和value的结构体传入patch命令,无备注需求的场景可直接使用当前脚本 - 建议不要设置低于5分钟的执行频率,避免触发GCP API限流
内容的提问来源于stack exchange,提问作者BOB
相关产品推荐
相关产品推荐

