从 IAP OAuth Admin API 迁出

Identity-Aware Proxy (IAP) OAuth Admin API 现已弃用。本指南介绍了如何选择将现有 OAuth 客户端迁移到 Google 管理的 OAuth 客户端。如果您不使用 IAP OAuth Admin API,则此变更不会对您产生影响。

如需检查您的项目是否使用了 OAuth Admin API,请参阅检查 OAuth Admin API 的使用情况。 如果您的项目使用的是 OAuth Admin API,则必须按照本文档中的迁移说明进行操作,或者您也可以使用 OAuth Admin API 的替代方案。

变更内容

我们将弃用 IAP OAuth Admin API,其中包括以下用于手动 OAuth 客户端和品牌管理的 API 和 gcloud CLI 命令组:

您无法再使用 IAP OAuth Admin API 创建或管理自定义 OAuth 客户端。 IAP 使用 Google 管理的 OAuth 客户端,而不是手动管理 OAuth 2.0 客户端。这可以简化 OAuth 客户端管理、减少手动错误并简化部署流程。

如需继续提供自定义品牌信息,我们建议您配置自定义 OAuth 客户端。

未发生变化的方面

如果您不使用 IAP OAuth Admin API,则此变更不会对您产生影响。

此弃用不会影响您使用 Compute Engine API、App Engine API 或 Google Cloud 控制台手动配置的 OAuth 客户端。此外,它也不会影响用于管理 IAP 访问权限政策、设置或 TCP 转发的其他 IAP API 或 gcloud CLI 命令组(包括其 alpha 和 beta 发布轨道),例如 gcloud iap web(例如 get-iam-policy 和 remove-iam-policy-binding)、gcloud iap settings 和 gcloud iap tcp,因为这些命令使用的是 IdentityAwareProxyAdminService API,而不是已弃用的 IdentityAwareProxyOAuthService API。

您可以继续创建新的 OAuth 品牌和客户端配置,并使用 Google Cloud 控制台对其进行管理。您无需迁移现有的 OAuth 客户端;您可以继续通过Google Cloud 控制台(而非 IAP OAuth Admin API)使用和管理这些客户端。

检查 IAP OAuth Admin API 的使用情况

如需检查您的项目是否正在使用 IAP OAuth Admin API,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往 IAP API 使用情况页面。

    前往 IAP API 使用情况

  2. 选择要检查 IAP OAuth Admin API 使用情况的项目。

  3. 在选择图表列表中,选择流量(按 API 方法),然后点击确定。

  4. 在方法部分中,查找带有前缀 google.cloud.iap.v1.IdentityAwareProxyOAuthService 的方法,该前缀表示项目使用了 IAP OAuth Admin API。

详细说明

自 2025 年 1 月 22 日起,用于创建 IAP OAuth 2.0 客户端的 IAP OAuth 2.0 Admin API 已弃用。现在,IAP 会默认使用 Google 管理的 OAuth 客户端进行浏览器访问,或者在未明确配置 OAuth 2.0 客户端时使用该客户端。Google 管理的 OAuth 2.0 客户端会限制对已启用 IAP 的应用的访问,仅允许同一组织内的用户通过浏览器访问这些应用。

随着 Identity-Aware Proxy (IAP) OAuth 2.0 Admin API 的弃用,您无法再使用此 API 创建或管理 OAuth 客户端。在此弃用之前创建的 OAuth 客户端不会失效。您可以继续使用之前创建的 OAuth 客户端,并使用 Google Cloud 控制台管理这些客户端。

如果您有应用配置了使用 IAP 2.0 Admin API 或其他方式创建的 OAuth 客户端,这些应用将继续正常运行。无需对应用进行任何更改。但是,如果您的自动化脚本或基础设施即代码 (IaC) 工具使用 IAP OAuth 2.0 Admin API 来配置新客户端或提取现有客户端的客户端密钥,则您必须更新这些脚本,使其不再使用 IAP OAuth 2.0 Admin API。

