자동화된 파일 아카이빙 설정하고 잊어버리기
자동화된 파일 아카이빙 워크플로우를 설정하세요. 규칙을 정의하고 아카이빙을 예약하고 보존 정책 준수를 보장합니다.
자동화된 파일 아카이빙은 비활성 파일을 정해진 일정에 따라 핫 스토리지에서 콜드 티어로 이동시킵니다. 수동 작업 없이도 가능합니다. S3 Lifecycle 규칙, Azure Blob Lifecycle Management, GCS Object Lifecycle를 활용하면 "90일 동안 접근 없으면 Glacier Deep Archive로 이동, 7년 후 삭제(단, legal-hold 태그가 없는 경우)"와 같은 정책을 작성할 수 있습니다. 한 번 설정하고 1% 샘플로 테스트하면 스토리지 비용의 50~80%를 절감하면서 보존 규정(SOX 7년, HIPAA 6년, GDPR 데이터 최소화, 개인정보보호법(PIPA) 보유 기간 제한)을 준수할 수 있습니다.
트리거 선택: 기간, 접근 횟수, 태그
아카이빙 트리거에는 세 가지 방식이 주로 사용됩니다. 기간 기반 규칙(object.age > 90d)은 로그, 거래 내역, 이메일 내보내기처럼 시간이 지남에 따라 가치가 줄어드는 데이터에 적합하며 설정이 가장 단순합니다. 접근 기반 규칙(마지막 접근 타임스탬프를 추적하는 S3 Intelligent-Tiering)은 접근 패턴이 불규칙한 데이터셋에 더 유용합니다. 예를 들어 재무 감사 파일은 11개월 동안 휴면 상태였다가 12번째 달에 반드시 필요해질 수 있습니다.
태그 기반 규칙(tag retention-class = sox-7y)은 사람과 애플리케이션이 명시적으로 제어권을 갖습니다. 컴플라이언스 팀이 수집 시점에 retention-class: hipaa-6y 태그를 파일에 붙이면, 카테고리가 변경되어도 규칙을 수정하지 않고 라이프사이클 규칙이 적절히 아카이빙합니다. 세 방식을 조합하세요: 기본값은 기간 기반, 예외는 태그 기반으로 처리합니다.
YAML 또는 JSON으로 정책 작성
S3 라이프사이클 설정은 XML 또는 JSON, Azure는 JSON, GCS는 JSON을 사용합니다. 문서 저장소용 S3 규칙 예시:
{
"Rules": [
{
"ID": "archive-documents",
"Status": "Enabled",
"Filter": {"Prefix": "documents/"},
"Transitions": [
{"Days": 30, "StorageClass": "STANDARD_IA"},
{"Days": 90, "StorageClass": "GLACIER_IR"},
{"Days": 365, "StorageClass": "DEEP_ARCHIVE"}
],
"Expiration": {"Days": 2555},
"NoncurrentVersionExpiration": {"NoncurrentDays": 180}
}
]
}
정책은 Git으로 버전 관리하세요. 모든 변경사항은 풀 리퀘스트로 검토하고, Terraform 또는 CloudFormation으로 적용하며, CI 로그에 감사 기록을 남깁니다. 콘솔에서 직접 편집한 정책은 형상이 흐트러지고 오류를 일으킵니다.
운영 전 테스트
잘못된 버킷을 삭제하는 라이프사이클 정책은 치명적인 결과를 낳습니다. 먼저 작은 프리픽스에서 테스트하세요. documents/test/를 만들고 샘플 파일을 넣은 뒤 해당 프리픽스에만 적용되는 전용 테스트 정책을 설정합니다. 전환을 빠르게 확인하려면 Days: 1처럼 짧은 기간을 사용합니다.
aws s3api list-objects-v2 --prefix documents/test/로 결과를 확인하고 스토리지 클래스가 예상대로 변경되었는지 검증합니다. 이후 필터 범위를 넓힙니다. 법무, 재무 등 중요도가 높은 버킷은 프로바이더가 지원하는 경우 드라이런 모드로 실행하거나, 변경 적용 없이 예상 결과를 보고하는 스크립트로 시뮬레이션하세요.
최소 보관 기간은 반드시 지켜야 합니다
라이프사이클 규칙은 최소 스토리지 기간 요금에 적용됩니다. Glacier Flexible Retrieval로 이동한 객체를 7일 후에 삭제해도 90일치 요금이 부과됩니다. Deep Archive는 최소 180일입니다. Standard에서 Deep Archive로 전환 후 30일 이내에 삭제하는 잘못 설계된 규칙은 세 번의 비용을 발생시킵니다. 전환 비용, 최소 기간 비용, 복원 시 이그레스 비용이 모두 청구됩니다.
안전한 패턴: 객체가 최소 기간 이상 해당 티어에 머물 것으로 예상될 때만 더 차가운 티어로 전환하세요. 파일이 보통 60일 후 삭제된다면 Deep Archive(최소 180일)로 보내지 마세요. Standard-IA에서 멈추는 것이 낫습니다.
법적 보존(Legal Hold) 및 예외 처리
모든 아카이빙 시스템에는 소송에 대비한 탈출구가 필요합니다. legal-hold: true 태그가 붙은 객체는 라이프사이클 삭제에서 제외해야 합니다. 태그된 객체를 제외하는 규칙 필터로 구현합니다:
Filter:
And:
Prefix: "documents/"
Tag: {Key: "legal-hold", Value: "false"}
S3 Object Lock을 Governance 또는 Compliance 모드와 결합하면 legal-hold가 태그된 객체는 해제 전까지 불변 상태가 됩니다. Compliance 모드는 루트 삭제도 차단하며, 이는 FINRA 4511, SEC 17a-4, HIPAA §164.316 WORM 요건과 개인정보보호법(PIPA) 제29조 안전조치 의무에서 요구하는 수준입니다.
태깅 파이프라인 자동화
아카이빙의 품질은 태그의 정확성에 달려 있습니다. 수집 시점에 태깅을 자동화하세요. S3 ObjectCreated 이벤트로 트리거되는 Lambda가 파일을 분석하고 content-type, department, retention-class 태그를 적용합니다. 기존에 태그가 없는 데이터는 S3 Batch Operations로 일괄 태깅 작업을 실행합니다.
태그 값의 출처:
- 파일 확장자와 매직 바이트 (메타데이터에 "HIPAA"가 포함된 .pdf에는
healthcare태그 적용) - 업로드 출처 (재무 앱에 연결된 API 키는 자동으로
finance태그 부여) - 콘텐츠 스캔 (Amazon Macie가 개인정보(PII)를 감지하고 태그 적용)
- 업로드 시 사용자 입력 (
Department드롭다운이 있는 양식)
S3에서 태그 비용은 요청 10,000건당 $0.01 수준으로, 정밀한 라이프사이클 타깃팅에 충분히 투자할 가치가 있습니다.
아카이빙 감사 로그
모든 라이프사이클 작업을 기록하세요. CloudTrail은 LifecycleTransition과 LifecycleExpiration 이벤트를 캡처합니다. Athena, Splunk, 또는 Datadog으로 파이프하면 조회 가능한 기록이 만들어집니다. 감사자가 "2019년 계약서가 언제 Glacier로 이동되었습니까?"라고 물으면 몇 초 안에 답변할 수 있어야 합니다.
감사 로그에 포함할 항목:
- 객체 키와 VersionId
- 전환 전/후 스토리지 클래스
- 트리거 (기간, 태그, 명시적)
- 타임스탬프
- 매칭된 정책 ID
감사 로그는 데이터 보존 기간 이상 보관하세요. 7년 아카이빙이라면 라이프사이클 감사 로그도 7년 이상 유지해야 합니다.
크로스 리전 및 크로스 클라우드 아카이빙
재해 복구를 위해 아카이브는 두 번째 리전이나 다른 클라우드에 저장해야 합니다. S3 Cross-Region Replication은 대상 리전에서 다른 스토리지 클래스를 지정할 수 있어, us-west-2의 Glacier Deep Archive로 직접 복제할 수 있습니다. Azure는 RA-GRS와 객체 복제로 유사한 기능을 지원하며, GCS는 멀티 리전과 터보 복제를 제공합니다.
크로스 클라우드 아카이빙(AWS 기본, Backblaze B2 보조)은 rclone과 cron으로 예약 동기화를 실행합니다. 보조 사본은 특정 벤더의 장애, 한 프로바이더의 IAM을 타깃으로 한 랜섬웨어, 또는 결제 분쟁으로부터 독립성을 제공합니다.
복원 가능한 아카이브
복원할 수 없는 아카이브는 느린 삭제와 다름없습니다. 각 티어의 복원 경로를 문서화하세요:
- Glacier Instant Retrieval: 직접 GET, 별도 복원 불필요
- Glacier Flexible Retrieval:
RestoreObjectTier=Standard (3~5시간) 또는 Expedited (1~5분) - Glacier Deep Archive:
RestoreObjectStandard (12시간) 또는 Bulk (48시간) - Azure Archive:
Set Blob Tier를 Hot/Cool로 설정, 최대 15시간 리하이드레이션
분기마다 복원 훈련을 하세요. 임의의 아카이브 객체를 선택해 복원하고, 매니페스트 해시로 검증하고, 전체 과정의 시간을 기록합니다. 테스트하지 않은 복원은 실제 장애 상황에서 처음 경험하게 됩니다.
단발성 아카이빙 이전 처리
자동화된 라이프사이클은 정상 상태를 처리하지만, 퇴직 직원의 파일이나 클라이언트 프로젝트 종료 같은 특정 50GB 배치를 즉시 이동해야 할 때도 있습니다. 이런 경우에는 라이프사이클 정책을 편집하는 것보다 무결성 검사가 포함된 수동 이전 도구가 낫습니다. HexaTransfer는 최대 10GB까지 종단간 AES-256-GCM 암호화와 일회용 링크로 파일을 이동할 수 있어, 외부 법무법인이나 후임자에게 전체 아카이브 버킷 접근 권한을 부여하지 않고도 아카이브를 전달할 때 유용합니다.
라이프사이클 정책을 설정하고, 태깅을 자동화하고, 감사 로그를 파이프하면 시스템이 조용히 돌아갑니다. 분기마다 비용 대시보드를 확인하고 접근 패턴이 바뀌면 임계값을 조정하세요. 아카이빙에 필요한 것은 그것뿐입니다. 한 번 설정하면 커피 주문보다 관심이 덜 필요합니다.
hexatransfer.com에서 무료로 시작해 보세요 — 계정 불필요, 최대 10GB.
엔드투엔드 암호화로 대용량 파일을 안전하게 전송
엔드투엔드 암호화로 최대 10GB의 파일을 무료로 전송하세요. 계정이 필요하지 않습니다. 업로드 전에 브라우저에서 파일이 암호화되어 다른 사람은 읽을 수 없습니다.
파일 보내기