透過 IAM (第 1 代) 授權存取
您可以使用 Identity and Access Management (IAM),授權身分對函式執行管理動作,例如建立、更新及刪除函式。 將主體 (要啟用的身分,通常是使用者或服務帳戶的電子郵件地址) 新增至函式,然後授予適當的 IAM 角色,這些角色包含權限,可定義允許執行的動作。
啟用對函式的存取權
您可以透過 IAM 授予或限制個別身分的角色,控管對函式採取的動作。
新增主體並授予角色
控制台
前往 Google Cloud 控制台:
勾選所需函式旁邊的核取方塊。
按一下畫面頂端的「Permissions」(權限)。「Permissions」(權限) 面板便會開啟。
按一下「Add principal」(新增主體)。
在「New principals」(新主體) 欄位中,輸入需要存取函式的一或多個身分 (通常是使用者或服務帳戶的電子郵件地址)。
從「Select a role」(選取角色) 下拉式選單中選取一或多個角色。 面板中會顯示選取的角色,並針對這些角色授予的權限提供簡短說明。
按一下「Save」(儲存)。
gcloud
使用 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 的可接受值清單,請參閱 Cloud Run functions IAM 角色參考資料頁面。
移除主體特定角色的權限
控制台
前往 Google Cloud 控制台:
勾選所需函式旁邊的核取方塊。
按一下畫面頂端的「Permissions」(權限)。「Permissions」(權限) 面板便會開啟。
搜尋要移除權限的主體。查看主體獲得的每個角色。
找到要刪除角色權限的主體,然後按一下旁邊的垃圾桶圖示。如要完全移除主體的存取權,請針對主體獲派的每個角色執行這項操作。
gcloud
使用 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 的可能值清單,請參閱 Cloud Run functions IAM 角色參考資料頁面。
如果主體已獲派多個角色,請務必指定要移除的角色。
大量新增主體
控制台
前往 Google Cloud 控制台:
找出要允許或限制存取的函式,然後勾選旁邊的核取方塊。
按一下畫面頂端的「Permissions」(權限)。「Permissions」(權限) 面板便會開啟。
如要新增主體,請按照下列步驟操作:
按一下「Add principal」(新增主體)。
在「New principals」(新主體) 欄位中,輸入多個需要函式存取權的身分。
從「Select a role」(選取角色) 下拉式選單中選取一或多個角色。 面板中會顯示選取的角色,並針對這些角色授予的權限提供簡短說明。
按一下「Save」(儲存)。
gcloud
建立 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 的可接受值清單,請參閱 Cloud Run functions IAM 角色參考資料頁面。
查看主體
控制台
前往 Google Cloud 控制台:
按一下所需函式的名稱。
選取「Permissions」(權限) 分頁。「Permissions」(權限) 面板便會開啟。
選取「View by principals」(按照主體查看) 分頁,查看所有具有所選函式權限的主體清單。
gcloud
使用 gcloud functions get-iam-policy 指令:
gcloud functions get-iam-policy FUNCTION_NAME
允許未經驗證叫用 HTTP 函式
自 2020 年 1 月 15 日起,如果 HTTP 函式未啟用允許未經驗證的叫用,則只有具有適當權限的使用者和服務帳戶才能存取。
如要允許未經驗證叫用,必須在部署期間或之後指定這項設定。
您可以根據先前所述的做法,用特別的方式授予未經驗證的使用者叫用 HTTP 函式的權限。
部署期間
控制台
在「Trigger」(觸發條件) 面板的「Authentication」(驗證) 部分中,選取「Allow unauthenticated invocations」(允許未經驗證的叫用)。
gcloud
gcloud functions deploy 指令會提供提示,協助您在建立函式時設定叫用權限。指令中也可以加上 --allow-unauthenticated 旗標:
gcloud functions deploy FUNCTION_NAME \ --no-gen2 \ --trigger-http \ --allow-unauthenticated \ ...
即使未使用這個旗標,後續部署相同函式也不會變更狀態。
部署之後
如要允許未經驗證叫用函式,請在函式中將特殊 allUsers 主體授予 Cloud Functions 叫用者角色:
控制台
前往 Google Cloud 控制台:
勾選目標函式旁邊的核取方塊 (請勿點選函式本身)。
按一下畫面頂端的「Permissions」(權限)。「Permissions」(權限) 面板便會開啟。
按一下「Add principal」(新增主體)。
在「New principals」(新主體) 欄位中輸入
allUsers。從「Select a role」(選取角色) 下拉式選單中,選取「Cloud Functions > Cloud Functions Invoker」(Cloud Functions > Cloud Functions 叫用者) 角色。
在對話方塊中,按一下「Allow public access」(允許公開存取)。
gcloud
使用 gcloud functions add-iam-policy-binding 指令,在函式中將 roles/cloudfunctions.invoker 角色授予特殊 allUsers 主體:
gcloud functions add-iam-policy-binding FUNCTION_NAME \ --member="allUsers" \ --role="roles/cloudfunctions.invoker"
如要進一步瞭解這些欄位,請參閱 gcloud functions add-iam-policy-binding 參考資料。
網域限定共用
如果在受「網域限定共用」組織政策限制的專案中開發函式,將無法允許未經驗證叫用函式。為了降低資料竊取風險,這項政策會限制公開分享資料。
如要部署允許未經驗證叫用的函式,建議移除專案的「網域限定共用」組織政策 (可在組織、資料夾或專案層級設定)。
建立允許未經驗證叫用的函式後,即可重新啟用組織政策:
- 如果函式是在重新啟用組織政策前部署,仍會允許未經驗證叫用。
- 可以部署這些現有函式的新版本,而且無需驗證即可叫用。
- 無法部署允許未經驗證叫用的新函式。
控管對專案中所有函式的存取權
如要授予專案中所有函式的角色,可以在專案中授予這些角色。