登陸區部署程序包含多個階段。在每個階段,您都必須在 terraform.tfvars 檔案中加入特定變數。完成階段後,Terraform 會將 STAGE_NAME-tfvar.auto.tfvars.json 檔案寫入初始階段建立的 Cloud Storage bucket。後續階段會使用 Google Cloud CLI 複製檔案,以及模擬階段專屬服務帳戶的供應商檔案,到新的階段資料夾中。
視租戶數量而定,部署新環境大約需要一小時。
必要條件
部署 Stellar Engine 前,請先完成下列工作。
設定「 Google Cloud」
如要設定 Google Cloud,請完成下列步驟:
選取 Google Cloud 機構。如果您建立新機構,請至少登入 Google 管理控制台一次。
設定多位管理員,以實施分散權責。在測試環境中,一位使用者可能擁有所有資源的管理員角色。不過,在正式環境中,您需要多位管理員。詳情請參閱「設定機構資源」。
為所有具備權限的帳戶啟用兩步驟驗證。
停用 Cloud Shell。Cloud Shell 不支援 IL4 或 IL5 環境,必須由 Google Workspace 管理員停用。
如果您沒有專案,請建立啟動專案。
在啟動專案中完成下列工作:
確認使用者帳戶是超級管理員。
如果貴機構沒有資料分類架構,請建立一個。
指派角色
將下列 Identity and Access Management 角色指派給部署 Stellar Engine 的使用者帳戶。
-
確認您在機構中具備下列一或多個角色: 資料存取透明化控管機制管理員、Assured Workloads 管理員、帳單帳戶管理員、記錄管理員、組織管理員、組織政策管理員、機構角色管理員、擁有者、專案建立者、服務帳戶管理員、服務帳戶權杖建立者、代碼管理員
檢查角色
-
前往 Google Cloud 控制台的「IAM」頁面。
前往「IAM」頁面 - 選取機構。
-
在「主體」欄中,找出所有識別您或您所屬群組的資料列。如要瞭解自己所屬的群組,請與管理員聯絡。
- 針對指定或包含您的所有列,請檢查「角色」欄,確認角色清單是否包含必要角色。
授予角色
-
前往 Google Cloud 控制台的「IAM」頁面。
前往「IAM」頁面 - 選取機構。
- 按一下「Grant access」(授予存取權)。
-
在「New principals」(新增主體) 欄位中,輸入您的使用者 ID。 這通常是指 Google 帳戶的電子郵件地址。
- 按一下「Select a role」(選取角色),然後搜尋角色。
- 如要授予其他角色,請按一下「Add another role」(新增其他角色),然後新增其他角色。
- 按一下「Save」(儲存)。
-
如果您要從新機構開始,可以執行 fast/stages-aw/0-bootstrap 資料夾中的下列指令碼,套用角色:
./setIAM.sh EMAIL_ADDRESS ORGANIZATION_ID
更改下列內容:
EMAIL_ADDRESS:使用者帳戶的電子郵件地址。ORGANIZATION_ID:您的機構 ID。
這項指令碼會新增所有角色,但「帳單帳戶管理員」和「超級管理員」除外。
新增群組及設定服務
-
gcp-billing-admins@DOMAINgcp-developers@DOMAINgcp-devops@DOMAINgcp-hybrid-connectivity-admins@DOMAINgcp-logging-monitoring-admins@DOMAINgcp-logging-monitoring-viewers@DOMAINgcp-organization-admins@DOMAINgcp-vpc-network-admins@DOMAINgcp-security-admins@DOMAIN
將
DOMAIN替換成您的 FQDN。如果系統提示,請略過識別資訊提供者步驟。
Google 可能會變更預設群組名稱。如果設定指南中沒有您要的群組,可以手動建立群組。
啟用 Assured Workloads、BigQuery、Cloud Billing、Cloud Logging、Cloud KMS、IAM、Pub/Sub、Resource Manager、Service Account Credentials、服務使用情形、組織政策服務 API。
啟用 API 時所需的角色
如要啟用 API,您必須具備
serviceusage.services.enable權限。如果您建立了專案,可能已透過「擁有者」角色 (roles/owner) 取得這項權限。否則,您可以透過「服務使用情形管理員」角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色。如果配額少於 13 個專案,請前往「Google Cloud Platform/API 專案:要求提高帳單配額」,申請 13 個專案。詳情請參閱「查看及管理配額」。
您也可以使用 fast/stages-aw/0-bootstrap/enableServices.sh 指令碼啟用服務。
設定本機環境
請完成下列步驟,設定本機環境:
- 複製 Stellar Engine GitHub 存放區。
- 安裝 Google Cloud SDK。
- 將本機 Terraform 更新至 1.8.1 以上版本。
- 安裝 jq 二進位檔。
驗證並將啟動程序專案設為有效專案:
gcloud auth login gcloud config set project BOOTSTRAP_PROJECT_ID gcloud auth application-default login
修改模組
在大多數情況下,您都可以直接使用存放區,不必進行任何變更。如要修改模組,請複製整個模組並使用 <module-se> 命名慣例,以免從 Cloud 基礎架構儲存庫提取定期更新時發生合併衝突。
執行階段 0:啟動
第 0 階段會將網路的現有部分與 Terraform 狀態對齊。階段 0 會建立初始 IaC 啟動程序服務帳戶和專案。第 0 階段:從使用者最初擁有的任何專案,轉換至新的核心專案,並遷移 Terraform 狀態。
將目錄變更為
fast/stages-aw/0-bootstrap。複製
terraform.tfvars.sample檔案:cp terraform.tfvars.sample terraform.tfvars將
providers.tf.tmp檔案複製到0-bootstrap-providers.tf檔案:cp providers.tf.tmp 0-bootstrap-providers.tf更新「
fast/stages-aw/0-bootstrap/terraform.tfvars」中的資訊:billing_account = { id = "BILLING_ACCOUNT_ID" } regions = { primary = "REGION" } organization = { domain = "DOMAIN" id = "ORGANIZATION_ID" customer_id = "CUSTOMER_ID" } outputs_location = "~/fast-config" prefix = "PREFIX" log_sinks = { audit-logs = { filter = "logName:\"/logs/cloudaudit.googleapis.com%2Factivity\" OR logName:\"/logs/cloudaudit.googleapis.com%2Fsystem_event\" OR protoPayload.metadata.@type=\"type.googleapis.com/google.cloud.audit.TransparencyLog\"" type = "logging" } vpc-sc = { filter = "protoPayload.metadata.@type=\"type.googleapis.com/google.cloud.audit.VpcServiceControlAuditMetadata\"" type = "logging" } workspace-audit-logs = { filter = "logName:\"/logs/cloudaudit.googleapis.com%2Fdata_access\" and protoPayload.serviceName:\"login.googleapis.com\"" type = "logging" } empty-audit-logs = { filter = "" type = "logging" } } org_policies_config = { constraints = { "ALLOWED_POLICY_MEMBER_DOMAINS" = [] } } fast_features = { envs = true } assured_workloads = { regime = "COMPLIANCE_REGIME" location = "LOCATION" } bootstrap_project = "BOOTSTRAP_PROJECT_ID" alert_email = "ALERT_EMAIL"更改下列內容:
BILLING_ACCOUNT_ID:用於部署環境的帳單帳戶。如要查看帳單帳戶資訊,請前往 Google Cloud 控制台。REGION:部署資源的主要區域。IL5 和 FedRAMP 的預設值為us-east4。如要新增次要區域來部署資源,請新增
secondary=secondary。DOMAIN:完整網域名稱 (FQDN)。如要查看 FQDN,請執行gcloud organizations list。ORGANIZATION:Google Cloud 機構的機構 ID。如要查看機構 ID,請執行gcloud organizations list。CUSTOMER_ID:Google Workspace 目錄客戶 ID。如要查看 ID,請執行gcloud organizations list。PREFIX:要附加至已部署專案和資源名稱的前置字串。專案名稱必須是全域不重複的名稱,且前置字元不得超過六個。如果專案名稱重複,就會發生 409 錯誤。ALLOWED_POLICY_MEMBER_DOMAINS:視需要更新其他顧客 ID。詳情請參閱「透過網域限制分享功能,限制身分」。COMPLIANCE_REGIME:這個環境的法規遵循制度,可以是IL4、IL5、FEDRAMP_HIGH和COMPLIANCE_REGIME_UNSPECIFIED。如不想使用 Assured Workloads,請將這個值設為COMPLIANCE_REGIME_UNSPECIFIED。LOCATION:要部署資源的美國區域。不支援雙區域,例如NAM9或洲。BOOTSTRAP_PROJECT_ID:您在「設定 Google Cloud」中建立的啟動專案 ID。ALERT_EMAIL:用來接收記錄快訊通知的電子郵件地址。
執行
terraform init。執行
terraform apply:terraform apply -var bootstrap_user=$(gcloud config list --format 'value(core.account)')在系統提示時輸入
yes。切換至新專案:
gcloud config set project PREFIX-prod-iac-core-0複製新的本機 Terraform 供應商檔案:
gcloud storage cp gs://PREFIX-prod-iac-core-outputs-0/providers/0-bootstrap-providers.tf ./將狀態從本機遷移至遠端:
terraform init --migrate-state在系統提示時輸入
yes。執行
./import.sh。再次執行
terraform apply。在系統提示時輸入yes。
執行第 1 階段:資源管理
第 1 階段會在機構層級建立不同的資料夾、專案和服務帳戶,供後續階段使用。如要建立環境,您必須更新 fast/stages-aw/1-resman 中的 terraform.tfvars 檔案,加入 tenants 變數。每個租戶 (例如特定聯邦機構或內部開發群組) 都有專屬的獨立邊界,可執行工作負載。每個租戶都會沿用在第 0 階段和第 2 階段建立的集中式安全控管、網路邊界、政策護欄和稽核記錄接收器。
如果使用外部帳單帳戶,請參閱「使用外部帳單帳戶時設定帳單」。
將目錄變更為
fast/stages-aw/1-resman。複製
terraform.tfvars.sample檔案:cp terraform.tfvars.sample terraform.tfvars按照下列方式更新
terraform.tfvars:tenants = { ten-1 = { admin_principal = "group:gcp-devops@DOMAIN" descriptive_name = "TENANT_ONE_NAME" locations = { gcs = "REGION" kms = "REGION" } }, ten-2 = { admin_principal = "group:gcp-devops@DOMAIN" descriptive_name = "TENANT_TWO_NAME" locations = { gcs = "REGION" kms = "REGION" } } } fast_features = { envs = true } envs_folders = { Prod = { admin = "gcp-organization-admins@DOMAIN" }, Int = { admin = "gcp-organization-admins@DOMAIN" }, Test = { admin = "gcp-organization-admins@DOMAIN" } }更改下列內容:
DOMAIN:主要完整網域名稱 (FQDN)。如要查看 FQDN,請執行gcloud organizations list。TENANT_ONE_NAME:部署的第一個房客專案名稱。最多只能使用六個字元。REGION:部署資源的主要區域。IL5 和 FedRAMP 的預設值為us-east4。TENANT_TWO_NAME:部署的第二個房客專案名稱。最多只能使用六個字元。
視需要新增任意數量的租戶定義。
從 Cloud Storage 複製
tfvars檔案:gcloud storage cp gs://PREFIX-prod-iac-core-outputs-0/providers/1-resman-providers.tf ./ && gcloud storage cp gs://PREFIX-prod-iac-core-outputs-0/tfvars/0-globals.auto.tfvars.json ./ && gcloud storage cp gs://PREFIX-prod-iac-core-outputs-0/tfvars/0-bootstrap.auto.tfvars.json ./執行
terraform init。執行
terraform apply。 在系統提示時輸入yes。
執行第 2 階段:建立網路
第 2 階段包含兩種網路選項:FedRAMP 高等風險和 IL4 或 IL5。
設定 FedRAMP 高影響等級網路
如果使用外部帳單帳戶,請參閱「使用外部帳單帳戶時設定帳單」。
從 Cloud Storage bucket 複製供應商和全域 tfvars 檔案:
gcloud storage cp gs://PREFIX-prod-iac-core-outputs-0/providers/2-networking-providers.tf ./ && \ gcloud storage cp gs://PREFIX-prod-iac-core-outputs-0/tfvars/0-globals.auto.tfvars.json ./ && \ gcloud storage cp gs://PREFIX-prod-iac-core-outputs-0/tfvars/0-bootstrap.auto.tfvars.json ./ && \ gcloud storage cp gs://PREFIX-prod-iac-core-outputs-0/tfvars/1-resman.auto.tfvars.json ./複製
terraform.tfvars.sample檔案:cp terraform.tfvars.sample terraform.tfvars在
terraform.tfvars檔案中,更新自訂子網路、Proxy 子網路、防火牆規則、具名 CIDR 和 DNS 回應政策規則。執行
terraform init。執行
terraform apply。 在系統提示時輸入yes。
設定 IL4 或 IL5 的網路
這個步驟會在網路帳戶中部署一對 Palo Alto VM 系列新一代防火牆 (NGFW)。NGFW 會使用「自備授權」(BYOL) 部署映像檔,您必須使用 Palo Alto 控制台上傳 VM 程式碼並註冊。如需更多操作說明,請參閱 2-networking-b-il5-ngfw 階段資料夾中的 README。
如果使用外部帳單帳戶,請參閱「使用外部帳單帳戶時設定帳單」。
從 Cloud Storage bucket 複製供應商和全域 tfvars 檔案:
gcloud storage cp gs://PREFIX-prod-iac-core-outputs-0/providers/2-networking-providers.tf ./ && \ gcloud storage cp gs://PREFIX-prod-iac-core-outputs-0/tfvars/0-globals.auto.tfvars.json ./ && \ gcloud storage cp gs://PREFIX-prod-iac-core-outputs-0/tfvars/0-bootstrap.auto.tfvars.json ./ && \ gcloud storage cp gs://PREFIX-prod-iac-core-outputs-0/tfvars/1-resman.auto.tfvars.json ./複製
terraform.tfvars.sample檔案:cp terraform.tfvars.sample terraform.tfvars在
terraform.tfvars檔案中,更新自訂子網路 (包括管理子網路)、Proxy 子網路、防火牆規則、具名 CIDR 和 DNS 回應政策規則。執行
terraform init。執行
terraform apply。 在系統提示時輸入yes。如果收到服務帳戶或 Cloud Key Management Service 不存在的錯誤訊息,請在控制台中按一下
PREFIX-net-vdss-host儲存空間帳戶中的「設定」。系統會產生服務帳戶。
執行第 3 階段:安全性和稽核帳戶設定
階段 3 會設定安全性和稽核專案。安全專案 (prod-sec-core-0) 包含 Cloud KMS,且可包含 Secret Manager。在 IL5 中,Compute Engine、Google Kubernetes Engine (GKE)、Cloud Storage 和 Cloud SQL 預設會啟用 CMEK。系統會強制執行下列組織政策限制:
gcp.restrictNonCmekServices:denied_values: "compute.googleapis.com"denied_values: "container.googleapis.com"denied_values: "storage.googleapis.com"denied_values: "sqladmin.googleapis.com"
gcp.restrictCmekCryptoKeyProjects:gcp.restrictCmekCryptoKeyProjects包含可使用 CMEK 的專案清單。
在 prod-sec-core-0 專案中,系統會設定下列項目:
- 系統會授予 Cloud KMS 受限管理員受限管理員角色,方便他們將解密權限授予其他服務。
- 系統會佈建不同位置的 Cloud KMS 金鑰環。鑰匙圈位置必須與服務位置相符。舉例來說,多區域金鑰環無法用於單一區域的儲存空間值區。
稽核專案包含稽核記錄的記錄儲存區。
安全性管理員負責安全性專案,稽核人員則負責稽核專案。
如果使用外部帳單帳戶,請參閱「使用外部帳單帳戶時設定帳單」。
將目錄變更為
fast/stages-aw/3-security。從 Cloud Storage bucket 複製設定檔:
gcloud storage cp gs://PREFIX-prod-iac-core-outputs-0/providers/3-security-providers.tf ./ && gcloud storage cp gs://PREFIX-prod-iac-core-outputs-0/tfvars/0-globals.auto.tfvars.json ./ && gcloud storage cp gs://PREFIX-prod-iac-core-outputs-0/tfvars/0-bootstrap.auto.tfvars.json ./ && gcloud storage cp gs://PREFIX-prod-iac-core-outputs-0/tfvars/1-resman.auto.tfvars.json ./執行
terraform init。執行
terraform apply。 在系統提示時輸入yes。如果服務帳戶發生問題,請重新執行
terraform apply。執行
./sa_lockdown.sh,停用部署期間使用的服務帳戶。
使用外部帳單帳戶時設定帳單
如果您使用外部帳單帳戶,必須將「帳單帳戶管理員」角色新增至下列服務帳戶:
PREFIX-prod-resman-0@PREFIX-prod-iac-core-0.iam.gserviceaccount.com:這個帳戶是在第 0 階段建立。PREFIX-prod-resman-net-0@PREFIX-prod-iac-core-0.iam.gserviceaccount.com:這個服務帳戶是在第 1 階段建立。PREFIX-security-0@PREFIX-prod-iac-core-0.iam.gserviceaccount.com:這個服務帳戶是在第 2 階段建立。
如要將角色新增至這些服務帳戶,請完成「存取 Cloud Billing 帳戶的「權限」面板」和「在「權限」面板中更新角色和主體」步驟。
修改租戶專案
為現有的 Stellar Engine 部署項目新增或移除房客專案時,請按照下列步驟操作。
驗證並設定有效專案:
gcloud auth login gcloud config set project PREFIX-prod-iac-core-0 gcloud auth application-default login為各階段啟用服務帳戶:
將目錄變更為
fast/stages-aw/3-security。執行
./sa_lockdown.sh --enable。
申請第 1 階段:
將目錄變更為
fast/stages-aw/1-resman。根據新規定更新
terraform.tfvars中的資訊。執行
terraform init。執行
terraform apply。 在系統提示時輸入yes。
套用第 2 階段:
將目錄變更為下列其中一個網路資料夾:
從 Cloud Storage bucket 複製
1-resmantfvars 檔案:
gcloud storage cp gs://PREFIX-prod-iac-core-outputs-0/tfvars/1-resman.auto.tfvars.json ./執行
terraform init。執行
terraform apply。 在系統提示時輸入yes。
停用各階段的服務帳戶:
將目錄變更為
fast/stages-aw/3-security。執行
./sa_lockdown.sh。
疑難排解
本節說明一些常見錯誤和解決方法。
第 1 階段發生 BigQuery 無法使用錯誤
如果收到錯誤訊息,指出 bigquery.googleapis.com 無法在 Assured Workloads 中使用,請完成下列步驟:
前往控制台的「Assured Workloads」頁面。
選取
StellarEngine-COMPLIANCE_REGIME資料夾和「Networking」資料夾 (如有)。按一下「查看可用更新」。
前往「允許的服務」。
按一下「允許服務」,新增 BigQuery API。
如果系統提示,請按一下「是」確認所選項目。
等待約兩分鐘,然後重新執行
terraform apply:terraform apply -var bootstrap_user=$(gcloud config list --format 'value(core.account)')在系統提示時輸入
yes。
啟動專案無法再存取帳單帳戶
如果啟動專案無法存取帳單帳戶,請重新啟用啟動專案的計費功能。
Cloud KMS 金鑰錯誤
如果建構程序過程中發生金鑰錯誤,您可能必須手動啟用金鑰。如需操作說明,請參閱「啟用金鑰版本」。
如果收到這些錯誤,請稍候約一分鐘,然後重新執行 terraform apply。
符號連結無法在 Windows 電腦上運作
在 Windows 電腦上,符號連結可能無法運作。您可能需要手動複製特定檔案,特別是第 2 階段的 psc.tf 和 log-metric-alerts.tf。
帳單或配額問題
如果遇到帳單或配額問題,請確認配額專案是否已設定。執行下列指令即可設定:
gcloud auth application-default set-quota-project PREFIX-prod-iac-core-0
您也可以視需要使用其他專案。
後續步驟
如需其他安全性設定,請參閱 Gemini 安全性標準。
整合 Google Security Operations 等 SIEM 解決方案,監控資源。將 SIEM 分隔到不同的專案和虛擬私有雲,與收集資料的位置分開。 Google Cloud