使用 IAM (第 1 代) 授權存取權

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

啟用函式存取權

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

新增主體及授予角色

控制台

  1. 前往 Google Cloud 控制台:

    前往 Google Cloud 控制台

  2. 找出感興趣的函式,然後勾選旁邊的核取方塊。

  3. 按一下畫面頂端的「權限」,「Permissions」面板會隨即開啟。

  4. 按一下「新增主體」

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

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

  7. 按一下 [儲存]

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

從主體中移除角色

控制台

  1. 前往 Google Cloud 控制台:

    前往 Google Cloud 控制台

  2. 找出感興趣的函式,然後勾選旁邊的核取方塊。

  3. 按一下畫面頂端的「權限」,「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 函式 IAM 角色參考資料頁面

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

大量新增主體

控制台

  1. 前往 Google Cloud 控制台:

    前往 Google Cloud 控制台

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

  3. 按一下畫面頂端的「權限」,「Permissions」面板會隨即開啟。

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

  1. 按一下「新增主體」

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

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

  4. 按一下 [儲存]

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

查看主體

控制台

  1. 前往 Google Cloud 控制台:

    前往 Google Cloud 控制台

  2. 按一下您感興趣的函式名稱。

  3. 選取「權限」分頁標籤。「Permissions」面板會隨即開啟。

  4. 選取「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 主體:

控制台

  1. 前往 Google Cloud 控制台:

    前往 Google Cloud 控制台

  2. 按一下接收函式旁的核取方塊。(請勿點選函式本身)。

  3. 按一下畫面頂端的「權限」,「Permissions」面板會隨即開啟。

  4. 按一下「新增主體」

  5. 在「New principals」欄位中輸入 allUsers

  6. 從「請選擇角色」下拉式選單中,依序選取「Cloud Functions」>「Cloud Functions Invoker」角色。

  7. 在對話方塊中,按一下「允許公開存取」

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 參考資料

網域限定共用

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

如果您想部署允許未經認證的叫用作業的函式,建議您移除專案上的「網域限定共用」組織政策。您可以在機構、資料夾或專案層級設定機構政策。

建立允許未經驗證叫用作業的函式後,即可重新啟用機構政策:

  • 在重新啟用機構政策前部署的函式,將繼續允許未經驗證的叫用。
  • 這些現有函式的新版本可以部署,而不需要經過驗證的叫用。
  • 無法部署允許未經驗證叫用要求的新函式。

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

如果您想為專案中的所有函式授予角色,可以在專案中授予這些角色