我正在尝试在新的 GCP 项目中使用 Terraform 创建资源。作为其中的一部分,我想设置roles/storage.legacyBucketWriter
为 Google 托管服务帐户,该project-[project-number]@storage-transfer-service.iam.gserviceaccount.com
帐户为特定存储桶运行存储传输服务作业(模式为 )。我正在使用以下配置:
resource "google_storage_bucket_iam_binding" "publisher_bucket_binding" {
bucket = "${google_storage_bucket.bucket.name}"
members = ["serviceAccount:project-${var.project_number}@storage-transfer-service.iam.gserviceaccount.com"]
role = "roles/storage.legacyBucketWriter"
}
Run Code Online (Sandbox Code Playgroud)
澄清一下,我想这样做,以便当我使用 JSON API 创建一次性传输作业时,它不会通过先决条件检查。
当我运行 Terraform apply 时,我得到以下信息:
Error applying IAM policy for Storage Bucket "bucket":
Error setting IAM policy for Storage Bucket "bucket": googleapi:
Error 400: Invalid argument, invalid
Run Code Online (Sandbox Code Playgroud)
我认为这是因为有问题的服务帐户尚不存在,因为我也无法通过控制台执行此操作。
是否需要启用任何其他服务才能创建服务帐户?
google-cloud-storage google-cloud-platform terraform terraform-provider-gcp
如何使用 Python 访问受 IAP 保护的资源?更具体地说,我想Bearer
在Authorization
标头中生成调用 IAP 保护资源所需的令牌。
我创建了一个服务帐户,授予它“IAP 保护的 Webapp 用户”权限并将其 JSON 凭据下载到磁盘。
我正在尝试为托管在Google云中的应用程序设置云IAP。
通过Web登录该应用程序效果很好,您将重定向到Google身份验证页面,并重定向回网站,并将会话令牌设置为cookie。
通过非Web界面进行身份验证,请遵循编程身份验证指南,尝试在那里描述的命令行方式以及使用iOS SDK。在这两种情况下,登录都可以正常工作,并且我从登录过程中收到一个id_token。但是当我发出如下请求时:
curl --verbose --header 'Authorization: Bearer ID_TOKEN' https://an-app.appspot.com/api/user
Run Code Online (Sandbox Code Playgroud)
我总是收到以下回复:
There was a problem with your request. Error code 13
Run Code Online (Sandbox Code Playgroud)
不管请求中的ID_TOKEN是什么,响应始终是错误代码13。如果我未指定Authorization标头,则会将我重定向到Google的登录页面。
我缺少任何设置或配置吗?
我希望能够使用开发环境上的用户默认凭据以编程方式为Iap生成一个ID令牌(即,我自己的装有Google Cloud SDK并登录的笔记本电脑)。
遵循文档时,我设法使用服务帐户文件生成了授权令牌。
在google.auth.default
个人计算机上使用时,我可以看到type的凭据google.oauth2.credentials.Credentials
带有refresh_token
。我想用它,因为它是在做卷曲生成令牌文档下
Authenticating from a desktop app -> Accessing the application
,但我不能使它工作。有人知道是否可以通过这种方式进行身份验证吗?