本文說明如何使用 OS 登入,管理整個機構的 VM 執行個體存取權。
本主題說明下列工作:
- 使用組織政策為機構啟用 OS 登入功能:使用組織政策可確保機構中所有新的 VM 執行個體均已啟用 OS 登入功能。
- 將執行個體存取權授予機構外的使用者:允許機構外的使用者帳戶透過安全殼層連線至您的執行個體。
- 管理 OS Login API:允許或拒絕使用者存取 OS Login API。也可以啟用或停用 OS Login API 的功能。
- 稽核 OS 登入事件:追蹤 OS 登入相關事件和活動,例如新增、刪除或更新安全殼層金鑰,或刪除 POSIX 資訊。
- 使用 Directory API 修改使用者帳戶:使用 Directory API 更新使用者屬性,例如使用者名稱和 POSIX 帳戶資訊。
- 搭配 OS 登入功能使用 Linux 群組 (已淘汰):搭配 OS 登入功能使用 Linux 群組,管理 VM 內的使用者權限。
- 搭配員工身分聯盟使用 OS 登入功能 (搶先版):如果機構使用外部識別資訊提供者 (IdP),即可連線至已啟用 OS 登入功能的 VM。
事前準備
-
如果尚未設定驗證,請先完成設定。
驗證可確認您的身分,以便存取 Google Cloud 服務和 API。如要從本機開發環境執行程式碼或範例,可以選取下列任一選項,向 Compute Engine 進行驗證:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
安裝 Google Cloud CLI。 安裝完成後,執行下列指令初始化 Google Cloud CLI:
gcloud init
如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
- Set a default region and zone.
REST
如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。
安裝 Google Cloud CLI。 安裝完成後,執行下列指令初始化 Google Cloud CLI:
gcloud init
如果您使用外部識別資訊提供者 (IdP),請先 使用聯合身分登入 gcloud CLI。
詳情請參閱 Google Cloud 驗證說明文件中的「Authenticate for using REST」。
OS 登入組織政策
您可以在機構中設定 OS 登入限制,確保所有新專案和在這些新專案中建立的 VM 執行個體都已啟用 OS 登入功能。
設定此限制後,即適用於以下狀況:
- 所有新專案的專案中繼資料都包含
enable-oslogin=true
。 - 對於新 VM、現有 VM、新專案和現有專案,在執行個體或專案中繼資料中,將
enable-oslogin
設為false
的要求都會遭到拒絕。
限制
下列產品、功能和 VM 不支援 OS Login:- Cloud Data Fusion 6.1.4 版和更早版本
- Cloud Composer 1
- Windows Server 和 SQL Server VM
- Fedora CoreOS VM。如要管理使用這些映像檔建立的 VM 執行個體存取權,請使用 Fedora CoreOS 啟動系統
Cloud Data Fusion 和 Cloud Composer 的解決方法
如要在使用 Cloud Data Fusion 和 Cloud Composer 的機構中啟用 OS 登入,請在機構層級啟用 OS 登入限制,然後針對受影響的專案,選擇性停用專案或資料夾的限制。
如要進一步瞭解如何編輯機構政策,請參閱建立及編輯政策。
啟用機構政策
如要啟用 OS 登入政策,您可以使用 Google Cloud CLI 在特定專案和資料夾上設定 OS 登入限制。您也可以使用 Google Cloud 控制台或 Google Cloud CLI,為整個機構設定 OS 登入限制。
主控台
如要透過主控台設定 OS 登入組織政策,請完成下列步驟:
- 前往 Google Cloud 控制台的「Organization policies」(機構政策) 頁面。
- 在政策清單中,按一下「Require OS Login」(需要 OS 登入),即可查看 OS 登入限制。
- 按一下 [Edit] (編輯) 即可編輯現有的 OS 登入限制。
- 在「Edit」(編輯) 頁面選取 [Customize] (自訂)。
- 如要強制執行這項限制,請選取 [On] (開啟)。
- 按一下 [Save] (儲存) 以套用限制條件設定。
gcloud
如要設定 OS 登入組織政策,請使用
gcloud beta resource-manager org-policies enable-enforce
指令。找出您的機構 ID
gcloud organizations list
在您的機構中設定限制。請將
organization-id
改成您的機構 ID。gcloud beta resource-manager org-policies enable-enforce compute.requireOsLogin \ --organization=organization-id
您也可以將 OS 登入組織政策分別套用到具有
--folder
或--project
標記的資料夾或專案,以及資料夾 ID 和專案 ID。如要套用至資料夾,請執行下列指令:
gcloud beta resource-manager org-policies enable-enforce compute.requireOsLogin \ --folder=folder-id
如要套用至專案,請執行下列指令:
gcloud beta resource-manager org-policies enable-enforce compute.requireOsLogin \ --project=project-id
更改下列內容:
將執行個體存取權授予機構外的使用者
根據預設,機構外的使用者無法設定機構內執行個體的安全殼層金鑰,系統也無法將機構內執行個體的存取權授予上述使用者。在某些情況下,您可能需要將執行個體存取權授予其他機構使用者或是擁有 Google
gmail.com
個人帳戶的使用者。藉由允許外部 Google 帳戶設定 POSIX 帳戶資訊,
roles/compute.osLoginExternalUser
身分與存取權管理角色可讓外部 Google 帳戶與其他 OS 登入角色進行互動。如要將
roles/compute.osLoginExternalUser
和其他必要的 OS 登入執行個體存取權角色授予機構外部的使用者,請完成以下步驟:- 前往 Google Cloud 控制台的「IAM & Admin」(IAM 與管理) 頁面。
- 按一下「Select a project」(選取專案) 下拉式選單。在隨即顯示的「選取資源」對話方塊中,按照下列步驟選取機構:
- 點選機構下拉式選單,即可查看所有機構。
- 從下拉式選單中選取機構。
- 點選「授予存取權」,即可為使用者新增角色。
- 在「New principals」(新增主體) 欄位中,新增要設定執行個體存取權的使用者電子郵件地址。
- 從「角色」下拉式選單中,選取「Compute OS 登入外部使用者」角色。
- 按一下 [儲存]。
- 如果您尚未授予角色,也可以在專案或機構層級將其他 OS 登入執行個體存取權角色授予使用者。
使用者現在可以連接至專案中已啟用 OS 登入功能的執行個體。
管理 OS Login API
您可以在機構層級設定 Google Workspace 管理控制項,以便限制 OS Login API 的存取權。如要設定 Google Workspace 管理控制項或查看設定選項,請參閱控管貴機構中哪些使用者能存取 Google Cloud。Google Workspace 管理員也可以開啟或關閉 OS Login API 的特定功能。包括下列選項:
- 選擇是否要在 OS Login API 產生的使用者名稱中加入網域字尾。舉例來說,在網域
example.com
中,如果未勾選納入網域後置字串的設定,使用者user@example.com
的使用者名稱會是user
。 - 決定貴機構成員是否可以使用 OS Login API 管理 SSH 金鑰。
- 限制或允許機構外部使用者存取 VM。
如要進一步瞭解如何開啟或關閉 OS Login API 設定,請參閱「選擇 Google Cloud Platform 的設定」。
稽核 OS 登入事件
Google Workspace 管理員可以使用 Google Workspace Admin SDK,稽核透過 OS Login API 執行的動作。只要查看這些事件,您就可以追蹤使用者新增、刪除或更新安全殼層金鑰,或是刪除 POSIX 帳戶資訊的時間。
您可以利用
applicationName=gcp
呼叫Activities.list()
,以便從 Google Workspace Admin SDK 中擷取 OS Login API 稽核活動事件。詳情請參閱 Google Workspace Admin SDK Reports API 說明文件中的Google Cloud 活動事件。使用 Directory API 修改使用者帳戶
當您連線至執行個體時,OS 登入會使用您的 Cloud Identity 或 Google Workspace 使用者設定。如果您是 Google Workspace 超級管理員,則可以使用 Directory API 為 Google Workspace 或 Cloud Identity 使用者帳戶完成以下工作:
- 修改執行個體登入設定
- 讓使用者成為管理員
- 修改帳戶名稱和電子郵件等使用者屬性
- 新增和刪除使用者的安全殼層金鑰
- 修改 POSIX 帳戶資訊
- 變更使用者在執行個體上連線的使用者名稱
下列範例說明如何使用 Directory API 修改或移除使用者帳戶。如要進一步瞭解可編輯的帳戶屬性,請參閱 Directory API 參考資料。
修改帳戶屬性
如要修改使用者的 POSIX 帳戶資訊或管理使用者的 SSH 金鑰,請對
directory.users.update
方法發出PUT
要求,並指定一或多個要在使用者帳戶中變更的屬性。如要修改使用者的
posixAccounts
屬性,您必須在要求中指定目前或新的username
、uid
和gid
值。如果您修改使用者的
sshPublicKeys
屬性,就必須在要求中指定key
值。以下是
PUT
要求範例:PUT https://admin.googleapis.com/admin/directory/v1/users/USER_KEY { "posixAccounts": [ { "username": "USERNAME", "uid": "UID", "gid": "GID", "homeDirectory": "USER_HOME_PATH", "shell": "SHELL_PATH" } ], "sshPublicKeys": [ { "key": "KEY_VALUE", "expirationTimeUsec": EXPIRATION_TIME } ], }
更改下列內容:
USER_KEY
:使用者的主要電子郵件地址、別名電子郵件地址或專屬的使用者 ID。USERNAME
:Compute Engine 為使用者新增至 VM 的使用者名稱。這個值在機構中不得重複,且不得以半形波浪號「~」結尾,也不得包含半形句號「.」。UID
:此使用者的 VM 使用者 ID。 這項屬性的值必須介於1001
到60000
之間,或是介於65535
到2147483647
之間。如要存取容器最佳化的 OS,UID
的值必須介於65536
和214748646
之間。UID
在機構中不得重複。GID
:使用者所屬 VM 的群組 ID。USER_HOME_PATH
:(選用) 使用者的 VM 主目錄。例如:/home/example_username
。SHELL_PATH
:(選用) 使用者連線至執行個體後的預設殼層路徑。例如/bin/bash
或/bin/sh
。KEY_VALUE
:公開安全殼層金鑰值。EXPIRATION_TIME
:(選用) 金鑰的到期時間,以自 Epoch 紀元起算的微秒為單位 (1 秒 = 106 微秒)。
移除帳戶資源
如要清除使用者的
posixAccounts
和sshPublicKeys
資料,請對directory.users.update
方法發出PUT
要求,並將posixAccounts
和sshPublicKeys
欄位設為null
:PUT https://admin.googleapis.com/admin/directory/v1/users/USER_KEY { "posixAccounts": null, "sshPublicKeys": null }
將
USER_KEY
替換成使用者的主要電子郵件地址、別名電子郵件地址或專屬的使用者 ID。透過 OS 登入功能使用 Linux 群組 (已淘汰)
機構管理員可以透過 Cloud Identity Groups API 建立及管理 POSIX 群組,為 OS Login 使用者設定補充 Linux 群組。OS 登入功能會將 POSIX 群組連結至機構 VM 中的補充 Linux 群組,方便您管理使用者在 VM 中的權限。
管理 Linux 群組中的使用者成員
如要建立 POSIX 群組,請參閱「建立及更新 POSIX 群組」。
如要將使用者加入群組,請參閱「新增或邀請使用者加入群組」。
會員資格更新會在 10 分鐘內生效。群組變更會反映在所有新建立的 VM 中。POSIX 群組更新最多可能需要六小時,才會對所有執行中的 VM 生效。使用者可能需要登出或使用
newgrp
指令,才能查看群組變更。刪除 POSIX 群組設定
OS 登入 POSIX 群組支援功能已淘汰。建議您刪除 OS 登入 POSIX 群組設定。
您必須是機構管理員,才能刪除 OS 登入 POSIX 群組設定。
- 如果您不知道機構資源 ID,請取得機構資源 ID。
- 列出貴機構的所有 POSIX 群組。記下每個群組的電子郵件地址。
- 針對機構中的每個 POSIX 群組執行下列操作:
- 擷取群組資訊。請注意
posixGroups.gid
。 - 刪除 POSIX 群組。
- 擷取群組資訊。請注意
- (選用) 列出機構中的所有 POSIX 群組,確認所有群組都已刪除。如果所有群組都已成功刪除,回應會留白。
使用 OS 登入的 Linux 群組頻率限制
使用 OS 登入功能的 Linux 群組會使用
oslogin.googleapis.com/metadata_server_groups_requests
配額。根據預設,特定區域的每個專案配額上限為每分鐘 60 個要求。如要提高頻率限制,請前往 Google Cloud 控制台的「配額」頁面申請調整配額。
搭配 OS 登入功能使用員工身分聯盟
使用員工身分聯盟的機構可以透過 OS 登入管理 VM 的存取權。為機構啟用員工身分聯盟後,OS Login 會使用憑證型驗證,而非金鑰型驗證來驗證使用者身分。
事前準備
- 建立工作團隊身分集區。
- 設定
google.posix_username
屬性對應。 如要將 VM 設為使用 OS 登入和員工身分聯盟,請完成下列步驟:
在 VM 上執行下列指令,確認 VM 已安裝 OpenSSH 7.4 以上版本:
ssh -V
限制
- 您無法搭配使用員工身分聯盟與 OS Login 雙重驗證 (2FA)。
- 如要搭配 OS 登入使用員工身分聯盟,連線的 VM 必須安裝 OpenSSH 7.4 以上版本。
- 如果貴機構使用員工身分聯盟,您就無法存取 VM 的序列埠。
連線至使用 OS 登入和員工身分聯盟的 VM
使用Google Cloud 控制台、gcloud CLI 或其他 SSH 用戶端,連線至使用 OS 登入和員工身分同盟的 VM。
主控台
使用 SSH-in-browser 連線至使用 OS Login 和員工身分同盟的 VM 時,嘗試連線時,Compute Engine 會代您設定 SSH 憑證。
如要連線至 VM,請按照下列步驟操作:
- In the Google Cloud console, go to the VM instances page.
-
In the list of virtual machine instances, click SSH in the row of
the instance that you want to connect to.
gcloud
使用員工身分聯盟透過 gcloud CLI 連線至使用 OS Login 的 VM 時,Compute Engine 會在您嘗試連線時,代表您設定 SSH 憑證。
執行
gcloud beta compute ssh
指令,使用 SSH 連線至 VM:執行下列指令:
gcloud beta compute ssh --project=PROJECT_ID --zone=ZONE VM_NAME
更改下列內容:
PROJECT_ID
:含有 VM 的專案 IDZONE
:VM 所在的可用區名稱VM_NAME
:VM 的名稱
如果已為 Google Cloud CLI 設定預設屬性,則可省略此指令中的
--project
和--zone
旗標。例如:gcloud compute ssh VM_NAME
-
如果尚未在工作站上安裝 IAP Desktop,請先完成這項程序。
-
開啟 IAP Desktop。「新增專案」視窗隨即開啟。
-
系統出現提示時,請 使用員工身分聯盟登入。
-
在「新增專案」視窗中,輸入要連線的 VM 所在專案的 ID 或名稱。
-
在「Project Explorer」視窗中,再次以滑鼠右鍵按一下 VM 名稱,然後選取「Connect」,即可連線至 VM。
- 如果還沒有安全殼層金鑰,請建立一個。
使用
users.projects.locations.signSshPublicKey
方法簽署公開安全殼層金鑰:POST https://oslogin.googleapis.com/v1beta/users/USER/projects/PROJECT_ID/locations/LOCATION:signSshPublicKey { "ssh_public_key": "PUBLIC_KEY" }
更改下列內容:
USER
:工作團隊集區中的單一身分,格式如下:principal:%2F%2Fiam.googleapis.com%2Flocations%2Fglobal%2FworkforcePools%2POOL_ID%2Fsubject%2FSUBJECT_ATTRIBUTE_VALUE
更改下列內容:
POOL_ID
:使用者所屬的工作團隊集區。SUBJECT_ATTRIBUTE_VALUE
:使用者google.posix_username
屬性對應項的值。
PROJECT_ID
:專案 ID,用於存放您要連線的 VM。LOCATION
:您要連線的 VM 所在的區域。PUBLIC_KEY
:安全殼層公開金鑰檔案的內容。
從
user.signSshPublicKey
方法的輸出內容複製 SSH 憑證,並將內容儲存在新檔案中。執行下列指令,設定 SSH 憑證檔案的權限:
sudo chmod 600 FILE_NAME
將
FILE_NAME
換成檔案名稱。使用下列指令連線至 VM:
ssh -i PATH_TO_PRIVATE_KEY -o CertificateFile=PATH_TO_SSH_CERTIFICATE USERNAME@EXTERNAL_IP
更改下列內容:
PATH_TO_PRIVATE_KEY
:私密安全殼層金鑰檔案的路徑。PATH_TO_SSH_CERTIFICATE
:SSH 憑證檔案的路徑。USERNAME
:使用者google.posix_username
屬性對應的值。EXTERNAL_IP
:VM 的外部 IP 位址。
In the Google Cloud console, activate Cloud Shell.
At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.
IAP Desktop
使用 IAP Desktop 連線至使用員工身分聯盟的 OS Login VM 時,Compute Engine 會在您嘗試連線時,代表您設定 SSH 憑證。
如要使用 IAP Desktop 連線至 VM,請按照下列步驟操作:
SSH 用戶端
如要使用 SSH 用戶端連線至使用 OS 登入和員工身分同盟的 VM,請按照下列步驟操作:
後續步驟
- 瞭解如何設定 OS 登入。
- 瞭解如何設定採用兩步驟驗證機制的 OS 登入。
- 閱讀 OS 登入功能總覽。
- 排解 OS 登入問題。
除非另有註明,否則本頁面中的內容是採用創用 CC 姓名標示 4.0 授權,程式碼範例則為阿帕契 2.0 授權。詳情請參閱《Google Developers 網站政策》。Java 是 Oracle 和/或其關聯企業的註冊商標。
上次更新時間:2025-09-04 (世界標準時間)。
-