コンテンツへスキップ
HexaTransfer
ブログへ戻る
クラウドとストレージ

ファイルアーカイブの自動化:設定したら後は任せる

ルール定義、アーカイブのスケジューリング、保持ポリシーの遵守など、ファイルアーカイブの自動化ワークフローの構築方法を解説します。

自動ファイルアーカイブは、非アクティブなファイルをスケジュールに従ってホットストレージからコールドストレージ層へ移動させます。人が手動で操作する必要はありません。S3 Lifecycleルール、Azure Blob Lifecycle Management、GCS Object Lifecycleを使えば、「90日間アクセスがなければGlacier Deep Archiveへ移動、7年後は法的保留タグがない限り削除」といったポリシーを記述できます。一度設定してサンプルの1%でテストすれば、システムはストレージコストを50〜80%削減しながら、SOX7年・HIPAA6年・GDPRのデータ最小化といった保持ルールを満たします。手動作業は不要です。

トリガーの選択:経過時間・アクセス・タグ

主なアーカイブトリガーは3種類です。経過時間ベースのルール(object.age > 90d)は最もシンプルで、ログ・取引記録・メールエクスポートなど時間とともに重要度が下がるデータに適しています。アクセスベースのルール(最終アクセスタイムスタンプを追跡するS3 Intelligent-Tiering)は、アクセスパターンが予測しにくいデータセットに有効です。財務監査ファイルが11か月間休眠状態にあり、12か月目に急に必要になるケースがその典型です。

タグベースのルール(tag retention-class = sox-7y)は、人とアプリケーションが明示的に制御できます。コンプライアンスチームが取り込み時にファイルへretention-class: hipaa-6yを付与すれば、カテゴリが変わってもライフサイクルルールを書き直さずにアーカイブされます。組み合わせて使うのが実践的です。デフォルトには経過時間を、例外にはタグを使います。

YAMLまたはJSONでポリシーを記述する

S3のライフサイクル設定はXMLまたはJSON、Azureと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日以内に行う設計の悪いルールは、トランジション料金・最低期間料金・復元時のEgress料金と三重に課金されます。

安全なパターンは、コールドな層へ移す場合は少なくとも最低保管期間以上オブジェクトがそこに存在すると見込める場合のみトランジションすることです。通常60日で削除されるファイルはDeep Archive(最低180日)を経由させないでください。Standard-IAで止めるのが適切です。

法的保留と例外の扱い

すべてのアーカイブシステムには訴訟対応のための緊急回避策が必要です。legal-hold: trueタグが付いたオブジェクトはライフサイクル削除から除外するべきです。タグ付きオブジェクトを除外するルールフィルターで実装します。

Filter:
  And:
    Prefix: "documents/"
    Tag: {Key: "legal-hold", Value: "false"}

S3 Object LockのGovernanceまたはComplianceモードと組み合わせると、法的保留タグ付きオブジェクトは解除されるまで不変となります。ComplianceモードはrootによるKfr削除さえ防止するため、FINRA 4511・SEC 17a-4・HIPAA §164.316のWORM要件に対応できます。

タグ付けパイプラインの自動化

アーカイブの品質はそれを駆動するタグの品質で決まります。取り込み時のタグ付けを自動化してください。S3 ObjectCreatedで起動するLambdaがファイルを検査し、content-typedepartmentretention-classタグを付与します。既存のタグなしデータには、S3 Batch Operationsで一括タグ付けジョブを実行します。

タグ値のソース例:

  • ファイル拡張子とマジックバイト(メタデータに「個人情報」を含む.pdfはhealthcareタグを付与)
  • アップロード元(財務アプリに紐づくAPIキーは自動的にfinanceタグを付与)
  • コンテンツスキャン(Amazon MacieがPIIを検出してタグ付け)
  • アップロード時のユーザー入力(Departmentドロップダウン付きフォーム)

S3のタグリクエストは10,000件あたり0.01ドル。精緻なライフサイクルターゲティングのための投資として十分見合います。

アーカイブ監査証跡

すべてのライフサイクルアクションをログに記録してください。CloudTrailはLifecycleTransitionLifecycleExpirationイベントをキャプチャします。Athena・Splunk・Datadogにパイプしてクエリ可能な履歴を作ります。監査担当者から「2019年の契約書がいつGlacierに移動されたか」を聞かれたとき、クエリが数秒で結果を返すようにしておきます。

監査ログに含めるべき項目:

  • オブジェクトキーとVersionId
  • 移行元・移行先のストレージクラス
  • トリガー(経過時間・タグ・明示的指定)
  • タイムスタンプ
  • 適用されたポリシーID

監査ログは、データ保持期間と同期間以上保持してください。7年アーカイブするならライフサイクル監査ログも7年プラスバッファが必要です。

リージョン間・クラウド間アーカイブ

災害復旧のために、アーカイブは第2リージョンまたは別クラウドにも保存すべきです。S3 Cross-Region Replicationは移行先でストレージクラスを指定できるため、us-west-2にGlacier Deep Archiveで直接レプリケートできます。AzureはRA-GRSとオブジェクトレプリケーションで同様の構成が可能です。GCSはマルチリージョンとターボレプリケーションを提供しています。

クラウド間アーカイブ(AWSをプライマリ、Backblaze B2をセカンダリ)には、cronで定期同期ジョブを実行するrcloneを使います。セカンダリコピーがあれば、ベンダー固有の障害・特定プロバイダーのIAMを狙うランサムウェア・請求トラブルから独立した保護を得られます。

復元可能なアーカイブ

復元できないアーカイブは、単なる低速な削除に過ぎません。各ストレージ層の復元手順を文書化してください。

  • Glacier Instant Retrieval:直接GETで復元不要
  • Glacier Flexible Retrieval:Tier=Standard(3〜5時間)またはExpedited(1〜5分)でRestoreObject
  • Glacier Deep Archive:Standard(12時間)またはBulk(48時間)でRestoreObject
  • Azure Archive:Set Blob TierでHot/Coolへ変更、再水和に15時間

四半期ごとに実際にテストしてください。ランダムなアーカイブオブジェクトを選んで復元し、マニフェストのハッシュと照合して、全工程の所要時間を計測します。テストされていない復元は、インシデント発生時に初めて問題が発覚します。

スポット的なアーカイブ転送の扱い

自動ライフサイクルは定常状態を処理しますが、退職者のファイルやクライアント案件のクローズアウトなど、特定の50GBバッチを即座に移動しなければならない場面もあります。こうしたケースでは、ライフサイクルポリシーを編集するよりも、整合性チェック付きの手動転送ツールのほうが確実です。HexaTransferはエンドツーエンドのAES-256-GCM暗号化とワンタイムリンクを使って最大10GBのファイルを転送できるため、アーカイブバケット全体へのアクセスを付与せずに社外の弁護士や後任者へ引き渡すのに役立ちます。

ライフサイクルポリシーを設定し、タグ付けを自動化し、監査ログをパイプすれば、システムは静かに動き続けます。コストダッシュボードを四半期ごとに確認し、アクセスパターンが変化したら閾値を調整するだけです。それがアーカイブ管理の全てです。設定後はコーヒーの注文より手間がかかりません。

hexatransfer.com で今すぐ試せます — 無料、アカウント不要、最大10GB。

エンドツーエンド暗号化で大容量ファイルを安全に送信

エンドツーエンド暗号化で最大10GBのファイルを無料で転送。アカウント不要。ファイルはアップロード前にブラウザで暗号化されるため、他の誰にも読まれません。

ファイルを送信