存取權控管

您可以在 GCP 專案層級,使用角色來設定存取權控管。將角色指派給 GCP 專案成員或服務帳戶,即可決定二者對於 Google Cloud Platform 專案及專案資源的存取權層級。

處理需求較單純的小型專案時,您可以使用原始角色。如要執行更精細的存取權控管,請使用含有 App Engine 預先定義角色的身分與存取權管理 (IAM) 角色。如要進一步瞭解身分與存取權管理,請參閱身分與存取權管理說明文件

如要瞭解指派角色的方式,請參閱授予專案存取權

如需深入瞭解授予預先定義身分與存取權管理角色的權限,包括方法呼叫層級的詳細資訊,請參閱 Admin API 文件中的角色

原始角色

在 App Engine 應用程式中,GCP 專案成員的角色也能控制可使用指令列工具執行的動作,其中指令列工具的用途為部署及管理應用程式。

角色 GCP Console 權限 工具權限
Owner 建立 App Engine 應用程式的必要角色。具備所有檢視者和編輯者的權限,並能夠查看部署的原始碼、邀請使用者、變更使用者角色,以及刪除應用程式。 建立 App Engine 應用程式的必要角色。部署應用程式程式碼及更新所有設定。
Editor 查看應用程式資訊及編輯應用程式設定。 部署應用程式程式碼、更新索引/佇列/Cron。
Viewer 查看應用程式資訊。 要求記錄。

預先定義的 App Engine 角色

App Engine 的預先定義角色可提供更精細的存取權控制選項。下表列出每個角色及角色目標使用者。使用比較資料表來查看所有角色的權限。

角色 權限 目標使用者
App Engine 管理員 所有應用程式配置和設定的讀取/寫入/修改權限。
  • 應用程式擁有者/管理員
  • 待命工程師
  • 系統管理員
App Engine 服務管理員
  • 所有應用程式配置和設定的唯讀權限。
  • 服務層級和版本層級設定的寫入權限,包括流量配置。
  • 無法部署應用程式的版本,詳情請參閱下方的授權區隔
  • 發布工程師
  • 開發營運人員
  • 待命工程師
  • 系統管理員
App Engine 部署者
  • 所有應用程式配置和設定的唯讀權限。
  • 僅能部署及建立新版本的寫入權限。
  • 刪除不再提供流量的舊版本。
  • 無法修改現有版本,也不能變更流量設定。

如要進一步瞭解必要角色,請參閱下方的部署說明。

  • 部署帳戶人員
  • 發布工程師
App Engine 檢視者 所有應用程式配置和設定的唯讀權限。
  • 需要查看應用程式設定,但不需修改應用程式的使用者
  • 檢查 App Engine 設定是否符合政策規定的稽核工作者
App Engine 程式碼檢視者 所有應用程式配置、設定和已部署原始碼的唯讀權限。
  • 需要查看應用程式及應用程式原始碼,但不需修改應用程式的使用者
  • 需要診斷實際工作環境問題的開發營運使用者

預先定義的角色比較表

下列表格針對每個預先定義的 App Engine 角色列出完整的權限比較。

權限 App Engine 管理員 App Engine 服務管理員 App Engine 部署者 App Engine 檢視者 App Engine 程式碼檢視者
列出所有服務、版本和執行個體
查看所有應用程式、服務、版本和執行個體的設定
查看資源使用量、負載資訊和錯誤資訊等執行階段指標
查看應用程式原始碼
部署新版應用程式
拆分或遷移流量
啟用或停止版本
刪除版本
刪除整個服務
在彈性環境中使用 SSH 連線到 VM 執行個體
關閉執行個體
停用及重新啟用 App Engine 應用程式
存取含有 login:admin 限制的處理常式
更新分派規則
更新 DoS 設定
更新 Cron 排程
更新預設的 Cookie 到期時間
更新參照網址
更新 Email API 已授權的寄件者

如要進一步瞭解每個角色授予的特定身分與存取權管理權限,請參閱 Admin API 的角色一節。

使用預先定義角色進行部署作業

如果使用者帳戶僅負責部署應用程式的新版本,建議指派「App Engine 部署者」角色給該帳戶。您也可以選擇使用「App Engine 管理員」,該角色具有其他的管理權限,包括部署版本的權限。

無論指派哪一個角色,使用者帳戶皆具備適當權限,可以使用 Admin API 部署應用程式。如要授予使用 gcloud 指令或其他 App Engine 工具的權限,您還須將「Storage 管理員」角色和「Cloud Build 編輯者」角色指派給使用者帳戶。

