基幹システムや法令対応のデータを30年間保管しつつ、保管コストも抑えたい――その両立に有力なのが、Azure Blob Storage のイミュータブル保持(WORM)とアーカイブ階層、ライフサイクル管理を組み合わせた運用です。本記事では「30日後に自動アーカイブ」「30年間削除不可」「必要なときだけリハイドレートしてダウンロード」という要件を、設計と運用の観点から詳しく解説します。
シナリオと要件の整理:30年イミュータブル保持 × アーカイブ運用
まず、想定しているシナリオと要件を整理します。典型的には、次のようなニーズをまとめて満たしたいケースです。
- ファイル生成から 30 日間は通常アクセス(Hot/Cool)で利用したい
- 30 日経過後はアーカイブ階層に自動移行して、ストレージコストを最小化したい
- 同時に、監査・法令要件などで 30 年間は削除や改ざんができないようにしたい(WORM)
- 30 年間のどのタイミングでも、必要になったらアーカイブから取り出してダウンロードしたい
この要件を Azure Blob Storage の機能にマッピングすると、次のようになります。
| 項目 | 要件 | Azure Blob Storage の要素 |
|---|---|---|
| 保存期間 | 30 年間削除不可 | イミュータブル BLOB ストレージ(時間ベース保持ポリシー + ロック済み) |
| 保存コスト | 30 日以降は低コストで長期保管 | アーカイブ アクセス階層 + ライフサイクル管理 |
| 自動化 | 生成から 30 日後に自動でアーカイブへ移行 | ライフサイクル管理ルール(最終更新から○日後に階層変更) |
| 随時の取り出し | 30 年間いつでもダウンロード可能 | Archive → Hot/Cool へのリハイドレート(Set Blob Tier) |
| 監査 | 操作履歴を追跡できること | Blob Inventory / ログ / 監査レポート |
ここでの最大の疑問は「イミュータブル保持ポリシーがロックされていても、アーカイブからリハイドレートできるのか?」という点です。これを理解するために、まずイミュータブル BLOB ストレージの仕組みから整理します。
Azure イミュータブル BLOB ストレージの基本
Azure のイミュータブル BLOB ストレージは、いわゆる WORM(Write Once, Read Many)をクラウドで実現する機能です。設定された保持期間中は BLOB の削除や上書きを防ぎ、意図しない改ざんや消去からデータを守ることができます。
時間ベース保持ポリシーとロック
時間ベース保持ポリシーでは、たとえば「保持期間 30 年(10950 日)」という形で、書き込みから○年間は削除不可、というルールを設定します。さらに「ロック済み」にすることで、保持期間の短縮やポリシーの解除ができなくなり、コンプライアンス要件を満たしやすくなります。
- 保持期間中:削除・上書き禁止
- 保持期間外:通常の BLOB として削除・上書き可能
- ロック前:管理者が保持期間を変更・解除可能
- ロック後:保持期間を延長する方向にしか変更できない
イミュータブル機能は通常コンテナー単位、あるいはアカウント単位で有効化します。コンテナー配下の BLOB はポリシーの影響を受け、保持期間内は削除・上書きができません。
WORM で禁止される操作と許可される操作
ここで重要なのは、「何が禁止され」「何が許可されるのか」を正しく理解することです。イミュータブル保持ポリシーがロックされていても、すべての更新系操作が禁止されるわけではありません。
| 操作 | イミュータブル保持中の可否 | 補足 |
|---|---|---|
| 削除(Delete Blob) | 不可 | 保持期間中は削除要求は失敗する |
| 内容の上書き(Put Blob / Append) | 不可 | 同じ BLOB 名への上書きや追記は不可 |
| メタデータの変更 | 制限あり | タグやメタデータの一部更新は制約付きで可能な場合がある |
| アクセス階層の変更(Set Blob Tier) | 可能 | Hot / Cool / Archive 間の変更。今回のポイント |
| 読み取り(ダウンロード / GET Blob) | 可能 | 保持期間に関係なく参照は自由 |
| コピー(Copy Blob) | 可能 | コピー先は別の BLOB として扱われる |
| ライフサイクルによる階層変更 | 可能 | 削除アクションは保護されるが、階層変更は実行される |
つまり、イミュータブル保持ポリシーが禁止しているのは「削除」と「内容の上書き」であり、アクセス階層の変更は対象外です。この点が、アーカイブとの併用を考えるうえでの鍵になります。
アーカイブ階層とリハイドレートの仕組み
Azure Blob Storage には、主に次の 3 つのアクセス階層があります。
| 階層 | 用途 | 取得時間の目安 | 料金の特徴(概念) |
|---|---|---|---|
| Hot | 頻繁にアクセスするデータ | 即時 | 保管料金は高め、アクセス料金は安め |
| Cool | たまにアクセスされるデータ(数か月単位) | 即時 | 保管料金は Hot より安いが、アクセス料金はやや高い |
| Archive | ほとんどアクセスしない長期保管データ | 数時間程度(リハイドレートが必要) | 保管料金は最安だが、取り出し・読み出しコストが高い |
アーカイブ階層にある BLOB は「オフライン状態」であり、そのままではダウンロードできません。Hot または Cool に戻す操作を行い、バックグラウンドでの復元(リハイドレート)が完了して初めて、通常通り GET できるようになります。
リハイドレートの実行方法
リハイドレートは、いずれも「アクセス階層変更(Set Blob Tier)」として実行されます。主な手段は次のとおりです。
- Azure ポータル:BLOB を選択し、「アクセス階層の変更」で Hot / Cool を指定
- Azure CLI:
az storage blob set-tierコマンド - AzCopy:コピー時にターゲットの階層を指定
- REST API:
Set Blob Tier操作
多くのツールでは、リハイドレートの優先度として「Standard(標準)」と「High(高)」を選択できます。
| 優先度 | 特徴 | 向いているケース |
|---|---|---|
| Standard | 数時間~十数時間程度で完了することを想定 | 計画的な調査・監査、翌日までに戻せばよいケース |
| High | 通常より短時間(1 時間前後を想定)でリハイドレート | インシデント対応など、至急アクセスしたい場合。コストは高め |
リハイドレートが開始されると、BLOB の状態は「リハイドレート中」となり、完全にオンラインになるまではダウンロードできません。完了後は、通常の Hot/Cool BLOB と同様に扱えます。
結論:イミュータブル保持中でもリハイドレートは可能
ここまでの内容を踏まえると、質問の核心は次のように整理できます。
- イミュータブル保持(WORM)がロックされている BLOB
- アクセス階層はアーカイブ
- この BLOB を Hot/Cool に戻す操作(リハイドレート)ができるか?
答えは「はい、可能」です。
- イミュータブル保持が禁止するのは「削除」と「内容の上書き」
- アクセス階層の変更(Set Blob Tier)はポリシーの禁止対象ではない
- そのため、Archive → Hot/Cool へのリハイドレートは保持期間中でも実行できる
したがって、次のような運用が成立します。
- ファイル生成直後は Hot/Cool で保存
- ライフサイクル管理で「最終更新から 30 日後にアーカイブへ移行」ルールを設定
- イミュータブル保持ポリシーは 30 年、ロック済みに設定
- 必要になったタイミングで、対象 BLOB を Hot/Cool へリハイドレート
- ダウンロード後、再度アーカイブに戻しても保持期間は変わらない(作成日時基準のまま)
この仕組みにより、「30 年間削除不可かつ随時ダウンロード可能」という要件を Azure Blob Storage だけで実現できます。
リハイドレート時の注意点とベストプラクティス
リハイドレート自体はシンプルな操作ですが、長期運用を考えると、いくつか押さえておきたいポイントがあります。
リハイドレート直後に再アーカイブされないようにする
ライフサイクルポリシーを「最終更新から 30 日後にアーカイブ」といった条件で組んでいる場合、リハイドレートによって最終更新日時が変わるかどうか、設計時によく確認しておく必要があります。条件次第では、次のような事態も起こりえます。
- リハイドレート → 数日後にライフサイクルが再評価 → すぐにアーカイブへ戻される
- 調査のために Hot に戻したのに、気づいたらまたアーカイブになっていた
このような事態を避けるためのアイデアとして、次のような工夫が考えられます。
| 観点 | 工夫の例 |
|---|---|
| ライフサイクル条件 | 「最終更新から○日」ではなく、「作成から 30 日」など、より安定した条件を採用する |
| 対象範囲の制御 | プレフィックスやコンテナー単位でルールを分け、リハイドレートされた BLOB を一時的に別コンテナーへ移動して運用する |
| タグによるフィルタ | Blob インデックス タグを使用し、「rehydrate=working」タグが付いている間はライフサイクル対象外にする |
| 手動制御 | 頻度が低い場合は、リハイドレート対象だけ手動でルールを無効化・有効化する運用も選択肢 |
コスト最適化:リハイドレートと読み出し料金
アーカイブ階層は「保管は安く、取り出しは高い」という料金モデルです。30 年スパンの設計では、次のような考え方が有効です。
- 頻繁にアクセスする可能性があるデータは、そもそもアーカイブではなく Cool に留める
- 「ごくまれにしか参照しないが、消してはいけない」データだけをアーカイブ対象にする
- リハイドレート時に High 優先度を使うのは、本当に緊急度が高いケースだけに絞る
- リハイドレートが完了したら、必要なデータだけをオンプレミスや別ストレージに一時退避し、調査後は再度アーカイブに戻す
特に 30 年ともなると、アーカイブに置いておくだけのデータ量は膨大になりがちです。最初の設計段階で「アーカイブに送る条件」「アーカイブから戻すケース」「戻したあとどう扱うか」を明文化しておくと、コストと運用の両面で安定します。
監査・セキュリティの観点
規制や社内監査に対応する場合、単に WORM とアーカイブを使うだけでなく、次の点もあわせて検討します。
- リハイドレートの実行者・対象 BLOB・実行時刻が追跡できるよう、監査ログやレポートを設計する
- Blob Inventory やログを活用し、「どの BLOB がいつアーカイブされ、いつリハイドレートされたか」を一覧化する
- アクセス権限(RBAC / SAS)を最小権限に絞り、リハイドレートできるロールを限定する
- 必要に応じて、別サブスクリプションや別テナントへのコピーを組み合わせ、ランサムウェアなどのリスクをさらに低減する
「誰がいつデータに触れたか」を説明できることが、長期保管における信頼性の鍵になります。
ライフサイクルポリシー設計の具体例
次に、実際にどのようなライフサイクルルールを設計するとよいか、具体的なパターンを見ていきます。
基本パターン:30 日後に自動アーカイブ
もっともシンプルなパターンは、「生成された BLOB を 30 日経過後にアーカイブへ移行する」ルールです。
- 対象:特定コンテナー配下のすべての Block Blob
- 条件:最終更新(または作成)から 30 日経過
- アクション:アーカイブ階層に移行
これをベースに、次のようなバリエーションを追加していきます。
- 「特定のプレフィックス(例:
logs/)だけを対象にする」 - 「ファイルサイズが一定以上の BLOB のみアーカイブする」
- 「タグ
archive=trueが付いたものだけアーカイブする」
重要なのは、このルールがイミュータブル保持ポリシーと矛盾しないようにすることです。ライフサイクルで削除アクションを設定しても、保持期間中は削除がブロックされるためエラーになります。長期保管前提のコンテナーでは、原則として削除アクションは設定せず、階層変更だけを使うのがおすすめです。
リハイドレートを見越したルール分割
リハイドレート後も一定期間は Hot に留めたい場合、ルールを 2 つに分けると運用しやすくなります。
| ルール | 対象 | 条件 | アクション |
|---|---|---|---|
| 初回アーカイブ | 新規 BLOB | 作成から 30 日 | Hot/Cool → Archive |
| 再アーカイブ | 一度リハイドレートされた BLOB | リハイドレート後、タグ rehydrate=done に変更、タグ付けから 30 日 | Hot/Cool → Archive |
このように「初回アーカイブ」と「再アーカイブ」を分けておくと、リハイドレート後の観察期間を柔軟に調整できます。タグを使わず、プレフィックスやコンテナーを分けて運用するパターンもよく使われます。
万が一リハイドレートが使えない場合の回避策
現行の仕様では、イミュータブル保持中であってもアーカイブからのリハイドレートは可能です。ただし、長期運用を考えると「仕様変更や想定外の事象が起こった場合にどうするか」をあらかじめ検討しておくと安心です。
以下は、あくまで保険として考えられる設計例です(実際に採用するかどうかは、法令・社内ルールに照らして判断してください)。
| 回避策 | 内容 | メリット / 注意点 |
|---|---|---|
| 二重保管(別アカウント) | WORM が効いたコンテナーとは別に、読み取り専用扱いのコンテナーにも同じデータを保管 | アクセス性は高まるが、法令上「改ざん困難性」が要求される場合の扱いに注意 |
| 定期エクスポート | 年次などでオンプレミスや別クラウドへエクスポートし、オフライン保管 | 災害対策として有効だが、運用コスト・管理負荷は増える |
| メタデータ・インデックスの別保管 | 実データは WORM+アーカイブ、検索に必要なメタデータだけ別ストレージに保持 | 必要なデータだけ的確にリハイドレートできるようになる |
ポイントは、「イミュータブル保持を迂回して削除・改ざんできる抜け道を作らない」ことです。回避策を設計する際は、必ずセキュリティ・コンプライアンス担当と合意形成を行っておきましょう。
典型的なユースケースと設計パターン
最後に、30 年間のイミュータブル保持とアーカイブ運用が活きるユースケースと、その際の設計パターン例を紹介します。
監査ログ・トランザクションログの長期保管
金融・公共分野などでは、アプリケーションやデータベースのトランザクションログを長期間保管することがあります。この場合の構成例です。
- 保存先コンテナー:
logs-audit/ - イミュータブル保持:30 年、ロック済み
- ライフサイクル:
- 作成から 30 日:Hot(あるいは Cool)で保管
- 30 日経過後:自動で Archive に移行
- 運用:
- 監査・調査発生時に特定期間のログをリハイドレートして分析
- 分析用ストレージにコピーして処理後、コピー側は必要に応じて削除(元データは WORM で保護)
電子文書・契約書の長期保管
電子契約やスキャン済み契約書など、人が読むことを前提としたファイルの長期保管にも同様の設計が使えます。
- スキャン済み PDF / 電子契約の原本を Blob に保存
- イミュータブル保持で原本を 30 年保護
- 頻繁に参照する期間(例:契約期間中)は Cool に留め、その後アーカイブへ移行
- 再確認が必要になったら、対象契約だけをリハイドレートして閲覧・印刷
この際、契約 ID などでフォルダ(仮想ディレクトリ)を分けておくと、特定案件のデータだけを効率的にリハイドレートできます。
バックアップ/アーカイブ製品からの移行
既存のバックアップ/アーカイブ製品から Azure へ移行する場合も、「30 日後にアーカイブ」「30 年 WORM」という組み合わせは有効です。
- 既存ソリューションの「テープ保管」に相当する部分を、Azure Blob Storage アーカイブ階層に置き換える
- 保持ポリシーは従来のルールを踏襲しつつ、イミュータブル保持で「削除・上書き不可」を担保
- リハイドレートを行う際の運用フローを、従来の「テープ取り寄せ」手順に対応付ける
この場合、ユーザーにとっては運用フローが大きく変わらない一方で、物理メディア管理から解放されるという利点があります。
設計チェックリスト
最後に、Azure Blob Storage で「30 年間イミュータブル保持 × アーカイブ運用」を構成する際のチェックリストをまとめます。要件定義や設計レビューの際のメモとして活用できます。
| カテゴリ | 確認ポイント |
|---|---|
| 保持要件 | 保持期間(年数・日数)は明確か 延長の可能性はあるか(ポリシー延長の運用) 法令・社内ルール上、削除可能タイミングはどう定義されているか |
| イミュータブル設定 | 対象はコンテナー単位か、アカウント単位か 時間ベース保持ポリシーはロック済みか テスト環境と本番環境で設定を誤っていないか |
| ライフサイクルルール | 「30 日後アーカイブ」の条件は作成日時か最終更新日時か 削除アクションが誤って設定されていないか リハイドレート後にすぐアーカイブへ戻らないように考慮しているか |
| アクセス階層 | Hot / Cool / Archive の使い分け方針はドキュメント化されているか リハイドレート時の優先度(Standard / High)の使い分けルールはあるか |
| 運用プロセス | リハイドレートを誰が、どの手順で実行するか 完了確認と、その後の再アーカイブまでのフローは定義されているか 問い合わせや監査対応時の標準作業手順書はあるか |
| 監査・ログ | リハイドレートやアクセスの履歴をどこに、どの粒度で記録するか 定期的なレポートやダッシュボードは用意されているか |
| コスト管理 | 容量見積りは 30 年分を考慮しているか リハイドレート頻度を想定したアクセス料金の見積りを行ったか 予算超過を検知するためのアラートやレポートは設定しているか |
関連ドキュメント(日本語で押さえておきたいトピック)
実際に構成する際は、次のようなトピック名のドキュメントや解説記事をあわせて確認しておくと理解が深まります(ここではリンクは記載しません)。
- 「イミュータブル BLOB ストレージの概要」
- 「Azure Blob Storage のアクセス階層とアーカイブ階層」
- 「BLOB ライフサイクル管理ルールの作成とベストプラクティス」
- 「Blob インデックス タグを使ったデータ分類とポリシー適用」
まとめ:30 年 WORM とアーカイブ運用を両立する Azure Blob Storage 設計
本記事で見てきたように、Azure Blob Storage では、
- イミュータブル保持ポリシー(WORM)で 30 年間の削除・改ざん防止
- ライフサイクル管理で「生成から 30 日後に自動でアーカイブ」
- 必要に応じて、Archive → Hot/Cool へのリハイドレートを実行しダウンロード
という構成を組み合わせることで、「30 年間削除不能かつ随時ダウンロード可能」という一見トレードオフに見える要件を同時に満たせます。
ポイントは、イミュータブル保持が禁止しているのは削除と上書きだけであり、アクセス階層の変更(リハイドレート)は許可されているという仕組みを正しく理解することです。そのうえで、ライフサイクルルール・タグ・監査ログ・運用手順を丁寧に設計すれば、コストとコンプライアンスを両立した長期アーカイブ基盤として Azure Blob Storage を活用できます。
これから設計に着手する場合は、本記事のチェックリストをベースに、自社の保持要件や規制要件を整理しながら、まずは検証環境でポリシーとライフサイクルルールを試してみることをおすすめします。

コメント