準備環境

建立 Image Builder 管道前,請先準備 Cloud de Confiance 環境。如要準備環境,請完成下列工作:

事前準備

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

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

    控制台

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

    gcloud

    1. 安裝 Google Cloud CLI,然後 使用聯合身分登入 gcloud CLI。登入後,執行下列指令來初始化 Google Cloud CLI:

      gcloud init
  • 設定預設地區和區域
  • REST

    如要在本機開發環境中使用本頁的 REST API 範例,請使用您提供給 gcloud CLI 的憑證。

      安裝 Google Cloud CLI,然後 使用聯合身分登入 gcloud CLI

    詳情請參閱 Cloud de Confiance 驗證說明文件中的「使用 REST 進行驗證」。

必要的角色

如要取得準備環境所需的權限,請要求管理員在專案中授予您下列 IAM 角色:

如要進一步瞭解如何授予角色,請參閱「管理專案、資料夾和組織的存取權」。

您或許也能透過自訂角色或其他預先定義的角色,取得必要權限。

新手上路要求

Image Builder 已正式發布,並提供許可清單。如要為映像檔自訂管道啟用 Cloud de Confiance 專案,請提交存取權要求表單,或與 Cloud de Confiance 帳戶團隊聯絡。

啟用 API

您必須啟用 Compute Engine、Cloud Build、Artifact Registry、服務使用情形和 Resource Manager API,才能使用 Image Builder。如要使用 Cloud de Confiance 控制台或 Google Cloud CLI 啟用 API,請選取下列其中一個分頁標籤:

控制台

啟用 Compute Engine、Cloud Build、Artifact Registry、服務使用情形 和 Cloud Resource Manager API。

啟用 API 時所需的角色

如要啟用 API,您必須具備 serviceusage.services.enable 權限。如果您建立了專案,可能已透過「擁有者」角色 (roles/owner) 取得這項權限。否則,您可以透過「服務使用情形管理員」角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色

啟用 API

gcloud

啟用 Compute Engine、Cloud Build、Artifact Registry、服務使用情形和 Cloud Resource Manager API:

啟用 API 時所需的角色

如要啟用 API,您必須具備 serviceusage.services.enable 權限。如果您建立了專案,可能已透過「擁有者」角色 (roles/owner) 取得這項權限。否則,您可以透過「服務使用情形管理員」角色 (roles/serviceusage.serviceUsageAdmin) 取得這項權限。瞭解如何授予角色

gcloud services enable compute.googleapis.com cloudbuild.googleapis.com artifactregistry.googleapis.com serviceusage.googleapis.com cloudresourcemanager.googleapis.com

設定 Image Builder 服務帳戶

Image Builder 編排器會使用使用者代管的服務帳戶執行。執行映像檔建構管道時,Cloud Build 會將這個服務帳戶附加至臨時 worker VM 和測試 VM 執行個體,以執行自訂和驗證動作。這個服務帳戶必須具備下列角色:

  • Compute 管理員 (roles/compute.admin):管理 VM 執行個體、永久磁碟和客體 OS 映像檔。
  • 服務帳戶使用者 (roles/iam.serviceAccountUser):允許 Cloud Build 將服務帳戶附加至暫時性工作站和測試 VM 執行個體。
  • 儲存空間管理員 (roles/storage.admin):在 Cloud Storage workdir 暫存 bucket 中讀取及寫入暫時的建構構件和記錄。
  • 記錄記錄寫入者 (roles/logging.logWriter):將執行記錄寫入 Cloud Logging。
  • 服務使用情形檢視者 (roles/serviceusage.serviceUsageViewer):在管道執行期間檢查專案服務狀態。
  • Cloud Build 編輯者 (roles/cloudbuild.builds.editor):觸發及執行 Cloud Build 工作,並匯出映像檔。
  • (選用) Artifact Registry 管理員 (roles/artifactregistry.admin): 將產生的 OS 映像檔 tar 檔案上傳至 Artifact Registry。

您可以使用現有的服務帳戶,也可以為建構管道建立新的專屬服務帳戶。如要建立新的專屬服務帳戶,並使用 Cloud de Confiance 控制台或 gcloud CLI 授予必要角色,請選取下列其中一個分頁標籤:

控制台

    確認您具備「建立服務帳戶」身分與存取權管理角色 (roles/iam.serviceAccountCreator) 和「專案身分與存取權管理員」角色 (roles/resourcemanager.projectIamAdmin)。瞭解如何授予 角色
  1. 前往 Cloud de Confiance 控制台的「Create service account」(建立服務帳戶) 頁面。

    前往「建立服務帳戶」
  2. 選取專案。
  3. 在「Service account name」(服務帳戶名稱) 欄位中輸入名稱。 Cloud de Confiance 控制台會將這個名稱填入「Service account ID」(服務帳戶 ID) 欄位。

    在「Service account description」(服務帳戶說明) 欄位中輸入說明。例如:Service account for quickstart

  4. 按一下「建立並繼續」
  5. 將下列角色授予服務帳戶: 「Compute Engine」>「Compute Admin」(Compute 管理員)、「Service Accounts」>「Service Account User」(服務帳戶使用者)、「Cloud Storage」>「Storage Admin」(Storage 管理員)、「Cloud Logging」>「Logs Writer」(記錄檔寫入者)、「Service Usage」>「Service Usage Viewer」(服務用量檢視者)、「Cloud Build」>「Cloud Build Editor」(Cloud Build 編輯者)、「Artifact Registry」>「Artifact Registry Admin」(Artifact Registry 管理員)

    如要授予角色,請找出「Select a role」(選取角色) 清單,然後選取角色。

    如要授予其他角色,請按一下「Add another role」(新增其他角色),然後新增其他角色。

  6. 按一下 [繼續]
  7. 在「Service account users role」(服務帳戶使用者角色) 欄位中,輸入要將服務帳戶附加至其他資源 (例如 Compute Engine 執行個體) 的主體 ID。

    這通常是指員工身分集區中使用者的 ID。詳情請參閱「 在 IAM 政策中代表工作團隊集區使用者」。

  8. 按一下「Done」(完成),即完成建立服務帳戶。