是继续使用现有的用户管理客户端,还是考虑改用 Google 管理的选项,取决于您对品牌信息和外部访问权限的要求。如需详细了解所有功能差异,请参阅 Google 管理的 OAuth 客户端与自定义 OAuth 客户端对比表。如果您的应用需要自定义客户端 ID 以用于品牌推广或外部访问,请使用 Google Cloud 控制台创建客户端 ID。如需详细了解自定义 OAuth 客户端,请参阅自定义 OAuth 配置以启用 IAP。

如需了解如何为应用配置 Google 管理的 OAuth 2.0 客户端,请参阅程序化访问。

如果 Google 管理的 OAuth 2.0 客户端无法满足您的要求,您可以与多个 IAP 应用共享单个 OAuth 客户端,从而无需为每个新应用手动创建客户端。

通过 Marketplace 渠道非公开优惠完成的购买交易

  • 更新自动化脚本

    如果您使用 Terraform、gcloud CLI(gcloud iap oauth-brands 或 gcloud iap oauth-clients,包括 alpha 和 beta)或其他工具来自动配置 IAP,并且您使用 IAP OAuth 2.0 Admin API,则必须更新自动化脚本,以使用预先创建的客户端或将 Google 管理的 OAuth 客户端与 IAP 搭配使用。

  • 为使用 Google 管理的 OAuth 2.0 客户端的应用配置程序化访问权限

    如果您已经有一些受 IAP 保护的应用,并且计划使用 Google 管理的 OAuth 2.0 客户端迁移这些应用,则可以通过将 OAuth 2.0 客户端列入许可清单来为这些应用配置程序化访问。

迁移启用了 IAP 的资源

如需迁移资源以使用 Google 管理的 OAuth 2.0 客户端,请按照要迁移的资源类型(例如 Compute Engine 资源)的步骤操作。

迁移已启用 IAP 的 App Engine 资源

完成本部分中的步骤,以迁移已启用 IAP 且已配置 OAuth 2.0 客户端的 App Engine 资源。

gcloud

在继续执行这些步骤之前,请确保您使用的是最新版本的 gcloud CLI。如需了解如何安装 gcloud CLI,请参阅安装 gcloud CLI。

  1. 使用 Google Cloud CLI 进行身份验证。

    gcloud auth login
    
  2. 点击显示的网址并登录。

  3. 登录后,复制显示的验证码并将其粘贴到命令行中。

  4. 运行以下命令,指定包含您要继续使用 IAP 保护的应用的项目。

    gcloud config set project PROJECT_ID
    
  5. 运行以下命令,提取已配置的 OAuth 2.0 客户端 ID。

    gcloud app describe --format="value(iap.oauth2ClientId)"
    

    如果您想允许程序化访问,请保存上一个命令中的客户端 ID。

  6. 如需将 OAuth 2.0 客户端列入许可清单以进行程序化访问,请对 IAP Settings API 执行读取-更新-写入操作。

    gcloud iap settings get --resource-type=app-engine --project=$PROJECT > settings.yaml
    
  7. 更新 settings.yaml 文件,并在 programmaticClients 下添加之前提取的 OAuth 2.0 客户端 ID,如以下示例所示。

    accessSettings:
      oauthSettings:
        programmaticClients:
        - CLIENT_ID
    
  8. 在 App Engine 应用上应用新设置

    gcloud iap settings set settings.yaml --resource-type=app-engine --project=PROJECT_ID
    
  9. 如需迁移应用,请运行以下命令。

    gcloud iap web enable --resource-type=app-engine
    

