云运维高阶二:CLI 调用 API (白名单追随)
一句话概括:基于云计算----一切皆 API(Everything is API)进行白名单追随示例演示,提醒:网络环境安全情况请自行评估。
1、白名单追随--场景描述
- 1.基于安全产品,云防火墙,堡垒机没有的情况下 :
最小粒度的安全组管控,以防止网络层的攻击,比如防止端口扫描,防止SSH攻击等个人开发者或是小微企业很少能上云防火墙&堡垒机 这样的安全产品。只开放22、3306、1521、3389等高危端口给可信IP,做最小粒度的安全组管理。 - 2.经常出差,网络的出网IP经常变更 :
本地的公网IP经常变更,比如经常出差,或者家庭网络公网IP经常变,需要实时变更服务器-高危端口的-白名单IP。
你在云厂商的网页上点"登录",再查询当前的本机公网IP,再把当前的公网IP添加到IP白名单。整个流程很长,出差的网络环境又不稳定,或者家庭网络的IP又经常变,打开云厂商的控制台可能会卡。
2、云计算一切皆 API示例--CLI 调用 API (白名单追随)
-
概念理解------知道可行
先理解云厂商的概念"一切皆 API(Everything is API)",知道云厂商所有创建、删除、修改、查询操作都是通过调用API来完成的。
那么我们只要满足云厂商的鉴权,就可以不用每次都登录云厂商的控制台,直接调用API完成我们期望的操作。
-
工具利用------CLI调用API
传统云厂商,如阿里云、华为云、腾讯云等,都提供CLI工具,可以快捷调用云厂商提供的API。
-
目标与函数匹配------选择API
根据我们需要达成的目的,判断对应操作API所属的云产品,再选择对应方法与函数。
比如当前目标白名单追随 ------自动查询当前网络出网IP,添加到安全组 ,应该选用安全组创建/修改API
3、API-Explorer调试接口
✅ 3.1. API-Explorer调试IP是否可以成功添加到IP白名单
以华为云为例,调用API----CreateAddressGroup/v3(其他云厂商对应使用即可)。
例子1:添加特定IP到白名单。(有一定风险,需自行评估网络环境)
✅ 3.2. 云厂商控制台验证结果
基本上一步调用成功,就没什么问题,控制台查询,验证添加成功。

4、用获取到的CLI命令,编写完整程序(附完整windows-bat命令)
✅ 4.1. 先编写获取公网IP命令
获取实时出口公网IP,(windows环境下的bat命令,将下面的文本复制保存为.bat可执行文件即可)。
bash
@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion
echo 正在获取本机公网 IP...
for %%S in (
"curl -s https://api.ipify.org"
"curl -s https://ipv4.icanhazip.com"
"curl -s https://ifconfig.me/ip"
) do (
set "PUBLIC_IP="
for /f "delims=" %%i in ('%%~S') do set "PUBLIC_IP=%%i"
if defined PUBLIC_IP (
echo 获取成功 - 公网 IP: !PUBLIC_IP!
goto :done
)
)
echo 获取失败,请检查网络连接。
:done
endlocal
pause
✅ 4.2. 再结合上面获取到的CLI命令
结合CLI命令(windows环境下的bat命令,将下面的文本复制保存为.bat可执行文件即可)。
(注意:需要安装好CLI工具,各大云厂商搜索"命令行工具"-安装即可)
bash
@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion
REM CLI命令的本地安装位置
set "HCLOUD_DIR=D:\devtools\huawei"
if exist "%HCLOUD_DIR%\hcloud.exe" (
set "PATH=%HCLOUD_DIR%;%PATH%"
) else (
echo [错误] 未找到 %HCLOUD_DIR%\hcloud.exe,请检查 hcloud 安装路径
pause
exit /b 1
)
echo 正在获取本机公网 IP...
for %%S in (
"curl -s https://api.ipify.org"
"curl -s https://ipv4.icanhazip.com"
"curl -s https://ifconfig.me/ip"
) do (
set "PUBLIC_IP="
for /f "delims=" %%i in ('%%~S') do set "PUBLIC_IP=%%i"
if defined PUBLIC_IP (
echo 获取成功 - 公网 IP: !PUBLIC_IP!
goto :done
)
)
echo 获取失败,请检查网络连接。
:done
REM 添加IP地址组,间接添加IP白名单,cli-region为区域-上海一, address_group_id为ip地址组的ID
if defined PUBLIC_IP (
echo 正在调用 hcloud 更新 IP 地址组...
hcloud VPC UpdateAddressGroup/v3 "--cli-region=cn-east-3" "--address_group_id=xxxxx安全组IDxxxxx" "--address_group.ip_extra_set.1.ip=!PUBLIC_IP!/32" "--address_group.ip_extra_set.1.remarks=本地机器的公网IP"
)
endlocal
pause
5、注意事项(附参考链接)
-
命令行工具安装--不同厂商CLI的名字不一样
HW-cloud地址:https://support.huaweicloud.com/qs-hcli/hcli_02_002.html
AL-cloud地址:https://help.aliyun.com/zh/cli/install-update-alibaba-cloud-cli
-
API-Explorer调试选好产品
HW-cloud地址:https://console.huaweicloud.com/apiexplorer/#/openapi/VPC/cli?version=v3\&api=CreateAddressGroup
AL-cloud地址:https://api.aliyun.com/api/Ecs/2014-05-26/ModifySecurityGroupRule?RegionId=cn-qingdao
-
windows命令保存为bat, linux命令保存为shell
windows环境保存为.bat文件
linux环境保存为.sh文件,
上面演示的命令环境为windows,若你的环境为linux请对应按shell规则修改。

