gpt4 book ai didi

google-app-engine - Google Cloud Platform 和 Terraform 通过身份感知代理 IAP 保护 App Engine

转载 作者:行者123 更新时间:2023-12-02 02:15:27 25 4
gpt4 key购买 nike

大约三天时间里,我疯狂地尝试通过 Terraform 保护我的 App Engine 的安全。当我通过 GCP 控制台手动保护我的应用程序时,我的步骤是:

  • 创建 App Engine
  • 激活 IAP 并创建 OAuth 同意屏幕
  • 激活对网络应用程序 (=> App Engine) 的保护

手动即可。

使用 terraform,我已成功创建了所有变量、提供程序并激活了所需的所有 API,但我保护应用程序的方法似乎有问题,但我不知道是什么问题。下面是我的代码片段:

  1. 创建 App Engine(有效)
resource "google_app_engine_application" "app-init" {
project = var.project_id
location_id = var.project_location
database_type = "CLOUD_FIRESTORE"
}
  1. 激活 IAP 并创建 OAuth 同意屏幕(不起作用)
resource "google_iap_brand" "project_brand" {
support_email = "my-owner-service-account-email@..."
application_title = "Cloud IAP protected Application"
project = "my-project-id"
}

执行此操作时出现此错误:

创建品牌时出错:googleapi:错误 409:请求的实体已存在

我的代码或方法有什么问题?

提前非常感谢大家!

最佳答案

每个项目只能启动一次 App Engine,同样的情况也适用于 IAP 品牌。因此,这意味着您已经在项目中配置了这些配置,并且无法再次重新创建它们。请参阅Terraform doc :

Brands can only be created once for a Google Cloud project and the underlying Google API doesn't not support DELETE or PATCH methods. Destroying a Terraform-managed Brand will remove it from state but will not delete it from Google Cloud.

以下是有关如何创建 App Engine 应用程序并在 Terraform 中启用 IAP 的正确代码段:

resource "google_app_engine_application" "app-init" {
project = var.project_id
location_id = var.project_location
database_type = "CLOUD_FIRESTORE"
iap {
enabled = true
oauth2_client_id = "your_client_id"
oauth2_client_secret = "your_client_secret"
}
}

Terraform Google provider is just another client that calls Google Cloud APIs. google_app_engine_application is equivalent to apps.create.

记下凭据oauth2_client_idoauth2_client_secret。即使您创建了新项目,只有在设置 OAuth 同意屏幕后才能找到这些凭据。 Terraform 中需要这些设置,因此在创建和管理 App Engine 应用程序时,如果没有 OAuth2 凭据,您将无法启用 IAP。

此外,apps.patch API 支持 iap 字段更新,但在 Terraform 中不可用,因此如果您的项目上已有 App Engine 应用程序,则启用/禁用 IAP 的唯一方法是通过 GCP 控制台、客户端库或直接访问 API。

关于google-app-engine - Google Cloud Platform 和 Terraform 通过身份感知代理 IAP 保护 App Engine,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67236506/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com