設定 OS 登入

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

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

事前準備

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

    選取這個頁面上您打算如何使用範例的分頁:

    控制台

    使用 Google Cloud 控制台存取 Google Cloud 服務和 API 時,無須設定驗證。

    gcloud

    1. 安裝 Google Cloud CLI。 完成後,執行下列指令來初始化 Google Cloud CLI:

      gcloud init

      若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI

  • 設定預設地區和區域
  • Terraform

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

    1. 安裝 Google Cloud CLI。

    2. 若您採用的是外部識別資訊提供者 (IdP),請先使用聯合身分登入 gcloud CLI

    3. 如果您使用本機殼層,請為使用者帳戶建立本機驗證憑證:

      gcloud auth application-default login

      如果您使用 Cloud Shell,則不需要執行這項操作。

      如果系統傳回驗證錯誤,且您使用外部識別資訊提供者 (IdP),請確認您已 使用聯合身分登入 gcloud CLI

    詳情請參閱 這篇文章,瞭解如何設定本機開發環境的驗證機制。

限制

OS 登入不支援下列項目:
  • OS 登入設定檔總大小超過 32 KiB。OS 登入設定檔包含 POSIX 帳戶資訊和 SSH 公開金鑰。
  • 使用下列 OS 映像檔的運算執行個體:

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

指派 OS 登入 IAM 角色

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

角色 必要使用者 授權層級
roles/compute.osLoginroles/compute.osAdminLogin 所有使用者

在「專案」或「執行個體」上。

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

roles/iap.tunnelResourceAccessor 所有需要透過 IAP TCP 轉送功能存取 SSH 的使用者

在「專案」或「執行個體」上。

roles/iam.serviceAccountUser 如果 VM 有服務帳戶,則為所有使用者 在「服務帳戶」頁面。
roles/compute.osLoginExternalUser 使用者與連線的 VM 屬於不同機構

在「機構」

這個角色必須由機構管理員授予。

啟用 OS 登入功能

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

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

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

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

  • 鍵:enable-oslogin
  • 值:TRUE

為單一 VM 啟用 OS 登入功能

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

  • 鍵:enable-oslogin
  • 值:TRUE

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

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

控制台

建立 VM,在啟動時啟用 OS 登入功能,方法是從公開映像檔建立 VM,並指定下列設定:

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

gcloud

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

    啟用 Cloud Shell

    控制台底部會開啟 Cloud Shell 工作階段,並顯示指令列提示。 Google Cloud 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-11"
        }
      }
      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 會使用貴機構管理員為您設定的使用者名稱。如果貴機構管理員尚未為您設定使用者名稱,Compute Engine 會產生 USERNAME_DOMAIN_SUFFIX 格式的使用者名稱。如要進一步瞭解使用者名稱,請參閱「OS 登入 的運作原理」。

啟用 OS 登入功能並採用兩步驟驗證

為提升安全性,您可以要求使用者連線至已啟用 OS 登入的 VM 時,必須使用雙重驗證 (2FA)。如果您打算使用 OS 登入的雙重驗證功能,使用者必須在帳戶中設定兩步驟驗證。如要瞭解支援的 2FA 方法,請參閱「關於 OS 登入」。

啟用兩步驟驗證前,請先按照「啟用 OS 登入」一文的說明啟用 OS 登入。如要啟用 OS 登入 雙重驗證,請在執行個體或專案中繼資料中設定下列中繼資料值:

  • 鍵:enable-oslogin-2fa
  • 值:TRUE

如要強制執行 OS 登入 2FA,OS 登入 (enable-oslogin) 和 OS 登入 2FA (enable-oslogin-2fa) 的中繼資料都必須設為 TRUE

連線至已啟用 OS Login 2FA 的 VM 時,您也會看到系統根據所選兩步驟驗證方法或驗證類型發出的訊息。如果使用的方法是手機提示,請在手機或平板電腦上接受提示,才能繼續操作。如果是其他方法,請輸入您的安全碼或動態密碼。

排解 OS 登入問題

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

後續步驟