SuperAPI AI 工具集

configuring-ip-allowlists

安全与审计

查看项目

更新于 10-15 13:58

技能介绍

用途

本技能用于配置和加固 CockroachDB Cloud 集群的 IP 允许列表,将 SQL 和 DB Console 的访问限制在授权的 CIDR 范围内。它会识别过于宽松的条目(例如 0.0.0.0/0),并将其替换为具体、狭窄的网段。

适用场景

  • 从 IP 允许列表中移除 0.0.0.0/0(对所有地址开放)
  • 在集群初始设置后限制网络访问
  • 将办公室、VPN 或 CI/CD 的 CIDR 范围添加到允许列表
  • 审查并收紧现有允许列表条目
  • 响应关于网络访问范围过宽的安全审计发现

前置条件

  • 已安装并认证 ccloud CLI(ccloud auth login)
  • Cloud Console 角色:Cluster Admin 或 Cluster Operator
  • 已知的 CIDR 范围:办公室 IP、VPN 出口 IP、CI/CD 运行器 IP 或其他授权来源
  • 集群 ID:可通过 ccloud cluster list 获取

验证访问:

ccloud auth whoami
ccloud cluster list

使用方式

1. 列出当前允许列表条目

# List all IP allowlist entries for the cluster
ccloud cluster networking allowlist list <cluster-id> -o json

审查每个条目。将以下情况标记为过于宽松:

  • 0.0.0.0/0 — 对所有 IPv4 地址开放
  • /8 范围 — 1600 万以上地址
  • /16 范围 — 65,000 以上地址
  • 未知或未记录的条目

完整命令语法参见 ccloud 命令参考。

2. 了解允许列表限制

CockroachDB Cloud 集群对每个集群的 IP 允许列表条目数量有上限。如果需要更多条目:

  • 合并条目:在安全允许的情况下使用更宽的 CIDR 范围(例如将多个 /32 条目合并为 /24)
  • 使用私有端点:对于基于 VPC 的访问,改用私有端点而非允许列表——私有端点完全绕过允许列表
  • 请求提高限制:如果合并和私有端点仍不足,联系 CockroachDB Cloud 支持

3. 确定所需的 CIDR 范围

修改允许列表前,记录所有合法访问来源:

来源 CIDR SQL 访问 UI 访问
办公室网络 203.0.113.0/24 是 是
VPN 出口 198.51.100.0/24 是 是
CI/CD 运行器 192.0.2.0/28 是 否
监控 10.0.1.5/32 是 否

4. 添加具体 CIDR 条目

# Add a specific CIDR range (CIDR is a positional argument)
ccloud cluster networking allowlist create <cluster-name> <cidr> \
  --sql \
  --ui \
  --name "<description>"

示例:

# Office network — SQL and UI access
ccloud cluster networking allowlist create <cluster-name> 203.0.113.0/24 \
  --sql \
  --ui \
  --name "Office network"

# CI/CD runners — SQL only
ccloud cluster networking allowlist create <cluster-name> 192.0.2.0/28 \
  --sql \
  --name "CI/CD runners"

# Single IP — /32 for maximum specificity
ccloud cluster networking allowlist create <cluster-name> 198.51.100.42/32 \
  --sql \
  --ui \
  --name "Developer workstation"

5. 移除过于宽松的条目

# Delete the 0.0.0.0/0 entry (or other overly broad entries)
ccloud cluster networking allowlist delete <cluster-name> 0.0.0.0/0

重要:只有在确认具体 CIDR 条目已就位并测试通过后,才移除 0.0.0.0/0。

6. 验证更新后的允许列表

# Confirm the final allowlist
ccloud cluster networking allowlist list <cluster-id> -o json

从每个授权来源测试连接:

# Test SQL connection from an allowed IP
cockroach sql --url "<connection-string>" -e "SELECT 1;"

# Test from a non-allowed IP (should fail)
# Attempt connection from an IP not in the allowlist — expect connection refused

安全注意事项

风险:将自己锁在外面。在添加当前 IP 之前移除 0.0.0.0/0 会立即阻断你的访问。

缓解步骤:

  • 更改前确定当前 IP:curl -s https://checkip.amazonaws.com
  • 先以 /32 条目添加你的 IP,再移除宽泛范围
  • 添加具体条目后、移除 0.0.0.0/0 前测试连接
  • 保留 Cloud Console 访问——即使 SQL 访问被阻断,Cloud Console UI 仍可修改允许列表

操作顺序:

  1. 添加所有具体 CIDR 条目
  2. 验证每个允许来源的 SQL 连接
  3. 仅在确认所有必要条目就位后移除 0.0.0.0/0
  4. 再次测试确认访问仍然正常

回滚

如果在移除宽泛条目后失去访问:

  • Cloud Console:登录 CockroachDB Cloud Console(Web UI)——它不使用 IP 允许列表
  • 重新添加你的 IP:将当前 IP 添加为 /32,或临时重新添加 0.0.0.0/0
  • 排查:确定缺失的 CIDR 并添加
# Emergency: re-add 0.0.0.0/0 via ccloud (if you still have ccloud access)
ccloud cluster networking allowlist create <cluster-name> 0.0.0.0/0 \
  --sql \
  --ui \
  --name "Emergency - temporary open access"

参考

技能参考:

  • ccloud commands for IP allowlists

相关技能:

  • auditing-cloud-cluster-security — 运行完整的安全态势审计
  • configuring-private-connectivity — 私有端点作为 IP 允许列表的替代方案

官方 CockroachDB 文档:

  • Network Authorization
  • Private Clusters
  • ccloud CLI Reference