ストレージ バケットを作成する

このページでは、Google Distributed Cloud(GDC)エアギャップ プロジェクトのストレージ バケットを作成する方法について説明します。前提条件、作成と検証の手順、命名ガイドラインについて説明します。これにより、分離されたデプロイのニーズを満たす、準拠した適切に構成されたオブジェクト ストレージを確立できます。

このページは、GDC のエアギャップ環境内のプロジェクト用にオブジェクト ストレージ バケットのプロビジョニングと管理を検討している、インフラストラクチャ オペレーター グループの IT 管理者やアプリケーション オペレーター グループのデベロッパーなどのユーザーを対象としています。詳細については、GDC エアギャップの対象読者に関するドキュメントをご覧ください。

始める前に

プロジェクト名前空間は、Management API サーバーのバケット リソースを管理します。バケットとオブジェクトを操作するには、プロジェクトが必要です。

次のオペレーションを実行するには、適切なバケット権限も必要です。バケットへのアクセス権を付与するをご覧ください。

ストレージ バケットの命名ガイドライン

バケット名は次の命名規則に準拠する必要があります。

  • プロジェクト内で一意であること。プロジェクトはバケット名に一意の接頭辞を追加し、組織内で競合が発生しないようにします。組織間で接頭辞とバケット名が競合する可能性は低いですが、競合した場合は「バケット名が使用中」というエラーでバケットの作成が失敗します。
  • 個人を特定できる情報(PII)は含めないでください。
  • DNS に準拠している。
  • 1 ~ 55 文字で入力してください。
  • 先頭を英字にし、英字、数字、ハイフンのみを使用します。

バケットの作成

コンソール

  1. ナビゲーション メニューで、[オブジェクト ストレージ] をクリックします。
  2. [バケットを作成] をクリックします。
  3. バケット作成フローで、プロジェクト内のすべてのバケットで一意の名前を割り当てます。
  4. 内容を入力してください。
  5. 省略可: [toggle_off] 切り替えをクリックして保持ポリシーを設定し、希望する日数を入力します。保持ポリシーの上限を超える必要がある場合は、IO にお問い合わせください。
  6. [作成] をクリックします。成功メッセージが表示され、[バケット] ページに戻ります。

新しいバケットが正常に作成されたことを確認するには、数分後に [バケット] ページを更新し、バケットの状態が Not ready から Ready に更新されていることを確認します。

CLI

バケットを作成するには、バケット仕様をプロジェクトの Namespace に適用します。

kubectl apply -f bucket.yaml

バケット仕様の例を次に示します。

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 のバケット仕様を示しています。

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

詳細については、バケット 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 でバケットを作成するには、gdcloud storage buckets create をご覧ください。

バケットが作成されたら、次のコマンドを実行してバケットの詳細を確認できます。

kubectl describe buckets BUCKET_NAME -n NAMESPACE_NAME

[ステータス] セクションには、[暗号化](暗号化の詳細)と [完全修飾名](FULLY_QUALIFIED_BUCKET_NAME を含む)という 2 つの重要なフィールドがあります。

暗号化 v1

この情報は、obj-FULLY_QUALIFIED_BUCKET_NAME という名前の AEADKey に関するものです。これは、バケット内に保存されたオブジェクトの暗号化に使用される暗号鍵への参照として機能します。以下に例を示します。

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

暗号化 v2

この情報は、アクティブなデフォルトの AEADKey の参照として機能する kek-ref-FULLY_QUALIFIED_BUCKET_NAME という名前の Secret に関連しています。アクティブなデフォルトの AEADKey は、特定の AEADKey が指定されていない場合にバケットにアップロードされるオブジェクトを暗号化するために、ランダムに選択されます。

以下に例を示します。

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

次のコマンドを実行して、必要な AEADKey が作成されていることを確認することもできます。

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

バケットを作成したら、バケット アクセス権を付与するときにポリシー ファイルを作成し、そのポリシーをバケットに割り当てることで、アプリケーション オペレーター(AO)に代わってバケットを管理できます。