policy config_error ai_generated true

Operation failed: Access denied due to organization policy: constraint/compute.vmExternalIpAccess violated for project <project-id>

ID: policy/gcp-org-policy-restrict-vm-external-ip

Also available as: JSON · Markdown · 中文
85%Fix Rate
87%Confidence
1Evidence
2023-11-10First Seen

Version Compatibility

VersionStatusIntroducedDeprecatedNotes
Google Cloud SDK 450.0.0 active
Compute Engine API v1 active
Organization Policy Service active

Root Cause

GCP organization policy 'compute.vmExternalIpAccess' blocks creating VMs with external IPs; the constraint is enforced at the organization, folder, or project level.

generic

中文

GCP 组织策略 'compute.vmExternalIpAccess' 阻止创建具有外部 IP 的 VM;该约束在组织、文件夹或项目级别强制执行。

Official Documentation

https://cloud.google.com/compute/docs/ip-addresses/reserve-static-external-ip-address#organization_policy

Workarounds

  1. 90% success Create the VM without an external IP: gcloud compute instances create <instance-name> --no-address --zone=<zone>. Then use Cloud NAT or a bastion host for outbound connectivity.
    Create the VM without an external IP: gcloud compute instances create <instance-name> --no-address --zone=<zone>. Then use Cloud NAT or a bastion host for outbound connectivity.
  2. 70% success Request an exception to the organization policy from your GCP admin: have them add your project to the allowed list via the Organization Policies console.
    Request an exception to the organization policy from your GCP admin: have them add your project to the allowed list via the Organization Policies console.
  3. 75% success Use a Shared VPC with a proxy subnet that has external IP allowed, then launch the VM in that subnet without direct external IP.
    Use a Shared VPC with a proxy subnet that has external IP allowed, then launch the VM in that subnet without direct external IP.

中文步骤

  1. 创建没有外部 IP 的 VM:gcloud compute instances create <instance-name> --no-address --zone=<zone>。然后使用 Cloud NAT 或堡垒主机进行出站连接。
  2. 向 GCP 管理员请求组织策略的例外:让他们通过组织策略控制台将你的项目添加到允许列表。
  3. 使用具有允许外部 IP 的代理子网的共享 VPC,然后在该子网中启动 VM,不直接分配外部 IP。

Dead Ends

Common approaches that don't work:

  1. 80% fail

    Setting VM to use an ephemeral external IP manually in gcloud still fails because the policy blocks all external IP assignment.

  2. 70% fail

    Removing the VM and recreating without specifying --no-address still triggers the policy if the default network has external IP.

  3. 60% fail

    Creating a VM in a different project without checking its policy may still fail if the organization policy applies across projects.