存取權控管會決定誰有權存取 Google Cloud 專案中的服務和資源。在 App Engine 中,設定存取權控管有幾種不同的用途:
- 授予團隊成員 Google Cloud 專案存取權,方便他們設定服務及部署應用程式。 
- 授予應用程式存取權,允許存取 Google Cloud 服務,例如 Cloud Storage。所有 Cloud 服務的每次 API 呼叫 (包括來自 App Engine 應用程式的呼叫),都必須經過驗證和授權。 
- 授予使用者存取 Google Cloud 專案中資源的權限。 雖然這種情況並不常見,但有時應用程式可能需要代表使用者要求存取 Cloud 資源。舉例來說,應用程式可能需要存取屬於使用者的資料。 
本頁提供各項用途的存取權控管設定總覽。
如要瞭解 Google Cloud Platform 如何處理存取權控管,請參閱 Identity and Access Management (IAM) 總覽。
授予團隊成員存取權限
如要授予開發人員專案存取權,請建立下列一或多項項目: Google Cloud
- 使用者帳戶:與 Google 帳戶相關聯,代表專案中的特定使用者。 - 使用者帳戶可用於下列工具的驗證: - Google Cloud 控制台
- Google Cloud CLI
- 使用 gcloud CLI 測試及部署 App Engine 應用程式的 IDE 和建構工具
 
- 服務帳戶:代表應用程式或程序,而非使用者。在自動建構、測試和部署程序中使用服務帳戶,特別是當多位開發人員可以執行這些程序時。 - 服務帳戶可用於下列工具的驗證: - gcloud CLI
- 使用 gcloud CLI 工具測試及部署 App Engine 應用程式的 IDE 和建構工具
 
建立使用者帳戶
- 在 Google Cloud 控制台中開啟「IAM」頁面。 
- 按一下 [選取專案],選擇專案,然後按一下 [開啟]。 
- 按一下「新增」。 
- 輸入電子郵件地址。 
- 選取授予 App Engine 功能存取權的角色。 - 如果使用者也需要存取其他 Cloud 服務,請選取可授予其他 Cloud 服務存取權的角色。 
- 按一下 [儲存]。 
使用者現在可以登入 Google Cloud 控制台,以及授權 gcloud CLI。
您也可以透過 gcloud、REST API 或用戶端程式庫建立使用者帳戶。
建立服務帳戶
- 在 Google Cloud 主控台中開啟「Service Accounts」(服務帳戶) 頁面。 
- 選取您的專案並按一下 [Open] (開啟)。 
- 按一下「Create Service Account」(建立服務帳戶)。 
- 輸入服務帳戶名稱。這個名稱應方便使用者辨識。 
- 點選「建立」。 
- 選取授予 App Engine 功能存取權的角色。 - 如果服務帳戶也需要存取其他 Cloud 服務,請選取可授予其他 Cloud 服務存取權的角色。 
- 按一下「繼續」。 
- (選用) 指定可管理服務帳戶的使用者帳戶。 您也可以指定可使用服務帳戶間接存取所有資源的使用者帳戶,這些資源是服務帳戶有權存取的資源。 
- 按一下 [儲存]。 - 系統會顯示現有的服務帳戶清單。 
- 如果需要在Google Cloud以外使用服務帳戶,請按照操作說明建立服務帳戶金鑰。 
後續步驟
- 如果您在自動建構和部署程序中使用服務帳戶,請使用服務帳戶授權 gcloud CLI。
- 如果您使用 IDE 搭配服務帳戶,請按照 IDE 提供的操作說明操作。
- 如果您在存取其他 Google Cloud 服務或執行工作時,需要為 App Engine 應用程式版本使用專屬身分,可以在 App Engine 中指定使用者管理的服務帳戶。
授予應用程式 Cloud 服務存取權
每次呼叫 Cloud 服務時,都必須經過驗證和授權,包括從 App Engine 應用程式呼叫其他 Cloud 服務 (例如 Cloud Storage)。
根據預設,App Engine 應用程式對同一專案中服務的呼叫都會獲得授權。預設流程的運作方式如下:
- 如要發出對 Cloud 服務的呼叫,應用程式會建立用戶端物件,其中包含應用程式與服務互動所需的憑證和其他資料。如果您未在用戶端的建構函式中指定憑證,用戶端會在應用程式環境中尋找憑證。 - 以下是建立 Cloud Storage 用戶端的範例: - Go- Java- Node.js- PHP- Python- Ruby
- 根據預設,應用程式環境會包含預設 App Engine 服務帳戶的憑證。
  建立 App Engine 應用程式時,Google 會建立這個服務帳戶,並授予管理及使用 Google Cloud 專案中所有 Cloud 服務的完整權限。 
