設定 OS 登入

本文說明如何設定 OS 登入。

OS 登入功能可讓您根據 IAM 權限控管虛擬機器 (VM) 執行個體的存取權。如要進一步瞭解 OS 登入,請參閱「關於 OS 登入」一文。

事前準備

  • 如果尚未設定驗證,請先完成設定。 驗證可確認您的身分,以便存取 Google Cloud 服務和 API。如要從本機開發環境執行程式碼或範例,請選取下列其中一個選項,向 Compute Engine 進行驗證:

    請根據您打算如何使用本頁範例,選取對應的分頁標籤:

    控制台

    使用 Google Cloud 控制台存取 Google Cloud 服務和 API 時,您不需要設定驗證機制。

    gcloud

    1. 安裝 Google Cloud CLI,然後 使用聯合身分登入 gcloud CLI。登入後,執行下列指令來初始化 Google Cloud CLI:

      gcloud init
  • 設定預設區域和可用區。
  • Terraform

    如要在本機開發環境中使用本頁的 Terraform 範例,請安裝並初始化 gcloud CLI,然後使用使用者憑證設定應用程式預設憑證。

    1. 安裝 Google Cloud CLI。

    2. 設定 gcloud CLI,使用您的聯合身分。

      詳情請參閱「 使用聯合身分登入 gcloud CLI」。

    3. 為使用者帳戶建立本機驗證憑證:

      gcloud auth application-default login

      如果系統傳回驗證錯誤,請確認您已 使用聯合身分登入 gcloud CLI。

    詳情請參閱「 為本機開發環境設定驗證機制」。

限制

OS 登入不支援下列項目:
  • OS 登入設定檔總大小超過 32 KiB。OS 登入設定檔包含 POSIX 帳戶資訊和 SSH 公開金鑰。
  • 使用下列 OS 映像檔的 Compute 執行個體:
    • Windows Server 和 SQL Server。
    • Fedora CoreOS。如要管理使用這些映像檔建立的運算執行個體存取權,請使用 Fedora CoreOS 點火系統。
    • SLES 16。如要管理執行個體對使用這些映像檔建立的運算執行個體的存取權,請使用以中繼資料為基礎的 SSH。

如要確認特定 Linux 發行版本是否支援 OS 登入,請參閱「作業系統詳細資料」。

指派 OS 登入 IAM 角色

將所有必要的 IAM 角色指派給使用者,讓他們連線至已啟用 OS 登入功能的 VM。

角色 必要使用者 授權等級
roles/compute.osLogin 或 roles/compute.osAdminLogin 所有使用者

在專案或執行個體上。

如果使用者需要透過 Google Cloud 控制台或 Google Cloud CLI 進行 SSH 存取,您必須在專案層級授予這些角色,或在專案層級額外授予含有 compute.projects.get 權限的角色。

roles/iam.serviceAccountUser 如果 VM 有服務帳戶,則為所有使用者 在「服務帳戶」。

啟用 OS 登入功能

如要為單一 VM 或專案中的所有 VM 啟用 OS 登入功能,請在專案或執行個體中繼資料中,將 enable-oslogin 設為 TRUE。

設定 OS 登入中繼資料時,Compute Engine 會刪除 VM 的 authorized_keys 檔案,且不再接受儲存在專案或執行個體中繼資料中的安全殼層金鑰連線。

重要事項:在 Google Cloud中,OS 登入僅支援使用 SSH 憑證的連線。只要將 enable-oslogin 設為 TRUE,也請將 enable-oslogin-certificates 設為 TRUE。

為專案中的所有 VM 啟用 OS 登入功能

如要為專案中的所有 VM 啟用 OS 登入,請在專案中繼資料中設定下列值:

  • 鍵:enable-oslogin
  • 值:TRUE

為單一 VM 啟用 OS 登入功能

如要為單一 VM 啟用 OS 登入,請在執行個體中繼資料中設定下列值:

  • 鍵:enable-oslogin
  • 值:TRUE

在建立 VM 時啟用 OS 登入功能

使用 Google Cloud 控制台或 gcloud CLI 建立 VM 時,請啟用 OS 登入功能。

控制台

