使用 IAM 授予访问权限
您可以使用 Identity and Access Management 授权身份对使用 Cloud Functions v2 API 创建的函数执行管理操作,例如使用 gcloud functions
、REST API 或 Terraform 执行操作。管理操作包括创建、更新和删除函数。如需了解通过 Cloud Run 创建的函数的 IAM 访问权限,请参阅使用 IAM 进行访问权限控制。
在 IAM 中,您可以为主账号(您要启用的身份,通常是用户或服务账号电子邮件)授予函数或项目的相应 IAM 角色。这些角色拥有的权限可定义允许主账号执行的操作。
准备工作
如需获得控制项目中特定函数或所有函数的访问权限所需的权限,请让管理员向您授予函数或项目的 Cloud Functions Admin (roles/roles/cloudfunctions.admin
) IAM 角色。如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限。
此预定义角色包含 cloudfunctions.functions.setIamPolicy
权限,若要控制项目中特定函数或所有函数的访问权限,则需要该权限。
如需查看角色及其关联权限的完整列表,请参阅 Cloud Functions IAM 角色。
启用对函数的访问
您可以使用 IAM 通过向个别身份授予或限制角色来控制对函数的操作。
添加主账号并授予角色
使用 gcloud functions add-iam-policy-binding
命令:
gcloud functions add-iam-policy-binding FUNCTION_NAME \ --member=PRINCIPAL_ID \ --role=ROLE
其中,FUNCTION_NAME
是函数名称,PRINCIPAL_ID
是主账号的标识符(通常是电子邮件地址),ROLE
是角色。
如需查看可以提供 PRINCIPAL_ID
的来源列表,请参阅主账号标识符。如需查看 ROLE
的可接受值列表,请参阅 IAM 角色参考页面。
从主账号中移除角色
使用 gcloud functions remove-iam-policy-binding
命令:
gcloud functions remove-iam-policy-binding FUNCTION_NAME \ --member=PRINCIPAL_ID \ --role=ROLE
其中,FUNCTION_NAME
是函数名称,PRINCIPAL_ID
是用于标识服务账号的电子邮件地址,前面带有 serviceAccount:
且 ROLE
是角色。
如需查看 PRINCIPAL_ID
的可接受来源列表,请参阅主账号标识符。如需查看 ROLE
的可能值列表,请参阅 IAM 角色参考页面。
如果主账号已被授予多个角色,请务必指定您要移除的角色。
批量添加主账号
创建一项 IAM 政策并为其命名,例如 policy.json
:
{ "bindings": [ { "role": ROLE, "members": [ PRINCIPAL_ID ] } ] }
使用 gcloud functions set-iam-policy
命令:
gcloud functions set-iam-policy FUNCTION_NAME policy.json
如需查看 PRINCIPAL_ID
的可接受来源列表,请参阅主账号标识符。如需查看 ROLE
的可接受值列表,请参阅 IAM 角色参考页面。
查看主账号
如需查看主账号,请使用 gcloud functions get-iam-policy
命令:
gcloud functions get-iam-policy FUNCTION_NAME
允许未经身份验证的 HTTP 函数调用
如需允许未通过身份验证的调用,您必须在部署时或部署后指定。
您可以使用上述方法的特殊变体向未经身份验证的调用者授予调用 HTTP 函数的权限。
如果您在一个需要遵守“网域限定共享”组织政策的项目中开发函数,您将无法允许未经身份验证的函数调用。
部署时
gcloud functions deploy
命令包含一条提示,可帮助您在创建函数期间配置调用权限。该命令还可以包含 --allow-unauthenticated
标志:
gcloud functions deploy FUNCTION_NAME \ --trigger-http \ --allow-unauthenticated \ ...
后续部署同一函数并不会更改其状态,即使您不使用此标志也是如此。
部署后
使用 gcloud run services add-iam-policy-binding
命令向特定函数授予 roles/run.invoker
角色:
gcloud run services add-iam-policy-binding FUNCTION_NAME \ --member="allUsers" \ --role="roles/run.invoker"
如需了解有关这些字段的详情,请参阅 gcloud run add-iam-policy-binding
参考文档。