使用 IAM 授權存取
您可以使用 Identity and Access Management (IAM) 授權身分,對使用 Cloud Functions v2 API 建立的函式執行管理動作,例如使用 gcloud functions、REST API 或 Terraform。管理動作包括建立、更新及刪除函式。如要瞭解使用 Cloud Run 建立函式的 IAM 存取權,請參閱「使用 IAM 控管存取」。
在 IAM 中,您會將適當的 IAM 角色授予主體 (您要啟用的身分,通常是使用者或服務帳戶的電子郵件),並套用至該函式或專案。這些角色包含權限,可定義主體可執行的動作。
事前準備
如要取得控管特定函式或專案中所有函式存取權所需的權限,請要求管理員在函式或專案中授予您「Cloud Functions 管理員」(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 是主體的 ID (通常是電子郵件地址),ROLE 則是角色。
如需可提供 PRINCIPAL_ID 的來源清單,請參閱「主體 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 的可接受來源清單,請參閱「主體 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 的可接受來源清單,請參閱「主體 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 參考資料。