如要建立在啟動時啟用 OS 登入的 VM,請從公開映像檔建立 VM,並指定下列設定:

  1. 展開「Advanced options」(進階選項) 區段。
  2. 展開「安全性」部分。
  3. 展開「Manage access」(管理存取權) 部分。
  4. 選取「透過 IAM 權限控管 VM 存取權」。
  5. 按一下「建立」,即可建立並啟動 VM。

gcloud

  1. 在 Google Cloud 控制台中啟用 Cloud Shell。

    啟用 Cloud Shell

    Google Cloud 控制台底部會開啟 Cloud Shell 工作階段,並顯示指令列提示。Cloud Shell 是已安裝 Google Cloud CLI 的殼層環境,並已設定適用於您目前專案的值。工作階段可能要幾秒鐘的時間才能初始化。

  2. 執行下列 gcloud compute instance create 指令,建立在啟動時啟用 OS 登入的 VM:

    gcloud compute instances create VM_NAME \
       --image-family=IMAGE_FAMILY \
       --image-project=IMAGE_PROJECT \
       --metadata enable-oslogin=TRUE
    

    更改下列內容:

    • VM_NAME:新 VM 的名稱。
    • IMAGE_FAMILY:Linux OS 的映像檔系列。這會使用最新的非已淘汰 OS 映像檔建立 VM。如要查看所有公開映像檔系列,請參閱「作業系統詳細資料」。
    • IMAGE_PROJECT:包含映像檔系列的映像檔專案。每個作業系統都有自己的映像檔專案。如要查看所有公開映像檔專案,請參閱「作業系統詳細資料」。

Terraform

您可以透過下列任一選項,將中繼資料值套用至專案或 VM:

  • 方法 1:在專案層級中繼資料中設定 enable-oslogin,以便套用至專案中的所有 VM。

    使用 google_compute_project_metadata Terraform 資源,並設定中繼資料值,其中 oslogin=TRUE:

    resource "google_compute_project_metadata" "default" {
      metadata = {
        enable-oslogin = "TRUE"
      }
    }

    或者,您也可以將 enable-oslogin 設為 FALSE,停用 OS 登入功能。

  • 方法 2:在新的或現有 VM 的中繼資料中設定 enable-oslogin。

    使用 google_compute_instance Terraform 資源並設定 oslogin=TRUE。將 oslogin_instance_name 替換為您的 VM 名稱。

    resource "google_compute_instance" "oslogin_instance" {
      name         = "oslogin-instance-name"
      machine_type = "f1-micro"
      zone         = "us-central1-c"
      metadata = {
        enable-oslogin : "TRUE"
      }
      boot_disk {
        initialize_params {
          image = "debian-cloud/debian-13"
        }
      }
      network_interface {
        # A default network is created for all GCP projects
        network = "default"
        access_config {
        }
      }
    }

    或者,您也可以將 enable-oslogin 設為 FALSE,禁止 VM 使用 OS 登入功能。

停用 OS 登入

如要停用 OS 登入,請在專案或執行個體中繼資料中,將 enable-oslogin 設為 FALSE。

停用 OS 登入後,您可以使用儲存在中繼資料中的 SSH 金鑰連線至 VM。

為專案中的所有 VM 停用 OS 登入功能

如要為專案中的所有 VM 停用 OS 登入功能,請在專案中繼資料中設定下列值:

  • 鍵:enable-oslogin
  • 值:FALSE

停用單一 VM 的 OS 登入功能

如要為單一 VM 停用 OS 登入,請在執行個體中繼資料中設定下列值:

  • 鍵:enable-oslogin
  • 值:FALSE

即使專案中繼資料中的 enable-oslogin 設為 TRUE,只要將執行個體中繼資料中的 enable-oslogin 設為 FALSE,VM 的 OS 登入功能就會停用。

連線至已啟用 OS 登入功能的 VM

如要連線至已啟用 OS 登入功能的 VM,請使用「連線至 Linux VM」一文所述的方法。

連線至已啟用 OS 登入功能的 VM 時,Compute Engine 會使用google.posix_username 屬性對應的值做為使用者名稱。 如要進一步瞭解使用者名稱,請參閱「OS 登入的運作方式」。

排解 OS 登入問題

如要瞭解如何診斷及解決 OS 登入錯誤,請參閱「排解 OS 登入問題」。

後續步驟