建立儲存空間 WORM bucket

本頁面將引導您在 Google Distributed Cloud (GDC) 實體隔離環境中,建立一次寫入、多次讀取 (WORM) 儲存空間 bucket。包括建立 WORM bucket 的必要條件和步驟、定義保留期限,以及使用角色繫結授予存取權限。這項資訊可讓您強制執行嚴格的資料保留做法和不可變性,為記錄和稽核記錄等用途提供強大且符合法規的資料儲存庫。

本頁面適用於基礎架構營運商群組中的 IT 管理員,或應用程式營運商群組中的開發人員,他們負責管理 GDC 實體隔離方案中儲存 bucket 的資料保留和法規遵循設定。詳情請參閱「GDC 實體隔離方案說明文件的目標對象」。

事前準備

Storage bucket 是特定專案範圍內的資源。專案就像容器,可將 bucket 分組,並透過 Management API 伺服器管理。您必須先建立新專案,或選取具備足夠權限的現有專案,才能執行這個頁面的作業。

必要的 IAM 角色

請與 IAM 專案管理員聯絡,要求在專案命名空間中取得下列角色:

  • Bucket 專案管理員 (project-bucket-admin):建立、更新及刪除儲存空間 bucket。
  • Bucket 物件專案檢視者 (project-bucket-object-viewer):查看及檢查儲存空間 bucket 和物件的詳細資料。

詳情請參閱「授予 bucket 存取權」。

準備環境

如要對管理 API 伺服器或全域 API 伺服器執行指令,請按照下列步驟操作:

  1. 如果沒有可用檔案,請登入並產生可用於可用區 Management API 伺服器的 kubeconfig 檔案。
  2. 如果是雙可用區 bucket,請按照下列步驟操作:

建立 WORM bucket

WORM 值區可確保沒有其他項目會覆寫物件,並將物件保留一段時間。稽核記錄是 WORM bucket 的應用實例。

如要建立 WORM bucket,請按照下列步驟操作:

  1. 建立 bucket 時設定保留期限。保留期限定義了每個物件版本鎖定、防止刪除或修改的天數。這個保留期限與儲存空間級別的最短儲存時間不同 (例如 Standard 儲存空間級別的最短儲存時間為 30 天)。舉例來說,下列 bucket 設定的保留期限為 365 天。如需超過資料保留政策限制,請與基礎架構營運商 (IO) 聯絡。

    apiVersion: object.gdc.goog/v1
    kind: Bucket
    metadata:
      name: foo-logging-bucket
      namespace: foo-service
    spec:
      description: "Audit logs for foo"
      storageClass: Standard
      bucketPolicy:
        lockingPolicy:
          defaultObjectRetentionDays: 365
    
  2. 將 project-bucket-object-viewer 角色授予所有需要唯讀存取權的使用者:

    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      namespace: foo-service
      name: object-readonly-access
    roleRef:
      kind: Role
      name: project-bucket-object-viewer
      apiGroup: rbac.authorization.k8s.io
    subjects:
    - kind: ServiceAccount
      namespace: foo-service
      name: foo-log-processor
    - kind: User
      name: bob@example.com
      apiGroup: rbac.authorization.k8s.io
    
  3. 將 project-bucket-object-admin 角色授予需要將內容寫入 bucket 的使用者:

    apiVersion: rbac.authorization.k8s.io/v1
    kind: RoleBinding
    metadata:
      namespace: foo-service
      name: object-write-access
    roleRef:
      kind: Role
      name: project-bucket-object-admin
      apiGroup: rbac.authorization.k8s.io
    subjects:
    - kind: ServiceAccount
      namespace: foo-service
      name: foo-service-account