保护 Cloud Functions 函数

本页面简要介绍使用 Cloud Functions 函数资源控制互动的方式。

访问权限控制

您可以通过两种方法控制 Cloud Functions 函数的访问权限:

使用身份保护访问权限

如需控制对函数的访问,一种方法是要求发出请求的实体使用凭据进行自我标识。凭据是某种“名称”,由实体知道或有权访问的密文(如密码或硬件加密狗)保护。默认情况下,函数部署为 private,并且需要这样的凭据,尽管可以将函数部署为 public(即不需要凭据)。

此流程的第一步是对凭据进行验证,以确保请求者确实是其所说的人,并提供正确的名称和密钥组合。此步骤称为 (Authentication)。

请求者的身份通过身份验证后,可以评估其访问权限级别(即身份已被授予的权限)。此步骤称为 (Authorization)。

Authentication

Cloud Functions 函数支持两种不同的身份,这些身份也称为“主帐号”

  • 服务帐号:此类特殊帐号充当非个人(例如函数、应用或虚拟机)的身份。它们为您提供了一种对非人员的身份进行身份验证的方法。
  • 用户帐号:这些帐号代表个人 Google 帐号持有人,或 Google 控制的实体(例如 Google 群组)的成员。

对于服务帐号和用户帐号,凭据的名称部分通常是与帐号关联的电子邮件地址。用户帐号的密文通常是密码,对于服务帐号,通常是与帐号一起创建的密钥对的私钥。

但用户密码和服务帐号密钥本身非常强大:它们可以提供对数据和功能的广泛访问,并且在被主动撤消或更改之前一直有效。因此,为了限制凭据泄露时可能造成的潜在损害,在 Google Cloud 中,此核心凭据会被替换为基于该凭据的短期凭据(即令牌),令牌具有有限的生命周期,并且在请求序列中即时创建。令牌随请求一起传递,用于安全验证帐号。

Cloud Functions 函数中使用两种令牌:访问令牌和 ID 令牌。访问令牌通常用于对 API 调用进行身份验证,ID 令牌用于对开发者创建的代码调用进行身份验证,比方说,如果函数调用另一个函数。令牌本身是使用 OAuth 2 框架及其扩展程序 Open Identity Connect 创建的,但顺序复杂且容易出错,强烈建议使用 Cloud 客户端库管理该流程。

授权

发出请求的实体的身份得到确认后,必须评估系统允许请求者执行的操作。此评估基于已经过身份验证的帐号在设置时所获得的权限。Cloud Functions 函数使用 Identity and Access Management (IAM) 来执行此操作。角色(为方便起见而组合在一起的各个权限集)会直接或通过名为政策的配置分配给帐号。角色集中的每项权限通常对应于所请求服务公开的单个 REST API 调用。如需详细了解此过程,请参阅通过 IAM 授予访问权限

基于网络的访问权限控制

您还可以通过指定各个函数的网络设置来限制访问权限。这样,您就可以精确地控制函数的网络入站流量和出站流量。

隔离和沙盒化

函数实例在内部使用 gVisor 沙盒化平台彼此隔离。根据设计,某个函数无法访问其他函数的操作环境。