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

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

始める前に

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

必要な IAM のロール

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

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

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

環境を準備する

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

  1. ログインして生成します。ゾーン管理 API サーバーの kubeconfig ファイルがない場合は、
  2. デュアルゾーン バケットの場合は、次の操作を行います。

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