プロジェクトのストレージ WORM バケットを作成する

このページでは、Google Distributed Cloud(GDC)エアギャップ ストレージ WORM バケットを作成する方法について説明します。

始める前に

ストレージ バケットは、特定のプロジェクトを対象とするリソースです。プロジェクトはコンテナとして機能し、バケットをグループ化して、Management API サーバーを介して管理できるようにします。このページで操作を行う前に、新しいプロジェクトを作成するか、十分な権限を持つ既存のプロジェクトを選択する必要があります。

必要な IAM のロール

IAM プロジェクト管理者に連絡して、プロジェクトの名前空間で次のロールをリクエストします。

  • バケット プロジェクト管理者(project-bucket-admin): ストレージ バケットを作成、更新、削除します。
  • バケット オブジェクト プロジェクト閲覧者(project-bucket-object-viewer): ストレージ バケットとオブジェクトの詳細を表示して確認します。

詳細については、バケットへのアクセス権を付与するをご覧ください。

環境を準備する

Management API サーバーまたはグローバル API サーバーに対してコマンドを実行するには、次の操作を行います。

  1. ゾーン管理 API サーバーの kubeconfig ファイルがない場合は、ログインして生成します。
  2. デュアルゾーン バケットの場合は、次の操作を行います。
    • ペア設定されたゾーンに BucketLocationConfig カスタム リソースが作成されていることをインフラストラクチャ オペレーター(IO)に確認します。
    • グローバル API サーバーの kubeconfig ファイルを生成します。

WORM バケットを作成する

WORM バケットを使用すると、オブジェクトが上書きされることがなく、最小期間保持されます。監査ロギングは、WORM バケットのユースケースの一例です。

WORM バケットを作成する手順は次のとおりです。

  1. バケットの作成時に保持期間を設定します。保持期間は、各オブジェクト バージョンが削除または変更からロックされる日数を定義します。この保持期間は、ストレージ クラスの最小保存期間(Standard ストレージ クラスの最小 30 日など)とは異なります。たとえば、次のバケットでは保持期間が 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 ロールを付与します。

    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