Enable IAP for Compute Engine Stay organized with collections Save and categorize content based on your preferences.
This page explains how to secure a Compute Engine instance withIdentity-Aware Proxy (IAP).
Before you begin
To enable IAP for Compute Engine, you need thefollowing:
- A Google Cloud console project with billing enabled.
- A group of one or more Compute Engine instances, served by a loadbalancer.
- Learn aboutSetting up an external HTTPS load balancer.
- Learn aboutsetting up an internal HTTP load balancer.
- A domain name registered to the address of your load balancer.
- Application code to verify that all requests have an identity.
- Learn aboutGetting the user's identity.
If you don't have your Compute Engine instance set up already, seeSetting up IAP for Compute Enginefor a complete walkthrough.
IAP uses a Google-managed OAuth client to authenticate users.Only users within the organization can access the IAP-enabledapplication. If you want to allow access to users outside of your organization,seeEnable IAP for external applications.
Note: The ability to authenticate users with a Google-managed OAuth client is available inPreview.You can enable IAP on a Compute Enginebackend service or on aCompute Engineforwarding rule.When you enable IAP on a Compute Engine backend service,only that backend service is protected by IAP. When you enableIAP on a Compute Engine forwarding rule, all of theCompute Engine instances behind the forwarding rule are protected byIAP.
Enable IAP on a forwarding rule
You can enable IAP on a forwarding rule by using theload balancerauthorization policiesframework.
gcloud
- Run the following command to prepare a
policy.yamlfile.The policy allows clients with an IP address range of10.0.0.0/24toenable IAP on a forwarding rule.
$ cat << EOF > policy.yamlaction:CUSTOMdescription:authz policy with Cloud IAPname:AUTHZ_POLICY_NAMEhttpRules:-from:sources:-ipBlocks:-prefix:"10.0.0.0"length:24customProvider:cloudIap:{}target:loadBalancingScheme:EXTERNAL_MANAGEDresources:-https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/FORWARDING_RULE_IDEOF- Run the following command to enable IAP on a forwarding rule.
gcloud network-security authz-policies importAUTHZ_POLICY_NAME \--source=policy.yaml \--location=LOCATION \--project=PROJECT_ID
Replace the following:
- PROJECT_ID: The Google Cloud project ID.
- LOCATION: The region that the resource is located in.
- FORWARDING_RULE_ID: The ID of the forwarding rule resource.
- AUTHZ_POLICY_NAME: The name of the authorization policy.
API
- Run the following command to prepare a
policy.jsonfile.cat << EOF > policy.json{"name": "AUTHZ_POLICY_NAME","target": { "loadBalancingScheme": "INTERNAL_MANAGED", "resources": [ "https://www.googleapis.com/compute/v1/projects/PROJECT_ID/regions/LOCATION/forwardingRules/FORWARDING_RULE_ID" ],},"action": "CUSTOM","httpRules": [ { "from": { "sources": { "ipBlocks": [ { "prefix": "10.0.0.0", "length": 24 } ] } } }],"customProvider": { "cloudIap": {}}}EOF Run the following command to enable IAP on a forwarding rule.
curl -X PATCH \-H "Authorization: Bearer $(gcloud auth print-access-token)" \-H "Accept: application/json" \-H "Content-Type: application/json" \-d @policy.json \"https://networksecurity.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/authzPolicies"
Replace the following:
- PROJECT_ID: The Google Cloud project ID.
- LOCATION: The region that the resource is located in.
- FORWARDING_RULE_ID: The ID of the forwarding rule resource.
- AUTHZ_POLICY_NAME: The name of the authorization policy.
After you enable IAP on a forwarding rule, you canapply permissions to resources.
Enable IAP on a Compute Engine backend service
You can enable IAP on a Compute Engine backend servicethrough that backend service.
console
The Google-managed OAuth client is not available when enabling IAP using the Google Cloud console.
If you haven't configured your project's OAuth consent screen, you'll beprompted to do so. To configure your OAuth consent screen, seeSetting up your OAuth consent screen.
If you are running GKE clusters version 1.24 or later, you can configureIAP and GKE by using the Kubernetes Gateway API. To do so, completethe following steps and then follow the instructions inConfigure IAP.Do not configureBackendConfig.
Setting up IAP access
- Go to theIdentity-Aware Proxy page.
Go to the Identity-Aware Proxy page - Select the project you want to secure with IAP.
Select the checkbox next to the resource you want to grant access to.
If you don't see a resource, ensure that the resource is created and that the BackendConfig Compute Engine ingress controller is synced.
To verify that the backend service is available, run the following gcloud command:
gcloud compute backend-services list- On the right side panel, clickAdd principal.
- In theAdd principals dialog that appears, enter the email addresses of groups or individuals who should have theIAP-secured Web App User role for the project.
The following kinds of principals can have this role:
- Google Account: user@gmail.com
- Google Group: admins@googlegroups.com
- Service account: server@example.gserviceaccount.com
- Google Workspace domain: example.com
Make sure to add a Google Account that you have access to.
- SelectCloud IAP > IAP-secured Web App User from theRoles drop-down list.
- ClickSave.
Turning on IAP
- On theIdentity-Aware Proxy page, underAPPLICATIONS, find the load balancer that serves the instance group you want to restrict access to. To turn on IAP for a resource,
To enable IAP:- At least one protocol in the load balancer frontend configuration must be HTTPS. Learn aboutsetting up a load balancer.
- You need the
compute.backendServices.update,clientauthconfig.clients.create,clientauthconfig.clients.update, andclientauthconfig.clients.getWithSecretpermissions. These permissions are granted by roles, such as the Project Editor role. To learn more, seeManaging access to IAP-secured resources.
- In theTurn on IAP window that appears, clickTurn On to confirm that you want IAP to secure your resource. After you turn on IAP, it requires login credentials for all connections to your load balancer. Only accounts with theIAP-Secured Web App User role on the project will be given access.
gcloud
Before you set up your project and IAP, you need an up-to-date version of the gcloud CLI. For instructions on how to install the gcloud CLI,seeInstall the gcloud CLI.
- To authenticate, use the Google Cloud CLI and run the following command.
gcloud auth login - To sign in, follow the URL that appears.
- After you sign in, copy the verification code that appears and paste it in the command line.
- Run the following command to specify the project that contains the resource that you want to protect with IAP.
gcloud config set projectPROJECT_ID - To enable IAP, run either the globally or regionally scoped command.
Global scope Regional scopegcloud compute backend-services updateBACKEND_SERVICE_NAME --global --iap=enabledgcloud compute backend-services updateBACKEND_SERVICE_NAME --regionREGION_NAME --iap=enabled
After you enable IAP, you can use the gcloud CLI to modifythe IAP access policy using the IAM roleroles/iap.httpsResourceAccessor. Learn more aboutmanaging roles and permissions.
API
Run the following command to prepare a
settings.jsonfile.cat << EOF > settings.json{"iap": { "enabled":true }}EOFRun the following command to enable IAP.
curl -X PATCH \-H "Authorization: Bearer $(gcloud auth print-access-token)" \-H "Accept: application/json" \-H "Content-Type: application/json" \-d @settings.json \"https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/REGION/backendServices/BACKEND_SERVICE_NAME"
After you enable IAP, you can use the Google Cloud CLI to modify theIAP access policy using the IAM roleroles/iap.httpsResourceAccessor. Learn more aboutmanaging roles and permissions.
Except as otherwise noted, the content of this page is licensed under theCreative Commons Attribution 4.0 License, and code samples are licensed under theApache 2.0 License. For details, see theGoogle Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.
Last updated 2025-12-15 UTC.