gcloud

  1. 為建構管道建立服務帳戶:

    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME \
        --display-name="Image Builder Service Account"
    
  2. 將必要角色 (roles/compute.adminroles/iam.serviceAccountUserroles/storage.adminroles/logging.logWriterroles/serviceusage.serviceUsageViewerroles/cloudbuild.builds.editor) 授予服務帳戶:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \
        --role="roles/compute.admin"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \
        --role="roles/iam.serviceAccountUser"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \
        --role="roles/storage.admin"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \
        --role="roles/logging.logWriter"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \
        --role="roles/serviceusage.serviceUsageViewer"
    
    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \
        --role="roles/cloudbuild.builds.editor"
    
  3. 選用:將選用角色 (roles/artifactregistry.admin) 授予服務帳戶:

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:SERVICE_ACCOUNT_EMAIL" \
        --role="roles/artifactregistry.admin"
    

更改下列內容:

  • SERVICE_ACCOUNT_NAME:要建立的建構服務帳戶名稱。例如:custom-builder-sa
  • PROJECT_ID:您的 Cloud de Confiance 專案 ID。
  • SERVICE_ACCOUNT_EMAIL:建構服務帳戶的電子郵件地址。

設定可信映像檔機構政策

由於 Image Builder 在執行建構作業時,會在內部使用標準的 Compute Engine 映像檔匯入和匯出工具,因此專案的信任映像檔政策 (compute.trustedImageProjects) 必須明確允許來自下列專案的映像檔:

  • projects/compute-image-import

如果機構政策限制這個專案,映像檔匯出階段就會失敗。

如要更新機構政策,請按照下列步驟操作:

  1. compute.trustedImageProjects 限制的組織政策中,將 projects/compute-image-import 新增至允許的發布商清單。
  2. 如需設定組織政策限制的詳細操作說明,請參閱「設定可信映像檔政策」和「將自訂映像檔匯出至 Cloud Storage」。

設定虛擬私有雲網路和存取權需求

在建構和驗證階段,Image Builder 會在 Cloud de Confiance 專案中佈建臨時工作站和測試 VM。根據預設,Image Builder 會將執行個體連線至 default 虛擬私有雲網路,並指派暫時性外部 IP 位址。

如果您指定自訂 networksubnetwork,或在 imagebuilder.yaml 配方檔案中設定 externalIP: none

  • 私人 Google 存取權和 Cloud NAT:如果工作站或測試 VM 設定為 externalIP: none (沒有外部 IP),VPC 子網路必須啟用私人 Google 存取權,執行個體才能存取 Google API 和服務 (例如 Cloud Storage 和 Artifact Registry)。如果自訂步驟會從外部網際網路存放區下載 OS 套件或依附元件,您也必須在子網路上設定 Cloud NAT
  • 防火牆規則:請確認虛擬私有雲防火牆規則允許輸出流量流向 Google API 和必要軟體存放區。如果您打算連線至作用中的工作站 VM,進行互動式偵錯 (debug: true),請確認防火牆規則允許 TCP 通訊埠 22 的輸入流量。如果 VM 執行個體沒有外部 IP,請允許從 Identity-Aware Proxy (IAP) IP 範圍 35.235.240.0/20 輸入 TCP 轉送

設定 Artifact Registry

如要儲存及管理自訂 OS 映像檔、安全性中繼資料和 SLSA 建構出處認證,您必須在 Artifact Registry 中設定一般存放區。將映像檔儲存在 Artifact Registry 中,可確保發布的映像檔安全無虞,且記錄不會變更。

設定 Artifact Registry 目的地時,Image Builder 會執行下列步驟:

  • 將最終 VM 開機磁碟匯出為標準 tar 檔案 (.tar.gz)。
  • 將 tar 檔案上傳至 Artifact Registry 中的一般存放區。
  • 為構件產生並簽署 SLSA 建構作業來源資訊驗證,將構件連結至來源中繼資料。
  • 使用 Artifact Registry TAR 檔案 URI 做為範本來源,向 Compute Engine 註冊可供正式環境使用的 Compute Engine 映像檔。

如要設定一般 Artifact Registry,請完成下列工作:

  1. 確認用於執行 Image Builder 管道的服務帳戶在存放區或專案層級,具有「Artifact Registry 管理員」角色 (roles/artifactregistry.admin)。如需詳細操作說明,請參閱設定 Image Builder 服務帳戶

  2. 建立 generic 格式的存放區。如要建立存放區,請執行 gcloud artifacts repositories create 指令

    gcloud artifacts repositories create REPOSITORY_NAME \
        --repository-format=generic \
        --location=REPOSITORY_LOCATION
    

    替換下列預留位置:

    • REPOSITORY_NAME:一般存放區的名稱。例如:custom-os-images
    • REPOSITORY_LOCATION:支援的地區。例如:us-central1

後續步驟