为项目创建存储 WORM 存储分区

本页面介绍了如何创建 Google Distributed Cloud (GDC) 网闸隔离配置存储 WORM 存储桶。

准备工作

存储桶是限定于特定项目的资源。项目充当容器,对存储桶进行分组,并支持通过 Management API 服务器对其进行管理。您必须先创建一个新项目,或选择一个您拥有足够权限的现有项目,然后才能执行本页面上的操作。

所需 IAM 角色

请与您的 IAM 项目管理员联系,请求在项目命名空间中授予以下角色:

  • Bucket Project Admin (project-bucket-admin):创建、更新和删除存储桶。
  • Bucket Object Project Viewer (project-bucket-object-viewer):查看和检查存储桶和对象的详细信息。

如需了解详情,请参阅授予存储桶访问权限。

准备环境

如需针对管理 API 服务器或全局 API 服务器运行命令,请执行以下操作:

  1. 如果您没有可用区级管理 API 服务器的 kubeconfig 文件,请登录并生成该文件。
  2. 对于双可用区存储桶,请执行以下操作:
    • 请与您的基础架构运维人员 (IO) 确认,是否已为您的配对可用区创建 BucketLocationConfig 自定义资源。
    • 为全局 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