透過 IAM (第 1 代) 授權存取

您可以使用 Identity and Access Management (IAM),授權身分對函式執行管理動作,例如建立、更新及刪除函式。 將主體 (要啟用的身分,通常是使用者或服務帳戶的電子郵件地址) 新增至函式,然後授予適當的 IAM 角色,這些角色包含權限,可定義允許執行的動作。

啟用對函式的存取權

您可以透過 IAM 授予或限制個別身分的角色,控管對函式採取的動作。

新增主體並授予角色

控制台

  1. 前往 Google Cloud 控制台:

    前往 Google Cloud 控制台

  2. 勾選所需函式旁邊的核取方塊。

  3. 按一下畫面頂端的「Permissions」(權限)。「Permissions」(權限) 面板便會開啟。

  4. 按一下「Add principal」(新增主體)

  5. 在「New principals」(新主體) 欄位中,輸入需要存取函式的一或多個身分 (通常是使用者或服務帳戶的電子郵件地址)。

  6. 從「Select a role」(選取角色) 下拉式選單中選取一或多個角色。 面板中會顯示選取的角色,並針對這些角色授予的權限提供簡短說明。

  7. 按一下「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 角色參考資料頁面

移除主體特定角色的權限

控制台

  1. 前往 Google Cloud 控制台:

    前往 Google Cloud 控制台

  2. 勾選所需函式旁邊的核取方塊。

  3. 按一下畫面頂端的「Permissions」(權限)。「Permissions」(權限) 面板便會開啟。

  4. 搜尋要移除權限的主體。查看主體獲得的每個角色。

  5. 找到要刪除角色權限的主體,然後按一下旁邊的垃圾桶圖示。如要完全移除主體的存取權,請針對主體獲派的每個角色執行這項操作。

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 角色參考資料頁面

如果主體已獲派多個角色,請務必指定要移除的角色。

大量新增主體

控制台

  1. 前往 Google Cloud 控制台:

    前往 Google Cloud 控制台

  2. 找出要允許或限制存取的函式,然後勾選旁邊的核取方塊。

  3. 按一下畫面頂端的「Permissions」(權限)。「Permissions」(權限) 面板便會開啟。

如要新增主體,請按照下列步驟操作:

  1. 按一下「Add principal」(新增主體)

  2. 在「New principals」(新主體) 欄位中,輸入多個需要函式存取權的身分。

  3. 從「Select a role」(選取角色) 下拉式選單中選取一或多個角色。 面板中會顯示選取的角色,並針對這些角色授予的權限提供簡短說明。

  4. 按一下「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 角色參考資料頁面

查看主體

控制台

  1. 前往 Google Cloud 控制台:

    前往 Google Cloud 控制台

  2. 按一下所需函式的名稱。

  3. 選取「Permissions」(權限) 分頁。「Permissions」(權限) 面板便會開啟。

  4. 選取「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 叫用者角色:

控制台

  1. 前往 Google Cloud 控制台:

    前往 Google Cloud 控制台

  2. 勾選目標函式旁邊的核取方塊 (請勿點選函式本身)。

  3. 按一下畫面頂端的「Permissions」(權限)。「Permissions」(權限) 面板便會開啟。

  4. 按一下「Add principal」(新增主體)

  5. 在「New principals」(新主體) 欄位中輸入 allUsers

  6. 從「Select a role」(選取角色) 下拉式選單中,選取「Cloud Functions > Cloud Functions Invoker」(Cloud Functions > Cloud Functions 叫用者) 角色。

  7. 在對話方塊中,按一下「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 參考資料

網域限定共用

如果在受「網域限定共用」組織政策限制的專案中開發函式,將無法允許未經驗證叫用函式。為了降低資料竊取風險,這項政策會限制公開分享資料

如要部署允許未經驗證叫用的函式,建議移除專案的「網域限定共用」組織政策 (可在組織、資料夾或專案層級設定)。

建立允許未經驗證叫用的函式後,即可重新啟用組織政策:

  • 如果函式是在重新啟用組織政策前部署,仍會允許未經驗證叫用。
  • 可以部署這些現有函式的新版本,而且無需驗證即可叫用。
  • 無法部署允許未經驗證叫用的新函式。

控管對專案中所有函式的存取權

如要授予專案中所有函式的角色,可以在專案中授予這些角色