本頁說明如何在 Google Distributed Cloud 連線部署中設定防禦主機,讓 Google 工程師透過安全殼層 (SSH) 存取及排解 Distributed Cloud 連線區域中的節點。
Google 提供完整原始碼,您可以根據業務需求,建構自訂的堡壘主機虛擬機器。
必要條件
本節列出部署 Distributed Cloud 連線堡壘主機解決方案的必要條件。
啟用 Access Approval
堡壘主機功能會使用資料存取透明化控管機制的存取權核准功能,讓 Google 要求存取您的資料。部署堡壘主機虛擬機器前,請務必在 Google Cloud 專案中啟用資料存取透明化控管機制和存取權核准功能。如需詳細資訊,請參閱以下頁面:
虛擬機器規格
Distributed Cloud 連結網路方案的堡壘主機解決方案需要相當於 small 大小的 OpenStack 部署作業,並符合下列規格:
- CPU:1 個 vCPU
- RAM:2 GB
- 磁碟:20 GB
為提高可靠性,Google 建議每個 Google Cloud 區域部署 N+1 個堡壘主機虛擬機器。
網路需求
Distributed Cloud 連線堡壘主機解決方案要求您為每個堡壘主機虛擬機器設定下列網路對等互連工作階段:
- 北行。將防禦主機虛擬機器連上網際網路。需要網際網路存取權,且必須允許從特定 IP 位址透過通訊埠 22 建立連線。這些 IP 位址是 Google 提供的,屬於堡壘主機解決方案磁碟映像檔和原始碼套件的一部分。
- 南向。透過 22 埠將堡壘主機虛擬機器連線至單一 Google Cloud 區域中的對應 Distributed Cloud 連線區域。
- 管理。將堡壘主機虛擬機器連上本機網路,以利作業和維護。請根據貴機構的安全性政策設定這個對等互連工作階段。
安全性最佳做法
除了貴機構的安全政策外,Google 也強烈建議您在 Distributed Cloud 連線部署中設定堡壘主機解決方案時,遵循本節所述的安全最佳做法:
- 遵循最低權限規則,並為使用者清楚劃分職責。
- 除了管理員帳戶以外,所有使用者帳戶都只能使用憑證型驗證;停用密碼型驗證,並禁止存取堡壘主機虛擬機器的根目錄。
- 拒絕來自所有 IP 的存取要求 (北向對等互連工作階段),但 Google 提供的支援 IP 位址清單除外。
- 關閉南向對等互連工作階段的所有通訊埠 (通訊埠 22 除外),並僅允許 Google 提供的支援 IP 位址清單中的 IP 位址使用。
- 將所有堡壘主機虛擬機器保持在最新狀態。每次發布安全性修補程式和版本更新時,Google 都會提供新的原始碼套件。
- 設定警示和稽核解決方案,確保兩者都符合貴機構的安全性政策。
啟用堡壘主機支援
如要在 Distributed Cloud 連線部署中啟用堡壘主機支援,請提交要求。
您必須為每個 Distributed Cloud 連線區域個別啟用及設定堡壘主機支援功能。這樣一來,您就能為每個 Distributed Cloud connected 可用區部署最符合貴機構業務需求的存取權和網路設定。
取得堡壘主機軟體
Google 支援團隊為 Distributed Cloud connected 部署作業啟用防禦主機功能後,您就會收到防禦主機軟體套件。這個套件包含下列項目:
- 原始碼。您可以根據業務需求,自訂及建構自己的堡壘主機虛擬機器映像檔。
- 說明文件。其他工作 (例如設定憑證) 的說明文件。
建構防禦主機虛擬機器映像檔
本節概述從 Google 提供的原始碼建構堡壘主機虛擬機器映像檔的必要步驟。原始碼隨附的 README 檔案中提供完整操作說明。
必要條件
如要建構堡壘主機虛擬機器映像檔,您需要下列項目:
- 執行 Debian 11 的機器。
- 最新版 Debian 雲端伺服器映像檔。
- 電腦上安裝的
qemu-img、qemu-system-x86_x64和 GNUmtools軟體。 - 名為
host-user-key.pub的檔案,內含登入堡壘主機執行個體並啟動host-user工作階段的公開安全殼層金鑰。這組金鑰可用於直接驗證,或做為憑證授權單位簽署金鑰。堡壘主機執行個體必須信任這個 CA。 - 名為
admin-user-key.pub的檔案,內含公開 SSH 金鑰,可用於在目標堡壘主機執行個體上執行管理工作。此金鑰可用於直接驗證,或做為憑證授權單位簽署金鑰。堡壘主機執行個體必須信任這個 CA。 - 名為
guest-user-key.pub的檔案,內含 Google 提供的公開安全殼層憑證授權單位簽署金鑰,可讓 Google 支援團隊在連線至堡壘主機執行個體時,驗證為guest-user。
建構虛擬機器映像檔
按照來源程式碼隨附的 README 檔案中提供的操作說明,從 Google 提供的來源程式碼建構堡壘主機虛擬機器映像檔。本指南中的範例將產生的圖片檔案稱為 bastion-host.img。
建構 HIBA 套件
請按照下列步驟,為安全殼層 (SSH) 主機身分驗證 (HIBA) 驗證軟體層建構 Debian 安裝套件:
使用下列指令安裝必要依附元件:
sudo apt-get install autoconf autogen build-essential git libssl-dev libtool zlib1g-dev
使用下列指令建構安裝套件:
./build-hiba.sh -j $(nproc) /tmp/hiba-build-workdir
安裝套件會存放在 /tmp/hiba-build-workdir 目錄中,並命名為 hiba_x.y-z_amd64.deb,其中 x、y 和 z 代表 HIBA 版本號碼。
生成 cloud-init 設定
使用 generate-cloud-init.py 指令碼產生必要的 cloud-init 設定。
您也可以使用自己的工具產生這些設定。這些設定會執行下列動作:
- 在堡壘主機虛擬機器映像檔中建立必要的使用者帳戶,並使用先前所述的 SSH 金鑰設定這些帳戶。
- 新增指令碼,將
guest-user帳戶的權限限制為只能加入已建立的終端機多工器工作階段。 - 新增用於建立及管理終端機多工器工作階段的指令碼。
- 準備 HIBA 設定檔。
generate-cloud-init.py 指令碼需要您先前建構的 HIBA 套件,以及包含必要 SSH 金鑰的三個檔案。執行指令碼,如下所示:
./generate-cloud-init.py \ --hiba-package="${WORK_DIR}/hiba_1.0-1_amd64.deb" \ --host-user-key="HOST_USER_KEY_FILE" \ --manager-user-key="ADMIN_USER_KEY_FILE" \ --guest-user-ca="GUEST_USER_KEY_FILE" \ "${WORK_DIR}/cloud-init/"
更改下列內容:
HOST_USER_KEY_FILE:host-user-key.pub檔案的完整路徑和名稱。ADMIN_USER_KEY_FILE:admin-user-key.pub檔案的完整路徑和名稱。GUEST_USER_KEY_FILE:guest-user-key.pub檔案的完整路徑和名稱。
指令碼會將 cloud-init.img 檔案存放在本機工作目錄的 cloud-init 目錄中。
將 cloud-init 設定套用至防禦主機虛擬機器映像檔
使用 qemu-system-x86_64 工具,將先前產生的 cloud-init 設定套用至堡壘主機虛擬機器映像檔,如下所示:
qemu-system-x86_64 \ -nographic \ -enable-kvm \ -smp 1 \ -m 1g \ -drive format=qcow2,index=0,file=${WORK_DIR}/bastion-host.img \ -drive format=raw,index=1,file=${WORK_DIR}/cloud-init/cloud-init.img \ -nic user,hostfwd=tcp::10022-:22
如果這項指令傳回錯誤,您可能需要在堡壘主機虛擬機器映像檔中調整磁碟大小。
啟動虛擬機器後,即可確認設定是否已成功套用。您會在 auditd 記錄中看到類似下列內容的輸出:
[ 52.659013] cloud-init[615]: Cloud-init v. 20.4.1 finished at Fri, 28 Apr 2023 18:53:55 +0000.
您也可以手動檢查使用者帳戶和sshd設定,確認是否符合規定。
匯入堡壘主機虛擬機器映像檔
將已完成設定的堡壘主機虛擬機器映像檔匯入部署基礎架構之前,請務必使用 qemu-img 工具建立快照,步驟如下:
qemu-img snapshot -c installed bastion-image.img
按照貴機構建立的程序,將堡壘主機虛擬機器映像檔匯入部署基礎架構。
設定防禦主機虛擬機器
請按照本節的步驟設定堡壘主機虛擬機器。
設定必要的使用者帳戶
Distributed Cloud Connected 的堡壘主機功能需要一或多個使用者帳戶,且必須屬於下列類別:
- 管理。這是防禦主機虛擬機器的管理員帳戶。具有根層級存取權。
- 主機使用者:這是營運工程師帳戶。它可以為 Google 支援人員啟動及管理終端機多工器工作階段,但無法在這些工作階段中輸入任何指令。
- 訪客使用者:這是 Google 支援工程師帳戶。這項功能可在終端機多工器工作階段中建立 SSH 連線,並在堡壘主機虛擬機器上與作業工程師共用。沒有其他權限。
- 共同使用者。這個帳戶會在堡壘主機虛擬機器上建立終端機多工器工作階段。您的作業工程師和 Google 支援工程師會共同連線至這個工作階段。
設定憑證
您必須設定憑證,允許上一節所述帳戶存取防禦主機虛擬機器。堡壘主機軟體套件包含名為 generate-cloud-init.py 的指令碼,可為每個帳戶產生必要的 cloud-init 設定,其中包含必要的帳戶、SSH 金鑰和憑證。
如需操作說明,請參閱產生 cloud-init 設定。
設定記錄功能
您可以透過 audit 精靈,即時或依需求取得堡壘主機記錄。
您可以透過 auditd.conf 檔案管理記錄設定。您必須根據業務需求,負責輪替及匯出堡壘主機虛擬機器的記錄。您也必須維持足夠的磁碟空間,才能將這些檔案儲存在虛擬機器上。
測試您的設定
完成本節中的步驟,測試防禦主機虛擬機器部署作業,包括兩端的連線,以及必要使用者帳戶的適當存取權控管。此外,我們建議您與 Google 支援團隊合作,進行即時測試。
在本機測試部署作業
確認您可以建立 SSH 工作階段,以
host-user身分連線至堡壘主機虛擬機器。如果失敗,請檢查 SSH 金鑰和憑證。使用下列指令,確認您可以啟動終端機多工器工作階段:
./opt/create-shared-tmux-session
使用下列指令,確認可從堡壘主機虛擬機器連線至 Distributed Cloud 連線部署項目:
ssh -vv bastion-user@TARGET_ADDRESS
將
TARGET_ADDRESS替換為目標 Distributed Cloud 電腦或 ToR 交換器的 IP 位址。SSH 驗證會拒絕要求,但 SSH 傳輸和驗證要求仍須傳送至 Distributed Cloud 連線部署作業。如果失敗,請檢查防火牆設定。
確認您已在 Google Cloud 機構和目標專案中啟用資料存取透明化控管機制和 Access Approval,如本指南稍早所述。
與 Google 支援團隊一起測試部署作業
在本機成功測試防禦主機部署作業後,請與 Google 支援團隊聯絡,安排即時測試工作階段。在工作階段開始前,Google 支援團隊會傳送存取權核准要求給您。在即時測試期間,您和 Google 將討論下列主題:
- 產生及核准存取權核准要求。
- 堡壘主機部署作業的端對端存取工作流程。
- Access Approval 和資料存取透明化控管機制記錄檔。
- 如何排解下列情況:
- Google 嘗試連線至未在存取核准要求中指定的防禦主機執行個體。
- 您尚未啟動終端機多工器工作階段,但 Google 嘗試連線至堡壘主機執行個體。
- 在相應的存取權核准要求遭到拒絕或撤銷後,Google 嘗試連線至堡壘主機執行個體。
- 您中斷或終止終端機多工器工作階段。