不変 BLOB データに対するコンテナー レベルの書き込み 1 回、多数の読み取り (WORM) ポリシー

コンテナー レベルの書き込み 1 回、多数の読み取り (WORM) ポリシーは、コンテナー レベルで設定できる不変ポリシーの一種です。 Azure Blob Storage の不変ストレージの詳細については、「書き込み 1 回、多数の読み取り (WORM) 状態の不変ストレージを使用してビジネスクリティカルな BLOB データを格納する」を参照してください。

可用性

コンテナー レベルの WORM (CLW) ポリシーは、新規および既存のすべてのコンテナーで使用できます。 これらのポリシーは、汎用 v2、Premium ブロック BLOB、汎用 v1 (レガシ)、BLOB ストレージ (レガシ) アカウントでサポートされています。

ヒント

Microsoft では、汎用 v1 アカウントを汎用 v2 にアップグレードすることをお勧めします。これにより、より多くの機能をご利用いただけます。 既存の汎用 v1 ストレージ アカウントのアップグレードについては、ストレージ アカウントのアップグレードに関する記事を参照してください。

この機能は、階層型名前空間アカウントでサポートされています。 階層型名前空間が有効になっている場合、BLOB が不変状態になっているときに BLOB の名前変更や移動はできません。 BLOB 名前とディレクトリ構造はいずれも必須のコンテナー レベル データを提供し、不変ポリシーの設定後は変更できません。

この機能の有効化プロセスはありません。すべてのコンテナーで自動的に使用できます。 新規または既存のコンテナーにポリシーを設定する方法の詳細については、「コンテナー レベルの WORM 不変ポリシーを構成する」を参照してください。

削除

コンテナーレベルの WORM ポリシーが設定されているコンテナーでは、そのコンテナーを削除する前に空にする必要があります。 階層型名前空間が有効になっているコンテナーにポリシーが設定されている場合は、削除する前にディレクトリを空にする必要があります。

コンテナー レベルの WORM ポリシーを持つアカウントを削除するときの操作の順序を示す図。

シナリオ

シナリオ 禁止されている操作 BLOB 保護 コンテナー保護 アカウント保護
コンテナーは、コンテナー スコープを持つアクティブな時間ベースのアイテム保持ポリシーよって保護されている、または訴訟ホールドが有効、またはその両方です。 Delete BlobPut Blob1Set Blob MetadataPut PageSet Blob PropertiesSnapshot BlobIncremental Copy BlobAppend Block2 コンテナー内のすべての BLOB は、コンテンツとユーザー メタデータが不変です。 コンテナー レベルの WORM ポリシーが有効な場合、コンテナーの削除は失敗します。 少なくとも 1 つの BLOB が存在するコンテナーがある場合、ストレージ アカウントの削除は失敗します。
コンテナーは、コンテナー スコープを持つ期限切れの時間ベースのアイテム保持ポリシーよって保護されている、かつ訴訟ホールドが有効ではありません Put Blob1Set Blob MetadataPut PageSet Blob PropertiesSnapshot BlobIncremental Copy BlobAppend Block2 削除操作は許可されます。 上書き操作は許可されません。 ポリシーがロックまたはロック解除されているかどうかに関係なく、コンテナーに少なくとも 1 つの BLOB が存在する場合、コンテナーの削除は失敗します。 時間ベースのアイテム保持ポリシーを持つコンテナーが少なくとも 1 つある場合、ストレージ アカウントの削除は失敗します。
ロック解除されたポリシーでは、削除保護は提供されません。

1 Azure Storage により、Put Blob 操作で新しい BLOB を作成することが許可されます。 不変コンテナー内の既存の BLOB パスでの以降の上書き操作は、許可されません。

2Append Block 操作は、allowProtectedAppendWrites または allowProtectedAppendWritesAll プロパティが有効になっているポリシーに対してのみ許可されます。

保護された追加 BLOB の書き込みを許可する

追加 BLOB はデータ ブロックで構成され、監査とログ記録のシナリオで必要なデータ追加操作用に最適化されています。 設計上、追加 BLOB では、BLOB の末尾に新しいブロックを追加することのみが許可されます。 不変性に関係なく、追加 BLOB の既存のブロックの変更や削除は、基本的には許可されていません。 追加 BLOB の詳細については、「追加 BLOB について」を参照してください。

allowProtectedAppendWrites プロパティ設定を使用すると、不変性の保護とコンプライアンスを維持しつつ、追加 BLOB に新しいブロックを書き込むことができます。 この設定を有効にすると、ポリシーで保護されたコンテナー内に追加 BLOB を直接作成し、Append Block 操作を使用して、追加 BLOB の末尾に新しいデータ ブロックを追加できます。 新しいブロックを追加することだけができ、既存のブロックを変更したり削除したりすることはできません。 この設定を有効にしても、ブロック BLOB またはページ BLOB の不変性動作には影響しません。

AllowProtectedAppendWritesAll プロパティ設定では、allowProtectedAppendWrites プロパティと同じアクセス許可に加え、ブロック BLOB に新しいブロックを書き込む権限が追加されます。 これをアプリケーションから直接実行する方法は、Blob Storage API には用意されていません。 ただし、アプリケーションでは、Data Lake Storage Gen2 API にある append メソッドと flush メソッドを使用してこれを実現できます。 また、このプロパティを使用すると、Azure Data Factory などの Microsoft アプリケーションが内部 API を使用してデータ ブロックを追加できます。 ワークロードがこれらのツールのいずれかに依存している場合、これらのツールが BLOB にデータを追加しようとしたときに発生する可能性のあるエラーを、このプロパティを使用して回避できます。

追加 BLOB は、"有効な" 保持期間中は変更できない状態のままです。 追加 BLOB の初期作成後に新しいデータを追加できるため、保持期間の決定方法には若干の違いがあります。 有効な保持期間は、追加 BLOB の最終変更時刻とユーザーが指定した保持間隔の差になります。 同様に、保持間隔が延長されるとき、不変ストレージでは、ユーザー指定の保持間隔の最新の値が有効な保持期間の計算に使用されます。

たとえば、ユーザーが allowProtectedAppendWrites プロパティを有効にして、保持間隔が 90 日の時間ベースのアイテム保持ポリシーを作成するとします。 追加 BLOB logblob1 は今日コンテナーに作成され、今後 10 日間、新しいログが追加 BLOB に追加されます。したがって、logblob1 の有効な保持期間は、今日から 100 日 (最後に追加された時刻 + 90 日) です。

ロック解除された時間ベースのアイテム保持ポリシーを使用すると、allowProtectedAppendWritesAllowProtectedAppendWritesAll のプロパティ設定をいつでも有効または無効にすることができます。 時間ベースのアイテム保持ポリシーがロックされると、allowProtectedAppendWritesAllowProtectedAppendWritesAll のプロパティ設定は変更できなくなります。

制限

  • ストレージ アカウントでは、不変ポリシー (時間ベースの保持期間または訴訟ホールド) を持つコンテナーの最大数は 10,000 です。

  • コンテナーでは、一時点での訴訟ホールド タグの最大数は 10 です。

  • 訴訟ホールド タグの最短の長さは英数字 3 文字です。 最大長は英数字 23 文字です。

  • コンテナーでは、ポリシーの有効期間中に保持される訴訟ホールド ポリシー監査ログの最大数は 10 です。

次のステップ