如何在GCP/AWS/Azure中限制用户为EC2/VM附加公网IP的权限
结论
不存在能直接同时适配GCP、AWS、Azure三大公有云的原生单一全局权限策略。三家云的IAM权限模型、资源操作API、策略语法完全独立,没有跨云通用的原生策略标准,要实现全平台限制用户给计算实例附加公网IP的管控,需要分别在各云的组织级节点配置兜底规则,有需求的话可以通过多云管控层做统一策略编排。
各云平台原生管控配置方式
AWS
- 最高优先级兜底用组织SCP(服务控制策略)做全账号覆盖,策略优先级高于单账号内的IAM用户/角色权限,能避免子账号自行提权绕过限制
- 策略需要拦截两类核心操作:
ec2:AssociateAddress:禁止将弹性公网IP绑定到EC2实例- 对
ec2:RunInstances操作增加条件判断,拦截创建实例时携带AssociatePublicIpAddress: true参数的请求,从创建环节禁止默认分配公网IP
- 额外兜底:开启AWS Config规则,自动扫描已绑定公网IP的EC2实例,配置自动修正逻辑触发解绑+告警
Azure
- 最高优先级兜底用管理组/订阅范围的Azure Policy做强制管控,覆盖范围优于单资源组的RBAC权限配置
- 核心拦截两类操作:
- 禁止虚拟机网卡配置关联公网IP,拦截
Microsoft.Network/networkInterfaces/ipconfigurations/publicIPAddresses/write相关操作 - 虚拟机创建策略中强制公网IP配置项为
Disable,禁止创建流程中给实例绑定公网IP
- 禁止虚拟机网卡配置关联公网IP,拦截
- 额外兜底:开启Azure Defender for Servers对公网暴露实例的检测,配置不合规资源自动修正规则
GCP
- 最高优先级兜底用组织节点的Organization Policy做全文件夹、全项目覆盖,优先级高于项目级IAM权限分配
- 直接启用内置约束
compute.vmExternalIpAccess,将约束允许值设置为空列表,即可从组织层面禁止所有项目下的VM实例绑定外部公网IP - 额外兜底:通过Security Command Center配置违规检测规则,实时扫描绑定公网IP的VM实例,触发告警通知
跨平台全局管控实现
如果需要统一的策略管理入口,不需要分别登录三个云平台操作,可以自建多云管控层实现:
- 抽象统一的策略语义,比如“禁止所有计算实例绑定公网IP”,管控层自动适配三家云的策略语法和API接口,将规则统一下发到各云的组织级管控节点
- 统一归集三个云的审计日志,实时检测违规操作,触发跨云的统一告警和自动处置
- 注意:必须保留各云原生的组织级兜底策略,不能完全依赖上层管控层,避免管控层故障时出现权限绕过。
内容的提问来源于stack exchange,提问作者PratikRathi
相关产品推荐
相关产品推荐

