設定 OS Login 的雙重驗證功能

如果您是使用 OS Login 來管理執行個體的存取權,則可使用雙重驗證 (也稱為 2FA) 多加一層安全防護。

OS Login 支援以下 2FA 方法或驗證類型:

如要在執行個體上使用 2FA 驗證,請完成以下步驟:

  1. 啟用您 Google 帳戶或網域的 2FA
  2. 啟用專案或執行個體上的 2FA
  3. 連線至您的執行個體

設定 OS Login 的 2FA 後,即可使用稽核記錄來監控您的驗證工作階段。

支援的作業系統

OS Login 雙重驗證需要使用在下列日期之後所建立的映像檔:

作業系統 日期
CentOS 6 與 7 2019 年 3 月 26 日
Debian 9 2019 年 3 月 26 日
RHEL 6 與 7 2019 年 3 月 26 日
SUSE 12 與 15 尚未支援
Ubuntu 14.04 LTS、16.04 LTS、18.04 LTS 與 18.10 尚未支援

啟用您 Google 帳戶或網域的 2FA

您必須先在 Google 帳戶或網域上啟用 2FA,才能啟用專案或執行個體的 2FA。請確定您是在含有專案或執行個體的網域上啟用 2FA,或是為擁有專案或執行個體的使用者啟用 2FA。

G Suite 管理員可以啟用網域的雙重驗證,而個別的 Google 使用者可以啟用使用者帳戶層級的雙重驗證。

網域

只有 G Suite 管理員可以啟用網域的雙重驗證。

如要啟用網域的 2FA,請參閱 G Suite 管理指南中的使用兩步驟驗證功能保障企業資料安全

使用者帳戶

如果您的使用者帳戶不是由 G Suite 管理員管理,則可以設定個別 Google 帳戶的 2FA。

如要設定個別 Google 帳戶的 2FA,請參閱 Google 兩步驟驗證功能

在專案或執行個體上啟用 2FA

啟用網域層級或使用者帳戶層級的雙重驗證之後,即可讓個別的執行個體或專案使用 OS Login 2FA。

執行個體或專案必須啟用 OS Login,才能使用 OS Login 2FA。

您可以在建立執行個體或設定專案時,對 OS Login 及 OS Login 2FA 進行設定。也可以在已啟用 OS Login 的現有執行個體或專案上設定 OS Login 2FA。

如要將專案或執行個體設定為使用 OS Login 雙重驗證,請在專案或執行個體的中繼資料內設定「enable-oslogin-2fa=TRUE」。

主控台

在建立執行個體時,在執行個體中繼資料內設定 enable-oslogin-2fa

  1. 前往 GCP 主控台的「VM Instances」(VM 執行個體) 頁面。

    前往「VM instances」(VM 執行個體) 頁面

  2. 點選 [Create instance] (建立執行個體)
  3. 在「Create a new instance」(建立新執行個體) 頁面上,填入您要為執行個體設定的屬性。
  4. 在「Metadata」(中繼資料) 區段中,新增以下中繼資料項目:

    • enable-oslogin,其值為 TRUE
    • enable-oslogin-2fa,其值為 TRUE
  5. 點選 [Create] (建立) 以建立執行個體。

在全專案範圍的中繼資料內設定 enable-oslogin-2fa,以將其套用至您專案中的所有執行個體:

  1. 前往「Metadata」(中繼資料) 頁面。

    前往「Metadata」(中繼資料) 頁面。

  2. 按一下 [Edit] (編輯)
  3. 新增中繼資料項目,鍵為 enable-oslogin-2fa、值為 TRUE。而將值設為 FALSE 即可停用這項功能。
  4. 按一下 [Save] (儲存) 以套用變更內容。

針對並未執行 CoreOS 的 VM,系統會立即套用這項變更;您不需要重新啟動執行個體。針對 CoreOS 發行版,您需要重新啟動執行個體,變更才會生效。如要重新啟動,請對執行個體先後執行停止啟動作業。

