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

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

시작하기 전에

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

필요한 IAM 역할

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

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

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

개발 환경 준비

Management API 서버 또는 Global API 서버에 대해 명령어를 실행하려면 다음을 수행합니다.

  1. kubeconfig 파일이 없는 경우 영역 관리 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