如要覆寫這項預設流程,請採取下列任一做法:
- 設定 - GOOGLE_APPLICATION_CREDENTIALS環境變數。如果設定這個變數,Cloud 服務會使用變數指定的憑證,而非預設服務帳戶。
- 為 Cloud 服務執行 - Client物件例項化時,請指定憑證。 舉例來說,如果應用程式呼叫不同專案中的 Cloud 服務,您可能需要手動傳遞憑證。
如果您設定 GOOGLE_APPLICATION_CREDENTIALS 環境變數或在程式碼中傳遞憑證,建議您透過下列其中一種方式儲存憑證:
- 將憑證儲存在安全位置,例如 Datastore 模式的 Firestore (Datastore),並在執行階段擷取憑證。
- 將憑證保留在程式碼中,但使用金鑰儲存空間 (例如 Cloud KMS) 加密。
授予使用者 Cloud 資源存取權
如果想要讓應用程式讀取其他 Google 服務中的使用者資料,您需要設定網路伺服器應用程式適用的 OAuth 2.0。舉例來說,如果您想要從 Google 雲端硬碟提取使用者資料,並將該資料帶入您的應用程式,則可使用網路伺服器應用程式適用的 OAuth 2.0 來共用特定資料,同時保有使用者名稱和密碼等其他資料的私密性。
Google Workspace 全網域授權委派
如果您有 Google Workspace (舊稱 G Suite) 網域,網域管理員可以授權應用程式代表 Google Workspace 網域中的使用者存取使用者資料。舉例來說,透過 Google Calendar API 在 Google Workspace 網域中所有使用者的日曆中加入事件的應用程式,都可以使用服務帳戶來代表這些使用者存取 Google Calendar API。
這種授權服務帳戶代表所有網域使用者存取資料的方式,有時稱為「委派全網域授權」給服務帳戶。這種方法仍然使用 OAuth 2.0,並且需要由 Google Workspace 網域管理員委派全網域授權給服務帳戶。
指定服務帳戶
App Engine 支援兩種服務帳戶:
- 如果未指定使用者管理的服務帳戶,App Engine 預設服務帳戶就是所有 App Engine 應用程式版本的預設身分。 - 視機構政策設定而定,系統可能會自動將專案的編輯者角色授予預設服務帳戶。強烈建議您 強制執行 - iam.automaticIamGrantsForDefaultServiceAccounts機構政策限制,停用自動授予角色功能。如果您是在 2024 年 5 月 3 日後建立機構,系統預設會強制執行這項限制。- 如果停用自動角色授予功能,您必須決定要授予預設服務帳戶哪些角色,然後自行授予這些角色。 - 如果預設服務帳戶已具備「編輯者」角色,建議您將「編輯者」角色替換為權限較少的角色。如要安全地修改服務帳戶的角色,請使用 政策模擬器查看變更的影響,然後授予及撤銷適當的角色。 
- 使用者管理的服務帳戶是在身分與存取權管理 (IAM) 中建立的服務帳戶。您可以為版本指定使用者管理的服務帳戶,存取其他 App Engine 服務及執行該版本的工作時,系統就會使用這個帳戶。