在現有執行個體的中繼資料內設定 enable-oslogin-2fa

  1. 前往「VM instances」(VM 執行個體) 頁面。

    前往「VM instances」(VM 執行個體) 頁面

  2. 按一下您要設定中繼資料值的執行個體名稱。
  3. 在執行個體詳細資料頁面頂端,按一下 [Edit] (編輯) 即可編輯執行個體設定。
  4. 在「Custom metadata」(自訂中繼資料) 底下,新增鍵為 enable-oslogin-2fa、值為 TRUE 的中繼資料項目。此外,將值設為 FALSE 即可為執行個體停用這項功能。也請驗證 enable-oslogin 是否設定為 True
  5. 在執行個體詳細資料頁面的底端,按一下 [Save] (儲存) 將變更套用到執行個體。

針對除 CoreOS 外的所有作業系統,系統會立即套用這項變更;您不需要重新啟動執行個體。針對 CoreOS 發行版,您需要重新啟動執行個體,變更才會生效。如要重新啟動,請對執行個體先後執行停止啟動作業。

gcloud

在建立執行個體時,在執行個體中繼資料內設定 enable-oslogin-2fa

gcloud compute instances create [INSTANCE_NAME] \
  --metadata enable-oslogin=True,enable-oslogin-2fa=True

在全專案範圍的中繼資料內設定 enable-oslogin-2fa,以將其套用至您專案中的所有執行個體:

gcloud compute project-info add-metadata \
  --metadata enable-oslogin=True,enable-oslogin-2fa=True

在現有執行個體的中繼資料內設定 enable-oslogin-2fa

gcloud compute instances add-metadata \
  --metadata enable-oslogin=True,enable-oslogin-2fa=True [INSTANCE_NAME]

其中的 [INSTANCE_NAME] 是執行個體的名稱。

連線至執行個體

設定必要的角色後,請使用 Compute Engine 工具連線至執行個體。Compute Engine 會自動產生 SSH 金鑰,並將其連結到您的使用者帳戶。或者,如果您自行建立安全殼層 (SSH) 金鑰組並將公開金鑰新增到您的使用者帳戶,可以使用第三方工具連線至執行個體。執行個體會從使用者帳戶取得公開金鑰,並在您提供正確的使用者名稱與相配的私密安全殼層 (SSH) 金鑰組時,允許您連線至執行個體。

當您連線到執行個體時,您會收到根據所選擇的 2FA 方法或驗證類型所發出的訊息。

  • 如果是 Google Authenticator,會看到以下訊息:

    "Enter your one-time password:"

  • 如果是簡訊或電話驗證,會看到以下訊息:

    "A security code has been sent to your phone. Enter code to continue:"

  • 如果是手機提示,會看到以下訊息:

    A login prompt has been sent to your enrolled device:"

    如果使用的方法是手機提示,請在您的手機或平板上接受提示,才能繼續進行。如果是其他方法,請輸入您的安全碼或動態密碼。

連線至執行個體之後,請參閱預期的登入行為一節。

檢視 OS Login 2FA 稽核記錄

Compute Engine 會提供稽核記錄,讓您追蹤雙重驗證要求。雙重驗證有兩種要求類型:

  • StartSession:啟動新的驗證工作階段。在 StartSession 呼叫中,用戶端會向伺服器宣告其功能並取得第一次驗證的資訊。StartSession 呼叫會傳回以下內容:

    • 工作階段 ID:會將此工作階段 ID 傳送給所有後續的 ContinueSession 呼叫。
    • 此驗證工作階段中使用的驗證或 2FA 方法的相關資訊。
  • ContinueSession:繼續現有的驗證工作階段。ContinueSession API 可使用提供的工作階段 ID 來執行以下其中一種操作:

    • 接受對驗證的回應或方法,然後對使用者進行驗證、拒絕或要求額外的驗證。
    • 切換到不同於上一輪 API 呼叫時伺服器初始建議的驗證類型。如果用戶端選擇以不同的驗證類型來完成 (例如,選擇 Google Authenticator 而非手機提示),用戶端可使用所需類型的 request.challengeId,在對伺服器的呼叫中要求不同的驗證類型。