API

  1. 运行以下命令,提取已配置的 OAuth 2.0 客户端 ID。

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    "https://appengine.googleapis.com/v1/apps/PROJECT_ID?fields=iap"
    
  2. 运行以下命令,将现有 IAP 设置提取到 settings.json 文件中。

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    "https://iap.googleapis.com/v1/projects/PROJECT_ID/iap_web/appengine-PROJECT_ID:iapSettings" > settings.json
    
  3. 更新 settings.json 文件,将之前保存的 CLIENT_ID 添加为程序化客户端。

    {
        "accessSettings": {
          "oauthSettings": {
            "programmaticClients": [
              "CLIENT_ID"
            ]
          },
        },
    }
    
  4. 运行以下命令以更新 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://iap.googleapis.com/v1/projects/PROJECT_ID/iap_web/appengine-PROJECT_ID:iapSettings"
    
  5. 运行以下命令,准备 settings.json 文件。

      cat << EOF > settings.json
      {
      "iap":
          {
            "enabled":true
          }
      }
      EOF
    
  6. 运行以下命令以迁移应用。

      curl -X PATCH \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "Accept: application/json" \
      -H "Content-Type: application/json" \
      -d @settings.json \
      "https://appengine.googleapis.com/v1/apps/PROJECT_ID?updateMask=iap"
    

迁移已启用 IAP 的 Compute Engine 资源

完成本部分中的步骤,以迁移已启用 IAP 且已配置 OAuth 2.0 客户端的 Compute Engine 资源。

gcloud

在继续执行这些步骤之前,请确保您使用的是最新版本的 gcloud CLI。如需了解如何安装 gcloud CLI,请参阅安装 gcloud CLI。

  1. 使用 Google Cloud CLI 进行身份验证。

    gcloud auth login
    
  2. 点击显示的网址并登录。

  3. 登录后,复制显示的验证码并将其粘贴到命令行中。

  4. 运行以下命令,指定包含您要继续使用 IAP 保护的应用的项目。

    gcloud config set project PROJECT_ID
    
  5. 运行以下命令,提取已配置的 OAuth 2.0 客户端 ID。

    全球范围

    
    gcloud compute backend-services describe BACKEND_SERVICE_NAME \
    --global \
    --format="value(iap.oauth2ClientId)"
    

    区域范围

    
    gcloud compute backend-services describe BACKEND_SERVICE_NAME \
    --region REGION_NAME \
    --format="value(iap.oauth2ClientId)"
    

    如果您想允许程序化访问,请保存上一个命令中的客户端 ID。

  6. 如需向 OAuth 2.0 客户端授予程序化访问权限,请对 IAP Settings API 执行读取-更新-写入操作。

    全球范围

    gcloud iap settings get \
        --resource-type=compute \
        --project=PROJECT_ID \
        --service=BACKEND_SERVICE_NAME > settings.yaml
    

    区域范围

    gcloud iap settings get \
        --resource-type=compute \
        --project=PROJECT_ID \
        --service=BACKEND_SERVICE_NAME \
        --region=REGION_NAME > settings.yaml
    
  7. 更新 settings.yaml 文件,并在 programmaticClients 下添加之前提取的 OAuth 2.0 客户端 ID,如以下示例所示:

    accessSettings:
      oauthSettings:
        programmaticClients:
        - CLIENT_ID
    
  8. 在 Compute Engine 应用上应用新设置:

    全球范围

    gcloud iap settings set settings.yaml \
        --resource-type=compute \
        --project=PROJECT_ID \
        --service=BACKEND_SERVICE_NAME

    区域范围

    gcloud iap settings set settings.yaml \
        --resource-type=compute \
        --project=PROJECT_ID \
        --service=BACKEND_SERVICE_NAME \
        --region=REGION_NAME
  9. 如需迁移应用,请运行以下命令。如需清除 OAuth 客户端 ID 和 OAuth secret,请在命令中传递带引号的单个空格 (" ")。后端服务使用 Google 管理的 OAuth 客户端。

    全球范围

    gcloud compute backend-services update BACKEND_SERVICE_NAME \
        --global \
        --iap=enabled,oauth2-client-id=" ",oauth2-client-secret=" "
    

    区域范围

    gcloud compute backend-services update BACKEND_SERVICE_NAME \
        --region REGION_NAME \
        --iap=enabled,oauth2-client-id=" ",oauth2-client-secret=" "
    
  10. 如需确认您已移除 OAuth 客户端 ID 和 OAuth 客户端密钥,并且后端服务使用的是 Google 管理的 OAuth 客户端,请运行 gcloud compute backend-services describe。为了在迁移期间清除这些字段,gcloud compute backend-services update 命令会使用一个空格 (" "),Compute Engine API 会将其解读为移除 oauth2ClientId 和 oauth2ClientSecret 值的指令。

    全球范围

    gcloud compute backend-services describe BACKEND_SERVICE_NAME \
        --global
    

    区域范围

    gcloud compute backend-services describe BACKEND_SERVICE_NAME \
        --region REGION_NAME
    

    运行 describe 命令后,检查输出的 iap 部分。如果 oauth2ClientId 字段显示单个空格 (' '),并且 oauth2ClientSecret 字段包含单个空格的 SHA256 哈希 (36a9e7f1c95b82ffb99743e0c5c4ce95d83c9a430aac59f84ef3cbfab6145068),则表示迁移成功。

