4. 云数据库网络隔离与访问控制
云数据库的网络暴露面,往往不是由数据库自身决定的,而是由它所在的网络边界、访问路径和身份校验共同决定。一个常见的误区是:只给数据库设置了强密码,就认为访问控制已经到位。实际上,如果数据库监听在公网、安全组放行了 0.0.0.0/0、白名单又写得过于宽泛,那么密码强度再高也只是最后一道薄墙。本节围绕云数据库的访问路径,从 VPC 到零信任接入,逐层说明如何把“谁能连、从哪连、连到哪个入口”控制清楚。
一、VPC:先确定数据库的“网络归属”
VPC(Virtual Private Cloud)是云上逻辑隔离的私有网络,数据库实例通常部署在某个 VPC 的某个子网中。子网分为公有子网和私有子网:公有子网的路由表指向互联网网关,私有子网则没有直接公网出口。生产数据库应优先放在私有子网,避免直接绑定公网 IP。例如,某订单库部署在 VPC vpc-prod-01 的私有子网 subnet-db-a(10.0.20.0/24),应用服务器位于同 VPC 的 subnet-app-a(10.0.10.0/24),两者通过内网互通,数据库不暴露公网地址。这样,攻击者即使扫描公网,也无法直接触达数据库端口。
VPC 还决定了路由与对等连接。跨 VPC 访问时,需要通过 VPC 对等连接、云企业网或私有链接打通,而不是简单地把数据库改成公网可访问。路由表、子网掩码和网段规划要在设计阶段就确定,避免后期出现 10.0.0.0/8 与办公网段冲突,导致访问路径混乱。
二、安全组与网络 ACL:两层过滤,方向不同
安全组和网络 ACL 都用于控制流量,但作用层级和状态特性不同。安全组作用于实例网卡,是有状态的:如果允许入站请求,返回流量会自动放行,不需要单独配置出站规则。网络 ACL 作用于子网,是无状态的:入站和出站规则必须分别配置,返回流量也要显式放行。
以 MySQL 3306 端口为例,安全组可以这样设计:入站只允许应用安全组 sg-app 访问 sg-db 的 3306,出站默认拒绝或仅允许必要响应;网络 ACL 则在子网层放行 10.0.10.0/24 到 10.0.20.0/24 的 3306,以及对应的临时端口返回流量。安全组适合做“实例级最小开放”,网络 ACL 适合做“子网级粗粒度兜底”。两者不是二选一,而是配合使用:安全组管到端口和源对象,网络 ACL 管子网边界。
三、私有链接与数据库代理:隐藏真实入口
私有链接(PrivateLink / 私网连接)把数据库服务以“终端节点”的形式暴露给其他 VPC,而不需要 VPC 对等连接,也不需要暴露数据库真实地址。调用方访问的是终端节点域名,流量在云内网完成转发。这样做的价值是:数据库实例可以完全私有,跨账号、跨 VPC 的访问通过终端节点授权控制,减少网络暴露面。
数据库代理则位于应用与数据库之间,提供连接池、读写分离、故障切换和访问审计。应用不再直连数据库地址,而是连接代理地址。代理可以统一做 TLS 终止、连接数限制和 SQL 白名单。例如,应用连接 proxy-db.internal:3306,代理后端再连接真实主库和只读库。这样,数据库真实地址不对外暴露,代理层还能记录“谁在什么时间执行了什么语句”,为审计提供依据。
四、白名单与零信任接入:从“网络可信”到“身份可信”
白名单是传统但有效的控制手段:只允许指定 IP 或网段访问数据库。它适合固定出口 IP 的应用服务器或办公网络。但白名单的局限也很明显:一旦应用迁移、弹性扩容或使用动态出口 IP,白名单就会失效;而且白名单只证明“来源网络可信”,不能证明“访问者身份可信”。
零信任接入的核心是“永不信任、持续验证”。访问数据库前,先验证身份(如 IAM 角色、短期令牌、mTLS 证书),再验证设备状态和访问上下文,最后才建立连接。典型做法是:应用通过服务账号获取短期数据库凭证,凭证与实例、库、表权限绑定,有效期几分钟到几小时;数据库侧启用 IAM 认证或证书认证,关闭静态密码。这样,即使网络层被突破,攻击者没有有效身份也无法连接。
五、组合落地:一条可执行的访问路径
把上述组件串起来,一条生产级访问路径可以这样设计:应用部署在 VPC 私有子网,通过数据库代理地址连接;代理后端连接数据库实例,实例位于数据库私有子网,无公网 IP;安全组只允许代理安全组访问 3306,网络 ACL 在子网层放行代理子网到数据库子网的流量;跨 VPC 的调用方通过私有链接终端节点接入,终端节点策略限制可访问的账号和 VPC;应用使用 IAM 角色获取短期凭证,数据库启用 IAM 认证,关闭静态密码;白名单仅作为固定出口 IP 场景的补充,不作为唯一防线。
验证时,可以从三个方向检查:第一,从公网直接连接数据库地址,应超时或拒绝;第二,从非授权安全组的实例连接,应被安全组拦截;第三,使用过期或越权凭证连接,应被数据库认证拒绝。若三项都符合预期,说明网络隔离与访问控制形成了有效闭环。需要强调的是,安全组、网络 ACL、白名单和零信任不是互相替代的关系,而是分别覆盖网络位置、子网边界、来源地址和访问身份四个维度。只有把它们组合起来,才能让数据库在“可达”和“可信”之间取得平衡。