使用 IAM (第 1 代) 授權存取權
您可以使用身分與存取權管理 (IAM) 授權身分,讓其執行管理操作,例如建立、更新及刪除函式。您可以將主體 (您要啟用的身分,通常是使用者或服務帳戶電子郵件) 新增至函式,然後授予這些主體適當的 IAM 角色。這些角色包含權限,可定義允許執行的動作。
啟用函式存取權
您可以透過 IAM 為個別身分授予或限制角色,控管函式上的動作。
新增主體及授予角色
控制台
前往 Google Cloud 控制台:
找出感興趣的函式,然後勾選旁邊的核取方塊。
按一下畫面頂端的「權限」,「Permissions」面板會隨即開啟。
按一下「新增主體」。
在「New principals」(新增主體) 欄位中,輸入需要存取函式功能的一或多個身分。這通常是使用者或服務帳戶的電子郵件地址。
從「Select a role」(請選取角色) 下拉式選單中選取一或多個角色。您選取的角色會顯示在面板中,系統還會針對這些角色所授予的權限提供簡短說明。
按一下 [儲存]。
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 函式 IAM 角色參考資料頁面。
從主體中移除角色
控制台
前往 Google Cloud 控制台:
找出感興趣的函式,然後勾選旁邊的核取方塊。
按一下畫面頂端的「權限」,「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 函式 IAM 角色參考資料頁面。
如果主體已獲得多個角色,請務必指定要移除的角色。
大量新增主體
控制台
前往 Google Cloud 控制台:
找出要授予或限制存取權的函式,然後勾選旁邊的核取方塊。
按一下畫面頂端的「權限」,「Permissions」面板會隨即開啟。
如要新增主體,請按照下列步驟操作:
按一下「新增主體」。
在「New principals」(新增主體) 欄位中,輸入多個需要函式存取權的身分。
從「Select a role」(請選取角色) 下拉式選單中選取一或多個角色。您選取的角色會顯示在面板中,系統還會針對這些角色所授予的權限提供簡短說明。
按一下 [儲存]。
gcloud
建立名為 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
的可接受值清單,請參閱 Cloud Run 函式 IAM 角色參考資料頁面。
查看主體
控制台
前往 Google Cloud 控制台:
按一下您感興趣的函式名稱。
選取「權限」分頁標籤。「Permissions」面板會隨即開啟。
選取「View by principals」分頁標籤,即可查看所有主體的清單,這些主體在所選函式上具有權限。
gcloud
使用 gcloud functions get-iam-policy
指令:
gcloud functions get-iam-policy FUNCTION_NAME
允許未經驗證的 HTTP 函式叫用
自 2020 年 1 月 15 日起,未啟用「允許未經驗證的叫用」的 HTTP 函式,將限制存取未具備適當權限的使用者和服務帳戶。
如要允許未經驗證的叫用作業,您必須在部署時或部署後指定這項設定。
您可以使用前述方法的特殊變化版本,授予未經驗證的叫用端叫用 HTTP 函式的權限。
部署時
控制台
在「觸發」面板的「驗證」部分中,選取「允許未經驗證的叫用」。
gcloud
gcloud functions deploy
指令會提供提示,協助您在建立函式時設定叫用權限。也可以包含 --allow-unauthenticated
標記:
gcloud functions deploy FUNCTION_NAME \ --no-gen2 \ --trigger-http \ --allow-unauthenticated \ ...
即使您未使用這個標記,後續相同函式的部署作業也不會變更其狀態。
部署後
如要允許未經驗證的函式叫用,請將 Cloud Functions 叫用者角色授予函式上的特殊 allUsers
主體:
控制台
前往 Google Cloud 控制台:
按一下接收函式旁的核取方塊。(請勿點選函式本身)。
按一下畫面頂端的「權限」,「Permissions」面板會隨即開啟。
按一下「新增主體」。
在「New principals」欄位中輸入
allUsers
。從「請選擇角色」下拉式選單中,依序選取「Cloud Functions」>「Cloud Functions Invoker」角色。
在對話方塊中,按一下「允許公開存取」。
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
參考資料。
網域限定共用
如果您在須遵守「網域限定共用」組織政策的專案中開發函式,就無法允許未經驗證的函式叫用要求。這項政策會限制公開資料分享,以降低資料竊取的風險。
如果您想部署允許未經認證的叫用作業的函式,建議您移除專案上的「網域限定共用」組織政策。您可以在機構、資料夾或專案層級設定機構政策。
建立允許未經驗證叫用作業的函式後,即可重新啟用機構政策:
- 在重新啟用機構政策前部署的函式,將繼續允許未經驗證的叫用。
- 這些現有函式的新版本可以部署,而不需要經過驗證的叫用。
- 無法部署允許未經驗證叫用要求的新函式。
控管專案中所有函式的存取權
如果您想為專案中的所有函式授予角色,可以在專案中授予這些角色。