如何限制GCP项目内VM的创建?有哪些可行的实现方案?
GCP项目限制VM虚拟机创建的落地方案
1. 基于IAM权限的精准控制
这是最基础、适用范围最广的前置管控方案,通过回收不必要的VM创建相关权限从源头限制操作:
- 移除普通用户/服务账号的高权限角色:不要给非运维人员
roles/compute.instanceAdmin、roles/editor、roles/owner这类默认带VM创建权限的角色,优先分配roles/compute.viewer这类只读权限。 - 自定义最小权限角色:如果部分用户需要使用Compute Engine的部分能力,自定义IAM角色时排除VM创建相关的核心权限,包括
compute.instances.create、compute.disks.create、compute.subnetworks.use、compute.networks.useExternalIp(涉及公网VM时)等,仅开放必要的查询、启停、挂载磁盘等权限。 - 权限边界限制:对跨项目协作的账号配置IAM权限边界,明确禁止VM创建类操作,避免权限溢出。
2. 基于组织策略的强制管控
如果需要不受IAM权限影响的高优先级全局/项目级限制,可以用GCP组织策略实现强制拦截:
- 直接禁用VM创建:配置组织策略约束
constraints/compute.restrictInstanceCreation,直接禁止指定项目/文件夹下所有主体的VM创建操作,即使用户持有Instance Admin权限也无法创建。 - 按需缩小允许范围:如果不需要完全禁用,可配置
constraints/compute.restrictInstanceCreationByMachineType仅允许创建指定机型的VM,或者配置constraints/compute.vmExternalIpAccess禁止创建带公网IP的VM,间接降低风险。 - 组织策略支持按标签、部门做差异化配置,可以适配不同业务团队的特殊需求。
3. 审批工作流替代直接创建权限
针对确实有VM创建需求的场景,可以回收用户直接创建权限,用审批流实现可控创建:
- 搭建内部自助服务入口,用户提交VM创建申请(填写规格、用途、到期时间等信息),经直属上级/运维人员审批通过后,后台通过预授权的服务账号调用GCP API完成VM创建,全程用户不需要持有VM创建权限。
- 可以结合Cloud Function、Cloud Workflows实现自动化审批流转,还可以自动给VM打上申请人、到期时间标签,方便后续生命周期管理。
4. 审计+自动兜底方案
如果部分特殊场景无法完全收回VM创建权限,可以用审计+自动回收机制做兜底:
- 开启Cloud Audit Logs的Compute Engine操作审计,配置日志告警规则,监控
compute.instances.create事件,一旦有非授权的创建操作立刻给运维团队发通知。 - 配置触发式Cloud Function,检测到不符合预设规则的VM创建操作(比如非白名单用户创建、未打必要标签、规格超出限制等),自动删除违规VM并同步通知操作人。
实施注意事项
- 调整权限前先导出当前项目的IAM权限列表做审计,提前梳理需要保留VM创建权限的白名单账号,避免影响正常业务运行。
- 所有规则先在沙箱测试项目验证无误后再同步到生产环境,组织策略调整前建议先开「审计模式」观察一周影响,确认无误伤后再开启强制拦截。
内容的提问来源于stack exchange,提问作者XM_7707
相关产品推荐
相关产品推荐

