为云任务授权端点

问题描述 投票:0回答:1

我正在努力将云任务集成到我的应用程序中,并且想为我自己的需要授权的端点创建任务。但是,我不知道该怎么做。

根据我正在使用的 Go Cloud Tasks 库的文档:

type HttpRequest_OidcToken struct {
    // If specified, an
    // [OIDC](https://developers.google.com/identity/protocols/OpenIDConnect)
    // token will be generated and attached as an `Authorization` header in the
    // HTTP request.
    //
    // This type of authorization can be used for many scenarios, including
    // calling Cloud Run, or endpoints where you intend to validate the token
    // yourself.
    OidcToken *OidcToken `protobuf:"bytes,6,opt,name=oidc_token,json=oidcToken,proto3,oneof"`
}

但是,根据我对OIDC的理解,它用于身份验证,而不是授权,因此不是我需要的。

所以,我的问题是,我应该如何保护我的端点?我希望只有任务队列使用的服务帐户才能访问它。验证 ID 令牌并确保电子邮件是我的服务帐户的电子邮件是否足以实现此目的?谢谢!

google-cloud-platform authorization google-cloud-tasks
1个回答
0
投票

验证 ID 令牌并确保电子邮件是我的服务帐户的电子邮件足以实现此目的吗?

这应该足够了,因为这是 GCP 文档中推荐的做法:

“为了在 Cloud Tasks 和需要此类身份验证的 HTTP 目标处理程序之间进行身份验证,Cloud Tasks 会创建一个标头令牌。此令牌基于 Cloud Tasks Enqueuer 服务帐户中的凭据,由其电子邮件地址标识。该服务帐户用于身份验证必须是您的 Cloud Task 队列所在的同一项目的一部分。带有标头令牌的请求通过 HTTPS 从队列发送到处理程序。您可以使用 ID 令牌或访问令牌。ID 令牌通常应用于在 Google Cloud 上运行的任何处理程序,例如,在 Cloud Functions 或 Cloud Run 上。主要的例外是 *.googleapis.com 上托管的 Google API:这些 API 需要访问令牌。您可以指定一个 ID (任务本身中的 OIDC) 令牌或访问 (OAuth) 令牌。”

为了提高安全性,您可以考虑在终端节点中使用IAM条件

另一方面,如果您要提供自己的端点,则可以参考此文档 - 提供您自己的 HTTP 目标任务处理程序

© www.soinside.com 2019 - 2024. All rights reserved.