不変 BLOB データに対するバージョン レベルの書き込み 1 回、多数の読み取り (WORM) ポリシー
バージョン レベルの書き込み 1 回、多数の読み取り (WORM) ポリシーは、アカウント、コンテナー、またはバージョンのレベルで設定できる不変ポリシーの一種です。 Azure Blob Storage の不変ストレージの詳細については、「書き込み 1 回、多数の読み取り (WORM) 状態の不変ストレージを使用してビジネスクリティカルな BLOB データを格納する」を参照してください。
可用性
バージョン レベルの不変性 (VLW) ポリシーは、新しいアカウントのアカウント レベル、および新規および既存のアカウント/コンテナーのコンテナーと BLOB のレベルでサポートされます。 これらのポリシーは、汎用 v2 アカウントと Premium ブロック BLOB アカウントの両方でサポートされます。 この機能は、階層型名前空間アカウントではサポートされていません。
バージョンの依存関係
バージョンレベルのポリシーでは、ストレージ アカウントで BLOB のバージョン管理が有効になっている必要があります。 BLOB のバージョン管理を有効にする方法については、「BLOB のバージョン管理を有効にして管理する」をご覧ください。 バージョン管理を有効にすると、課金に影響する場合があることに注意してください。 詳細については、BLOB のバージョン管理の「価格と課金」セクションを参照してください。
バージョン管理を有効にした後、BLOB が初めてアップロードされると、BLOB のそのバージョンが現在のバージョンになります。 BLOB が上書きされるたびに、BLOB の以前の状態を格納する新しいバージョンが作成されます。 BLOB の現在のバージョンを削除すると、前のバージョンが現在のバージョンになり、明示的に削除されるまで保持されます。 前の BLOB バージョンには、前のバージョンが現在のバージョンになったときに有効だった時間ベースのアイテム保持ポリシーが適用されます。
ストレージ アカウントまたはコンテナーに対して既定のポリシーが有効になっている場合、上書き操作によって前のバージョンが作成されると、新しい現在のバージョンはアカウントまたはコンテナーの既定のポリシーを継承します。
各バージョンには、時間ベースのアイテム保持ポリシーを 1 つだけ構成できます。 バージョンには、訴訟ホールドも 1 つ構成できます。
バージョンレベルの時間ベースのアイテム保持ポリシーを構成する方法については、「BLOB バージョンの不変ポリシーを構成する」を参照してください。
有効化とポリシー設定
バージョン レベルの WORM で不変ポリシーを使用することは、2 段階のプロセスです。 最初に、バージョン レベルの不変性を有効にします。 次に、バージョンレベルの不変ポリシーを設定できます。
ストレージ アカウント レベルでポリシーを設定するには、まずストレージ アカウントでバージョン レベルの WORM を有効にする必要があります。 これは、アカウント作成時にのみ実行できます。 既存のアカウントに対してバージョン レベルの WORM を有効にするオプションはありません。
コンテナー レベルでポリシーを設定するには、まず、アカウントまたはコンテナーでバージョン レベルの WORM を有効にする必要があります。
コンテナーでバージョン レベルの WORM を有効にする予定の場合は、コンテナーの作成時に有効にすることをお勧めします。 ただし、バージョン レベルの WORM が有効になっていないコンテナーを、バージョン レベルの WORM が有効なコンテナーに移行できます。 コンテナーを移行しない場合でも、そのコンテナーにコンテナー レベルの WORM ポリシーを設定できますが、そのコンテナーでは BLOB レベルのポリシーを設定するオプションは使用できません。
BLOB レベルでポリシーを設定するには、アカウントまたはコンテナーでバージョン レベルの WORM を有効にする必要があります。 BLOB レベルでバージョン レベルの WORM を有効にするオプションはありません。これは継承する必要があります。
移行
既存のコンテナーでバージョンレベルの不変性をサポートできますが、まず、移行プロセスを実行する必要があります。 このプロセスにはしばらく時間がかかることがあります。 有効にすると、そのコンテナーに対するバージョン レベルの WORM サポートは削除できなくなります。 ストレージ アカウントごとに一度に移行できるコンテナーは 10 個です。 バージョンレベルの不変性をサポートするためのコンテナーの移行の詳細については、「バージョンレベルの不変性をサポートするために既存のコンテナーを移行する」を参照してください。
現在のバージョンに対するポリシーを構成する
ストレージ アカウントまたはコンテナーに対するバージョンレベルの不変性のサポートを有効にした後、必要に応じて、アカウントまたはコンテナーに対する既定の時間ベースのアイテム保持ポリシーを構成できます。 アカウントまたはコンテナーに対する既定の時間ベースのアイテム保持ポリシーを構成し、BLOB をアップロードすると、その BLOB はその既定のポリシーを継承します。 また、BLOB のアップロード時にその BLOB のカスタム ポリシーを構成することによって、既定のポリシーをオーバーライドすることもできます。
アカウントまたはコンテナーに対する既定の時間ベースのアイテム保持ポリシーがロック解除されている場合、既定のポリシーを継承する BLOB の現在のバージョンにも、ロック解除されたポリシーが適用されます。 個々の BLOB のアップロード後、BLOB の現在のバージョンでポリシーの保持期間を短縮または延長したり、現在のバージョンを削除したりできます。 また、アカウントまたはコンテナーの既定のポリシーがロック解除されたままでも、現在のバージョンのポリシーをロックできます。
アカウントまたはコンテナーに対する既定の時間ベースのアイテム保持ポリシーがロックされている場合、既定のポリシーを継承する BLOB の現在のバージョンにも、ロックされたポリシーが適用されます。 ただし、BLOB をアップロードするときに、その BLOB のみに対するポリシーを設定して既定のポリシーをオーバーライドすると、その BLOB のポリシーは、明示的にロックするまでロック解除されたままになります。 現在のバージョンでのポリシーがロックされている場合、保持間隔の延長はできますが、ポリシーの削除や保持間隔の短縮はできません。
ストレージ アカウントまたはコンテナーに既定のポリシーが構成されていない場合は、BLOB のアップロードでカスタム ポリシーを使用することも、ポリシーを使用しないこともできます。
ストレージ アカウントまたはコンテナーに対する既定のポリシーが変更された場合、そのコンテナー内のオブジェクトのポリシーは、それらのポリシーが既定のポリシーから継承されている場合でも、変更されないままです。
次の表は、BLOB に対してアップロード時に時間ベースのアイテム保持ポリシーを設定するために使用できる、さまざまなオプションを示しています。
アカウントまたはコンテナーでの既定のポリシーの状態 | 既定のポリシーを使用して BLOB をアップロードする | カスタム ポリシーを使用して BLOB をアップロードする | ポリシーを使用せずに BLOB をアップロードする |
---|---|---|---|
アカウントまたはコンテナーでの既定のポリシー (ロック解除) | BLOB は既定のロック解除されたポリシーを使用してアップロードされます | BLOB はカスタムのロック解除されたポリシーを使用してアップロードされます | BLOB はポリシーを使用せずにアップロードされます |
アカウントまたはコンテナーでの既定のポリシー (ロック) | BLOB は既定のロックされたポリシーを使用してアップロードされます | BLOB はカスタムのロック解除されたポリシーを使用してアップロードされます | BLOB はポリシーを使用せずにアップロードされます |
アカウントまたはコンテナーでの既定のポリシーなし | 該当なし | BLOB はカスタムのロック解除されたポリシーを使用してアップロードされます | BLOB はポリシーを使用せずにアップロードされます |
前のバージョンに対するポリシーを構成する
バージョン管理を有効にすると、BLOB に対する書き込みまたは削除操作によって、BLOB の新しい前のバージョンが作成されます。これにより、操作の前の BLOB の状態が保存されます。 既定では、現在のバージョンが前のバージョンに戻ったときに、現在のバージョンで有効だった時間ベースのアイテム保持ポリシーが (もしあれば) 前のバージョンに適用されます。 新しい現在のバージョンは、コンテナーにポリシーがあれば、それを継承します。
前のバージョンによって継承されたポリシーがロック解除されている場合は、保持間隔を短縮または延長できます。また、ポリシーを削除することもできます。 現在のバージョンのポリシーがロック解除されている場合でも、そのバージョンに対して前のバージョンのポリシーをロックすることもできます。
前のバージョンによって継承されたポリシーがロックされている場合は、保持間隔を延長できます。 ポリシーを削除したり、保持間隔を短縮したりすることはできません。 現在のバージョンでポリシーが構成されていない場合、前のバージョンはポリシーを継承しません。
そのバージョンのカスタム ポリシーを構成できます。 現在のバージョンのポリシーが変更された場合、既存の前の各バージョンのポリシーは、現在のバージョンから継承されていても変更されません。
削除
不変ポリシーに対してアカウントまたはコンテナーが有効になると、空になるまで削除することはできません。 注意すべき大事な点は、不変ポリシーがバージョン レベルの WORM アカウントまたはコンテナーに設定されているかどうかは関係なく、ポリシーに対して有効になっているかどうかが重要であるということです。 有効になると、アカウントまたはコンテナーを削除するには空にする必要があります。
シナリオ
シナリオ | 禁止されている操作 | BLOB 保護 | コンテナー保護 | アカウント保護 |
---|---|---|---|---|
BLOB のバージョンがアクティブなアイテム保持ポリシーによって保護されている、または訴訟ホールドが有効である | Delete Blob、Set Blob Metadata、Put Page | BLOB のバージョンは削除できません。 ユーザー メタデータを書き込むことはできません。 Put Blob、Put Block List、Copy Blob で、BLOB を上書きすると、新しいバージョンが作成されます1。 |
ポリシーがロックまたはロック解除されているかどうかに関係なく、コンテナーに少なくとも 1 つの BLOB が存在する場合、コンテナーの削除は失敗します。 | バージョン レベルの不変ストレージが有効になっているコンテナーが少なくとも 1 つある場合、またはアカウントに対して有効になっている場合、ストレージ アカウントの削除は失敗します。 |
BLOB のバージョンが期限切れのアイテム保持ポリシーによって保護されている、または訴訟ホールドが有効である | Set Blob Metadata と Put Page | BLOB のバージョンが期限切れのアイテム保持ポリシーによって保護されている、または訴訟ホールドが有効である | BLOB のバージョンを削除することができます。 Put Blob、Put Block List、Copy Blob で、BLOB を上書きすると、新しいバージョンが作成されます1。 |
時間ベースのアイテム保持ポリシーを持つ BLOB バージョンを含むコンテナーが少なくとも 1 つある場合、ストレージ アカウントの削除は失敗します。 ロック解除されたポリシーでは、削除保護は提供されません。 |
1 BLOB のバージョンはコンテンツについて常に不変です。 ストレージ アカウントでバージョン管理が有効になっている場合、ブロック BLOB に対する書き込み操作で新しいバージョンが作成されます。ただし、Put Block 操作は除きます。
制限
1 つのアカウントに一意の時間ベースのアイテム保持ポリシーを使用して設定できるコンテナーは 10,000 個のみです。ただし、10,000 を超えるコンテナーによって継承されるアカウント レベルのポリシーを設定できます。