API

  1. 运行以下命令,提取已配置的 OAuth 2.0 客户端 ID。

    全球范围

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE_NAME?fields=iap.oauth2ClientId"
    

    区域范围

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/backendServices/BACKEND_SERVICE_NAME?fields=iap.oauth2ClientId"
    
  2. 运行以下命令,将现有 IAP 设置提取到 settings.json 文件中。

    全球范围

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://iap.googleapis.com/v1/projects/PROJECT_ID/iap_web/compute/services/BACKEND_SERVICE_NAME:iapSettings" > settings.json
    

    区域范围

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://iap.googleapis.com/v1/projects/PROJECT_ID/iap_web/compute-REGION_NAME/services/BACKEND_SERVICE_NAME:iapSettings" > settings.json
    
  3. 更新 settings.json 文件,将之前保存的 CLIENT_ID 添加为程序化客户端。

    {
        "accessSettings": {
          "oauthSettings": {
            "programmaticClients": [
              "CLIENT_ID"
            ]
          },
        },
    }
    
  4. 运行以下命令以更新 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://iap.googleapis.com/v1/projects/PROJECT_ID/iap_web/compute/services/BACKEND_SERVICE_NAME:iapSettings"
    

    区域范围

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -d "@settings.json" \
    "https://iap.googleapis.com/v1/projects/PROJECT_ID/iap_web/compute-REGION_NAME/services/BACKEND_SERVICE_NAME:iapSettings"
    
  5. 运行以下命令,准备 settings.json 文件。

    cat << EOF > settings.json
    {
    "iap":
          {
            "enabled":true,
            "oauth2ClientId": " ",
            "oauth2ClientSecret": " "
          }
    }
    EOF
    
  6. 运行以下命令以迁移 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/global/backendServices/BACKEND_SERVICE_NAME"
    

    区域范围

    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/regions/REGION_NAME/backendServices/BACKEND_SERVICE_NAME"
    
  7. 如需确认未设置 OAuth 客户端 ID,请运行以下全局或区域范围命令。运行该命令后,请检查输出,确保 OAuth 客户端 ID 字段为空。

    全球范围

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE_NAME"
    

    区域范围

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/backendServices/BACKEND_SERVICE_NAME"
    

Terraform

如果您要将现有的 IAP 资源迁移到使用 Google 管理的 OAuth 客户端,则必须明确取消设置 oauth2_client_id 和 oauth2_client_secret 字段。如需取消设置字段,请将值更新为单个空格字符,如以下示例所示:

resource "google_compute_backend_service" "default" {
  name                  = "tf-test-backend-service-external"
  protocol              = "HTTP"
  load_balancing_scheme = "EXTERNAL"
  iap {
    oauth2_client_id     = " "
    oauth2_client_secret = " "
  }
}

