建立儲存空間值區

本頁說明如何為 Google Distributed Cloud (GDC) 實體隔離專案建立儲存空間值區。內容包括先決條件、建立和驗證步驟,以及命名規範。這有助於建立符合規定且設定完善的物件儲存空間,滿足隔離部署作業的需求。

本頁面適用於基礎架構營運商群組的 IT 管理員,或應用程式營運商群組的開發人員。這些對象希望在 GDC 無氣隙環境中,為專案佈建及管理物件儲存空間值區。詳情請參閱 GDC air-gapped 的目標對象說明文件

事前準備

專案命名空間可管理 Management API 伺服器中的 bucket 資源。您必須擁有專案,才能使用 bucket 和物件。

您也必須具備適當的 bucket 權限,才能執行下列作業。請參閱「授予 bucket 存取權」。

Storage 值區命名規範

值區名稱必須遵循下列命名慣例:

  • 在專案中不得重複。專案會在 bucket 名稱中附加不重複的前置字元,確保機構內不會發生衝突。萬一發生前置字串和 bucket 名稱在不同機構之間衝突的情況,bucket 建立作業會失敗,並顯示「bucket 名稱已在使用中」錯誤。
  • 請勿加入任何個人識別資訊 (PII)。
  • 符合 DNS 規定。
  • 至少 1 個字元,最多 55 個字元。
  • 開頭須為英文字母,且只能使用英文字母、數字和連字號。

建立值區

控制台

  1. 在導覽選單中,按一下「物件儲存空間」
  2. 按一下「建立值區」
  3. 在建立 bucket 的流程中,指派的名稱不得與專案中任何 bucket 的名稱重複。
  4. 輸入說明。
  5. 選用:按一下 toggle_off 切換鈕,設定保留政策並輸入偏好的天數。如要超出保留政策限制,請與 IO 聯絡。
  6. 按一下「建立」,系統會顯示成功訊息,並將您導回「Buckets」(值區) 頁面。

如要確認是否已成功建立新值區,請稍候幾分鐘,然後重新整理「值區」頁面,並檢查值區狀態是否從 Not ready 更新為 Ready

CLI

如要建立 bucket,請將 bucket 規格套用至專案命名空間:

kubectl apply -f bucket.yaml

以下是 bucket 規格的範例:

apiVersion: object.gdc.goog/v1
kind: Bucket
metadata:
  name: BUCKET_NAME
  namespace: NAMESPACE_NAME
spec:
  description: DESCRIPTION
  storageClass: Standard
  bucketPolicy:
    lockingPolicy:
      defaultObjectRetentionDays: RETENTION_DAY_COUNT

以下是加密版本為 v1 的 bucket 規格範例:

apiVersion: object.gdc.goog/v1
kind: Bucket
metadata:
  name: BUCKET_NAME
  namespace: NAMESPACE_NAME
  labels:
    object.gdc.goog/encryption-version: v1
spec:
  description: DESCRIPTION
  storageClass: Standard
  bucketPolicy:
    lockingPolicy:
      defaultObjectRetentionDays: RETENTION_DAY_COUNT

詳情請參閱 Bucket API 參考資料

以下是 org-admin 全域 API 中的雙區域值區範例:

apiVersion: object.global.gdc.goog/v1
kind: Bucket
metadata:
  name: BUCKET_NAME
  namespace: PROJECT_NAME
spec:
  location: LOCATION_NAME
  description: Sample DZ Bucket
  storageClass: Standard

請注意,雙區域值區僅支援 V2 加密,且建立、更新或刪除雙區域值區資源的所有作業,都必須透過全域 API 伺服器執行。

gdcloud

如要使用 gdcloud 建立 bucket,請按照 gdcloud storage buckets create 操作。

建立 bucket 後,您可以執行下列指令來確認並檢查 bucket 的詳細資料:

kubectl describe buckets BUCKET_NAME -n NAMESPACE_NAME

「狀態」部分有兩個重要欄位:「加密」 (加密詳細資料) 和「完整名稱」 (包含 FULLY_QUALIFIED_BUCKET_NAME)。

加密第 1 版

這項資訊與名為 obj-FULLY_QUALIFIED_BUCKET_NAME 的 AEADKey 有關,這個金鑰會做為加密金鑰的參照,用來加密儲存在 bucket 中的物件。範例如下:

Status:
  Encryption:
    Key Ref:
      Kind: AEADKey
      Name: obj-FULLY_QUALIFIED_BUCKET_NAME
      Namespace: NAMESPACE_NAME
    Type: CMEK

加密 v2

這項資訊與名為「kek-ref-FULLY_QUALIFIED_BUCKET_NAME」的 Secret 相關,該 Secret 可做為有效預設 AEADKey 的參照。如果未指定特定 AEADKey,系統會從有效的預設 AEADKey 中隨機選取,用於加密上傳至值區的物件。

範例如下:

Status:
  Encryption:
    Key Ref:
      Kind: Secret
      Name: kek-ref-FULLY_QUALIFIED_BUCKET_NAME
      Namespace: NAMESPACE_NAME
    Type: CMEK

您也可以執行下列指令,確認已建立必要的 AEADKeys:

kubectl get aeadkeys -n NAMESPACE_NAME -l  cmek.security.gdc.goog/resource-name=FULLY_QUALIFIED_BUCKET_NAME

建立 bucket 後,您可以建立政策檔案並指派給 bucket,藉此代表應用程式運算子 (AO) 管理 bucket 存取權。