如要進一步瞭解如何授予必要權限,請參閱使用身分與存取權管理角色部署一文。

部署和流量轉送的授權區隔

許多機構都偏好區隔部署應用程式版本與增加流量至新建版本的工作,並將工作交由不同職務的人來完成。「App Engine 部署者」和「App Engine 服務管理員」角色可提供這類區隔:

  • 「App Engine 部署者」角色:使用者帳戶只能部署新版本及刪除不再提供流量的舊版本。具有「App Engine 部署者」角色的使用者帳戶無法設定傳送到任何版本的流量,也不能變更應用程式層級設定,例如分派規則或驗證網域。

  • 「App Engine 服務管理員」角色:使用者帳戶無法部署應用程式的新版本,也不能變更應用程式層級設定。但這些帳戶的權限可以變更現有服務和版本的屬性,包括變更可以提供流量的版本。「App Engine 服務管理員」角色非常適合營運/IT 部門,因為這些部門負責處理增加至新部署版本的流量。

預先定義角色「並未」授予的權限

以上列出的預先定義角色均未授予以下作業的權限:

  • 建立 App Engine 應用程式。
  • 查看及下載應用程式記錄。
  • 在 GCP Console 中查看監控圖表。
  • 啟用及停用計費功能。
  • 設定 App Engine 的每日花費上限 (舊稱「預算」) 及查看花費金額。
  • 在 Cloud Security Scanner 中執行安全掃描。
  • 存取儲存在 Datastore、Task Queues、Memcache、Cloud Search 或任何其他 Cloud Platform 儲存空間產品的設定或資料。

App Engine 服務帳戶

當您建立 App Engine 應用程式後,系統隨即產生「App Engine 預設服務帳戶」,做為 App Engine 服務的身分。App Engine 預設服務帳戶與您的 GCP 專案相關聯,並且會代表在 App Engine 中運作的應用程式來執行工作。

根據預設,App Engine 預設服務帳戶具備專案中的「編輯者」角色。這表示任何有權限將變更部署至 GCP 專案的使用者帳戶,也能夠執行對於該專案所有資源具有讀取/寫入權限的程式碼。

彈性環境的服務帳戶

在 App Engine 彈性環境中,還有一個由 Google 代管的服務帳戶,此帳戶可代表您的應用程式,執行彈性環境中的特定工作。有關這個服務帳戶的詳細說明,請參閱 App Engine 彈性環境的服務帳戶

變更服務帳戶權限

您可以在 GCP Console 中變更服務帳戶的權限。例如,您可以變更 App Engine 預設服務帳戶的角色,從「編輯者」改為最符合 App Engine 應用程式存取需求的任何角色,藉此將帳戶使用的權限降級。

如要變更服務帳戶的權限:

  1. 開啟 GCP 主控台:

    前往「Permissions」(權限) 頁面

  2. 在「Members」(成員) 清單中,找出 App Engine 預設服務帳戶的 ID。

    App Engine 預設服務帳戶使用的成員 ID 如下:
    YOUR_PROJECT_ID@appspot.gserviceaccount.com

  3. 接著您可以使用下拉式選單,修改指派給服務帳戶的角色。

使用服務帳戶

  • 如要重新命名服務帳戶或建立服務帳戶的金鑰,包括 App Engine 應用程式預設服務帳戶,請使用 GCP 主控台中的「Service Accounts」(服務帳戶) 頁面來查看及編輯服務帳戶:

    前往「Service Accounts」(服務帳戶) 頁面

  • 如要使用服務帳戶執行 Cloud SDK 指令,包括任何 Cloud SDK 開發工具,您必須先在 Google Cloud Platform 專案中啟用 Google App Engine Admin API。在 GCP 主控台中使用 API 程式庫來管理 GCP 專案中的所有 API 和服務:

    前往「API Library」(API 程式庫) 頁面

還原已刪除的預設服務帳戶

如果刪除 App Engine 預設服務帳戶,App Engine 應用程式可能會停止運作,並喪失 Cloud Datastore 等 GCP 服務的存取權。

您可以使用 gcloud beta app repair 指令來復原已刪除的 App Engine 預設服務帳戶:

# Set your gcloud project
gcloud config set project <project-id>

# Restore your default service account
gcloud beta app repair
本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
Python 適用的 App Engine 彈性環境文件