如要查看記錄,您必須擁有記錄檢視器的權限,或者必須為專案檢視者或編輯者。

  1. 前往 GCP 主控台的「記錄」頁面。

    前往「Logs」(記錄) 頁面

  2. 展開下拉式選單並選取 Audited Resource
  3. 在搜尋列中輸入 oslogin.googleapis.com,再按下 [Enter] 鍵。
  4. 隨即會顯示說明雙重驗證要求的稽核記錄清單。展開任何項目即可查看詳細資訊:

    雙重驗證的稽核記錄螢幕擷圖

針對任何稽核記錄,您可以:

  1. 展開 protoPayload 屬性。

    雙重驗證的稽核記錄指標螢幕擷圖

  2. 尋找 methodName,即可查看這個記錄適用的活動 (StartSessionContinueSession 要求)。例如,如果這個記錄會追蹤 StartSession 要求,方法名稱會顯示 "google.cloud.oslogin.OsLoginService.v1.StartSession"。同樣地,ContinueSession 記錄會顯示 "google.cloud.oslogin.OsLoginService.v1.ContinueSession"。每個開始與繼續工作階段要求都會有一筆稽核記錄項目。

不同記錄類型的稽核記錄屬性各不相同。例如,與 StartSession 相關的稽核記錄會具有開始工作階段的特有屬性,而 ContinueSession 的稽核記錄也會具有自己的屬性集。兩種記錄類型之間也會共用特定稽核記錄屬性。

所有雙重驗證的稽核記錄

屬性
serviceName oslogin.googleapis.com
resourceName 含有專案編號的字串。專案編號代表了稽核記錄所屬的登入要求。例如 projects/myproject12345
severity 記錄訊息的嚴重性等級。例如 INFOWARNING
request.email API 呼叫所要驗證的使用者電子郵件地址。
request.numericProjectId Google Cloud Platform 專案的專案編號。
response.@type type.googleapis.com/google.cloud.oslogin.OsLoginService.v1.StartOrContinueSessionResponse
response.sessionId 唯一用來識別工作階段的 ID 字串。此工作階段 ID 會傳送到序列中的下個 API 呼叫。
response.authenticationStatus 工作階段的狀態。例如 AuthenticatedChallenge requiredChallenge pending
response.challenges 您可以嘗試用來通過此輪驗證的驗證組合。在這些驗證中最多只會有一項已經開始且其狀態為 READY。其他則會當成提供給使用者的選項,使用者可以指定將這些選項做為建議的主要驗證以外的替代方案。

StartSession 稽核記錄

屬性
methodName google.cloud.oslogin.OsLoginService.v1.StartSession
request.@type type.googleapis.com/google.cloud.oslogin.OsLoginService.v1.StartSessionRequest
request.supportedChallengeTypes 您可以選擇的驗證類型或 2FA 方法清單。

ContinueSession 稽核記錄

屬性
methodName google.cloud.oslogin.OsLoginService.v1.ContinueSession
request.sessionId 唯一用來識別工作階段的 ID 字串。此工作階段 ID 是傳送自序列中的上個 API 呼叫。
request.@type type.googleapis.com/google.cloud.oslogin.OsLoginService.v1.ContinueSessionRequest
request.challengeId ID 字串,用來識別要開始或執行的驗證。此 ID 必須屬於之前 API 回覆中的 response.challenges 呼叫所傳回的驗證類型。
request.action 要採取的動作。
本頁內容對您是否有任何幫助?請提供意見:

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

這個網頁
Compute Engine 說明文件