使用 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
的可接受值清單,請參閱 身分與存取權管理角色參考頁面。
從主體中移除角色
使用 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 角色參考頁面。
如果主體已獲得多個角色,請務必指定要移除的角色。
大量新增主體
建立名為 policy.json
的 IAM 政策:
{ "bindings": [ { "role": ROLE, "members": [ PRINCIPAL_ID ] } ] }
使用 gcloud functions set-iam-policy
指令:
gcloud functions set-iam-policy FUNCTION_NAME policy.json
如需 PRINCIPAL_ID
可接受的來源清單,請參閱「主要 ID」。如需 ROLE
的可接受值清單,請參閱 身分與存取權管理角色參考頁面。
查看主體
如要查看管理者,請使用 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
參考資料。