oauth2_client_id 和 oauth2_client_secret 字段是可选字段,如果您使用的是启用了 IAP 的新资源,则可以忽略这些字段。

如需详细了解如何将 Terraform 与 Google Cloud搭配使用,请参阅 Terraform 文档。

迁移已启用 IAP 的 Cloud Run 资源

完成本部分中的步骤,以迁移已启用 IAP 且已配置 OAuth 2.0 客户端的 Cloud Run 资源。

gcloud

在继续执行这些步骤之前,请确保您使用的是最新版本的 gcloud CLI。如需了解如何安装 gcloud CLI,请参阅安装 gcloud CLI。

  1. 如需进行身份验证,请使用 Google Cloud CLI 并运行以下命令。

    gcloud auth login
    
  2. 点击显示的网址并登录。

  3. 登录后,复制显示的验证码并将其粘贴到命令行中。

  4. 运行以下命令,指定包含您要继续使用 IAP 保护的应用的项目。

    gcloud config set project PROJECT_ID
    
  5. 运行以下命令,提取已配置的 OAuth 2.0 客户端 ID。

    全球范围

    
    gcloud compute backend-services describe BACKEND_SERVICE_NAME \
        --global \
        --format="value(iap.oauth2ClientId)"
    

    区域范围

    
    gcloud compute backend-services describe BACKEND_SERVICE_NAME \
      --region REGION_NAME \
      --format="value(iap.oauth2ClientId)"
    

    如果您想允许程序化访问,请保存上一个命令中的客户端 ID。

  6. 如需将 OAuth 2.0 客户端列入许可清单以进行程序化访问,请对 IAP Settings API 执行读取-更新-写入操作。

    全球范围

    gcloud iap settings get \
        --resource-type=compute \
        --project=PROJECT_ID \
        --service=BACKEND_SERVICE_NAME > settings.yaml
    

    区域范围

    gcloud iap settings get \
        --resource-type=compute \
        --project=PROJECT_ID \
        --service=BACKEND_SERVICE_NAME \
        --region=REGION_NAME > settings.yaml
    
  7. 更新 settings.yaml 文件,并在 programmaticClients 下添加之前提取的 OAuth 2.0 客户端 ID,如示例所示。

    accessSettings:
      oauthSettings:
        programmaticClients:
        - CLIENT_ID
    
  8. 在 Compute Engine 应用上应用新设置。

    全球范围

    gcloud iap settings set settings.yaml \
        --resource-type=compute \
        --project=PROJECT_ID \
        --service=BACKEND_SERVICE_NAME
    

    区域范围

    gcloud iap settings set settings.yaml \
        --resource-type=compute \
        --project=PROJECT_ID \
        --service=BACKEND_SERVICE_NAME \
        --region=REGION_NAME
    
  9. 如需迁移资源,请运行全局范围或区域范围的命令。

    全球范围

    gcloud compute backend-services update BACKEND_SERVICE_NAME \
        --global \
        --iap=enabled,oauth2-client-id=" ",oauth2-client-secret=" "
    

    区域范围

    gcloud compute backend-services update BACKEND_SERVICE_NAME \
        --region REGION_NAME \
        --iap=enabled,oauth2-client-id=" ",oauth2-client-secret=" "
    
  10. 如需确认未设置 OAuth 客户端 ID,请运行以下全局或区域范围命令。运行该命令后,请检查输出,确保 OAuth 客户端 ID 字段为空。

    全球范围

    gcloud compute backend-services describe BACKEND_SERVICE_NAME \
        --global
    

    区域范围

    gcloud compute backend-services describe BACKEND_SERVICE_NAME \
        --region REGION_NAME
    

