프로젝트용 스토리지 WORM 버킷 만들기

이 페이지에서는 Google Distributed Cloud (GDC) 에어 갭 스토리지 WORM 버킷을 만드는 방법을 보여줍니다.

시작하기 전에

스토리지 버킷은 특정 프로젝트의 범위가 지정된 리소스입니다. 프로젝트는 컨테이너 역할을 하며 버킷을 그룹화하고 Management API 서버를 통해 버킷을 관리할 수 있도록 합니다. 이 페이지에서 작업을 수행하려면 새 프로젝트를 만들거나 충분한 권한이 있는 기존 프로젝트를 선택해야 합니다.

필요한 IAM 역할

IAM 프로젝트 관리자에게 문의하여 프로젝트 네임스페이스에서 다음 역할을 요청하세요.

  • 프로젝트 버킷 관리자 (project-bucket-admin): 스토리지 버킷을 만들고, 업데이트하고, 삭제합니다.
  • 프로젝트 버킷 객체 뷰어 (project-bucket-object-viewer): 스토리지 버킷 및 객체의 세부정보를 보고 확인합니다.

자세한 내용은 버킷 액세스 권한 부여를 참고하세요.

개발 환경 준비

관리 API 서버 또는 전역 API 서버에 대해 명령어를 실행하려면 다음 단계를 따르세요.

  1. 로그인하고 생성합니다. 영역 관리 API 서버의 kubeconfig 파일이 없는 경우 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