授權對 Google Compute Engine 的要求

如果您使用 Compute Engine API 管理 Compute Engine 資源,可以從 Compute Engine 服務帳戶中取得憑證,用於向 API 驗證應用程式。服務帳戶讓您可以向 API 驗證應用程式,而不需要將任何密鑰嵌入應用程式的程式碼。

就大部分的情況而言,應用程式必須授權對 API 的要求,所以建議您使用服務帳戶。但是,如果您要建立開發或管理工具,讓使用者用來授予您存取其 Google Cloud 資源的權限時,請改用使用者授權流程

從服務帳戶中取得憑證的最簡單方式,就是透過 Compute Engine 用戶端程式庫應用程式預設憑證。 這些套件可讓應用程式依應用程式執行所在位置,從數個可用來源其中之一取得憑證。

在 Compute Engine 執行個體上執行的應用程式

如果您在 Compute Engine 執行個體上執行應用程式,則可以透過內建服務帳戶取得應用程式預設憑證。請參閱建立和啟用執行個體的服務帳戶一文,以使用這些內建服務帳戶設定執行個體,並在 Compute Engine 執行個體上執行您的應用程式。

在 Google Cloud Platform 之外執行的應用程式

如果您會在 Google Cloud Platform 之外的系統上執行應用程式,則您的應用程式可以使用應用程式預設憑證從那些系統的環境變數中取得憑證。請參閱應用程式預設憑證的運作方式,設定包含必要憑證的環境變數。

開發中的應用程式

您在本機開發應用程式的過程中,可以使用 gcloud 工具中的 auth application-default login 資訊,暫時取得應用程式的使用者憑證。當您所要開發的程式碼照慣例會使用服務帳戶時,這個指令即可派上用場,但是您必須在本機開發環境中執行程式碼,使系統更易於提供使用者憑證。憑證會套用到所有可使用「應用程式預設憑證」用戶端程式庫的 API 呼叫。

  1. 在您的開發系統上安裝 gcloud 工具

  2. 使用 gcloud auth application-default login 指令,將您的憑證提供給工具

應用程式會從工具中取得憑證。之後,您可以將應用程式部署到 Compute Engine 執行個體,讓應用程式在此處自動從內建服務帳戶取得憑證,或將應用程式部署到已在環境變數中指定憑證的其他系統。

範例:使用應用程式預設憑證進行驗證

本範例使用 Python 用戶端程式庫向 Cloud Storage API 進行驗證,並要求列出專案中的值區。 本範例採用以下程序:

  1. 取得 Cloud Storage API 的必要驗證憑證,然後使用 build() 方法和憑證初始化 Cloud Storage 服務。
  2. 列出 Cloud Storage 中的值區。

在執行 gcloud auth application-default login 指令之後,或在設定環境變數使用應用程式預設憑證之後,您可以在本機電腦上能夠存取管理 Google Cloud Storage 中值區的執行個體上執行本範例。

import argparse

import googleapiclient.discovery

def create_service():
    # Construct the service object for interacting with the Cloud Storage API -
    # the 'storage' service, at version 'v1'.
    # Authentication is provided by application default credentials.
    # When running locally, these are available after running
    # `gcloud auth application-default login`. When running on Compute
    # Engine, these are available from the environment.
    return googleapiclient.discovery.build('storage', 'v1')

def list_buckets(service, project_id):
    buckets = service.buckets().list(project=project_id).execute()
    return buckets

def main(project_id):
    service = create_service()
    buckets = list_buckets(service, project_id)
    print(buckets)

if __name__ == '__main__':
    parser = argparse.ArgumentParser(
        description=__doc__,
        formatter_class=argparse.RawDescriptionHelpFormatter)
    parser.add_argument('project_id', help='Your Google Cloud Project ID.')

    args = parser.parse_args()

    main(args.project_id)

取得應用程式使用者擁有之 Google Cloud 資源的存取權

如果您要建立開發或管理工具,讓使用者用來授予您存取其 Google Cloud 資源的權限時,請透過基本 OAuth 2.0 程序取得授權。本程序會要求您的使用者透過使用者授權流程,授予您存取其資訊的權限。您的應用程式在取得存取權後,即可在每個使用者的專案中檢視或修改 Compute Engine 資源。

請在您的要求內容中指定存取範圍,將您的存取權限制在只能存取應用程式所需的方法和使用者資訊。舉例來說,指定 compute.readonly 範圍後,您的應用程式可以檢視現有的 Compute Engine 資源,但無法為使用者建立或修改任何資源。

範圍 意義
https://www.googleapis.com/auth/cloud-platform 可以完全存取指定 Cloud Platform 專案中的所有資源和服務。
https://www.googleapis.com/auth/compute 可以讀取和寫入 Google Compute Engine 方法。
https://www.googleapis.com/auth/compute.readonly 只能讀取 Google Compute Engine 方法。
本頁內容對您是否有任何幫助?請提供意見:

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

這個網頁
Compute Engine 說明文件