API

  1. 运行以下命令,提取已配置的 OAuth 2.0 客户端 ID。

    全球范围

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE_NAME?fields=iap.oauth2ClientId"
    

    区域范围

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/backendServices/BACKEND_SERVICE_NAME?fields=iap.oauth2ClientId"
    
  2. 运行以下命令,将现有 IAP 设置提取到 settings.json 文件中。

    全球范围

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://iap.googleapis.com/v1/projects/PROJECT_ID/iap_web/compute/services/BACKEND_SERVICE_NAME:iapSettings" > settings.json
    

    区域范围

    curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://iap.googleapis.com/v1/projects/PROJECT_ID/iap_web/compute-REGION_NAME/services/BACKEND_SERVICE_NAME:iapSettings" > settings.json
    
  3. 更新 settings.json 文件,将之前保存的 CLIENT_ID 添加为程序化客户端。

    {
        "accessSettings": {
          "oauthSettings": {
            "programmaticClients": [
              "CLIENT_ID"
            ]
          },
        },
    }
    
  4. 运行以下命令以更新 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://iap.googleapis.com/v1/projects/PROJECT_ID/iap_web/compute/services/BACKEND_SERVICE_NAME:iapSettings"
    

    区域范围

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Accept: application/json" \
    -H "Content-Type: application/json" \
    -d "@settings.json" \
    "https://iap.googleapis.com/v1/projects/PROJECT_ID/iap_web/compute-REGION_NAME/services/BACKEND_SERVICE_NAME:iapSettings"
    
  5. 运行以下命令,准备 settings.json 文件。

    cat << EOF > settings.json
    {
    "iap":
          {
            "enabled":true,
            "oauth2ClientId": " ",
            "oauth2ClientSecret": " "
          }
    }
    EOF
    
  6. 运行以下命令以迁移资源。

    全球范围

    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/global/backendServices/BACKEND_SERVICE_NAME"
    

    区域范围

    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/regions/REGION_NAME/backendServices/BACKEND_SERVICE_NAME"
    
  7. 如需确认未设置 OAuth 客户端 ID,请运行以下全局或区域范围命令。 运行该命令后,检查输出以确保 OAuth 客户端 ID 字段为空。

    全球范围

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE_NAME"
    

    区域范围

    curl -X PATCH \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION_NAME/backendServices/BACKEND_SERVICE_NAME"
    

迁移启用了 IAP 的 Google Kubernetes Engine 资源

将以下 IAP 块添加到 BackendConfig 自定义资源定义 (CRD)。这会使用 Google 管理的 OAuth 2.0 客户端启用 IAP。

apiVersion: cloud.google.com/v1
kind: BackendConfig
metadata:
  name: config-default
  namespace: my-namespace
spec:
  iap:
    enabled: true

使用服务账号 JWT 向 IAP 进行身份验证

您可以使用服务账号 JWT 向 IAP 进行身份验证,而无需使用已弃用的 OAuth Admin API。

获取 OAuth 客户端密钥

在 Google Cloud 控制台中创建自定义 OAuth 客户端时,客户端密钥仅在创建时显示。您有责任安全地存储此密钥。Secret Manager 是推荐用于安全存储 OAuth 客户端密钥的服务。

如果您使用 Secret Manager 存储 OAuth 客户端密钥,请参阅访问 Secret 版本,了解如何获取客户端密钥。

验证您是否在使用 IAP OAuth Admin API

如需检查您的项目是否使用了 IAP OAuth Admin API,请参阅检查 OAuth Admin API 的使用情况。

使用 OAuth Admin API 的替代方案

如果您需要在不使用 OAuth API 的情况下获取 OAuth 客户端凭证,可以使用以下方法:

  • Google Cloud 控制台:您可以通过凭证页面手动获取 OAuth 凭证。

  • Secret Manager:您可以使用 Secret Manager 存储和检索 Secret。如需了解如何将 Secret Manager 与 Terraform 搭配使用,请参阅 google_secret_manager_secret。

  • 服务账号 JWT:使用服务账号 JSON Web 令牌 (JWT) 进行身份验证。使用服务账号 JWT 时,您无需使用 OAuth 客户端。