Locked Container-Level WORM で新規Blobの上書きは拒否されたが削除は成功した

atsushi segawa 0 評価のポイント
2026-08-23T05:52:06.6033333+00:00

Azure Blob Storage の Container-Level WORM(time-based immutability policy)で、想定外の削除挙動を確認しました。

テスト手順は以下です。

  • 新しい専用Containerを作成
  • そのContainer内に新しいBlockBlob(record A)を作成
  • immutabilityPeriodSinceCreationInDays = 1 のContainer-Level immutability policyを作成
  • policyをLockedに変更
  • READ-ONLYでstate = Lockedを確認
  • record Aへのsame-path overwriteを試行
  • 約2秒後、同じrecord AにDelete Blobを実行

結果:

  • overwriteは期待通り拒否されました ErrorCode: BlobImmutableDueToPolicy
  • しかし約2秒後のDelete Blobはexit code 0で成功しました
  • Delete時のstdout / stderrはいずれも空でした
  • policyはその後も複数回確認しましたが、state = Lockedのままでした

削除後にREAD-ONLYで確認したところ、record Aはcurrent / deleted / versionのいずれにも存在しませんでした。

az storage blob list --include dvi の結果も空でした。

また、Storage Accountでは以下を確認しています。

  • Blob versioning: disabled
  • Soft delete: disabled
  • Legal hold: none

重要な点として、record Aは古い既存Blobではありません。同じテスト実行内で、

Container不存在確認 → 新規Container作成 → record A作成 → 1-day policy作成 → LOCK

の順で作成しています。そのため、record Aが1日の保持期間を既に満了していたとは考えられません。

Azure Portalの不変Blob Storageのガイダンスでは、保持期間内のBlobは削除できず、Locked policyをバイパスするサポートされた方法もないと説明されています。

質問したい点は以下です。

  1. なぜ同じBlobに対してoverwriteはBlobImmutableDueToPolicyで拒否された一方、Delete Blobは成功したのでしょうか。
  2. このような挙動を説明できる既知仕様・制限・既知問題はありますか。
  3. Container-Level WORMの1日保持期間について、Azure側でどのようなeffective retention expiryが計算された可能性がありますか。
  4. Microsoft側で調査するために、追加で取得すべきrequest ID、StorageBlobLogs、Activity Logなどがあれば教えてください。

再現ログ、policy JSON、CLI出力、実行時刻、SHA-256付きEvidenceは保存しています。

なお、これは「Azure全体のWORM機能に問題がある」と主張するものではなく、この特定の実行条件で観測した挙動について原因を確認したいという質問です。Azure Blob Storage の Container-Level WORM(time-based immutability policy)で、想定外の削除挙動を確認しました。

テスト手順は以下です。

  • 新しい専用Containerを作成
  • そのContainer内に新しいBlockBlob(record A)を作成
  • immutabilityPeriodSinceCreationInDays = 1 のContainer-Level immutability policyを作成
  • policyをLockedに変更
  • READ-ONLYでstate = Lockedを確認
  • record Aへのsame-path overwriteを試行
  • 約2秒後、同じrecord AにDelete Blobを実行

結果:

  • overwriteは期待通り拒否されました
    ErrorCode: BlobImmutableDueToPolicy
  • しかし約2秒後のDelete Blobはexit code 0で成功しました
  • Delete時のstdout / stderrはいずれも空でした
  • policyはその後も複数回確認しましたが、state = Lockedのままでした

削除後にREAD-ONLYで確認したところ、record Aはcurrent / deleted / versionのいずれにも存在しませんでした。

az storage blob list --include dvi の結果も空でした。

また、Storage Accountでは以下を確認しています。

  • Blob versioning: disabled
  • Soft delete: disabled
  • Legal hold: none

重要な点として、record Aは古い既存Blobではありません。同じテスト実行内で、

Container不存在確認 → 新規Container作成 → record A作成 → 1-day policy作成 → LOCK

の順で作成しています。そのため、record Aが1日の保持期間を既に満了していたとは考えられません。

Azure Portalの不変Blob Storageのガイダンスでは、保持期間内のBlobは削除できず、Locked policyをバイパスするサポートされた方法もないと説明されています。

質問したい点は以下です。

  1. なぜ同じBlobに対してoverwriteはBlobImmutableDueToPolicyで拒否された一方、Delete Blobは成功したのでしょうか。
  2. このような挙動を説明できる既知仕様・制限・既知問題はありますか。
  3. Container-Level WORMの1日保持期間について、Azure側でどのようなeffective retention expiryが計算された可能性がありますか。
  4. Microsoft側で調査するために、追加で取得すべきrequest ID、StorageBlobLogs、Activity Logなどがあれば教えてください。

再現ログ、policy JSON、CLI出力、実行時刻、SHA-256付きEvidenceは保存しています。

なお、これは「Azure全体のWORM機能に問題がある」と主張するものではなく、この特定の実行条件で観測した挙動について原因を確認したいという質問です。

Azure Blob Storage
Azure Blob Storage

非構造化データをクラウド内に BLOB として格納する Azure サービス。

0 件のコメント コメントはありません

1 件の回答

並べ替え方法: 最も役に立つ
  1. samiya123 1,375 評価のポイント Microsoft 外部スタッフ モデレーター
    2026-08-24T06:21:12.8666667+00:00

    ご質問いただきありがとうございます。

    公開情報を確認する限りでは、Azure Blob Storage の Container-Level WORM(Time-based Retention Policy)では、保持期間中の Blob は変更および削除できない動作が想定されています。

    また、Time-based Retention Policy を Locked 状態にした後は、ポリシーを削除できないことが説明されています。

    そのため、ご記載の

    • Overwrite が BlobImmutableDueToPolicy で拒否された
    • 一方で同じ Blob の Delete が成功した

    という結果につきましては**、**公開ドキュメント上の想定動作とは整合しないように見受けられます。公開資料の範囲では、この挙動を説明する既知仕様や制限事項は確認できませんでした。

    個別環境における実際の処理結果やサービス側の記録確認が必要となるため、本フォーラムのみで原因を特定することは困難です。詳細に関しましては、必要に応じて、操作時刻(UTC)、Request ID、診断ログ等の情報を添えて Azure 技術サポートへお問い合わせいただくことをご検討くださいませ。

    参考資料:

    この回答は役に立ちましたか?


お客様の回答

質問作成者は回答に "承認済み"、モデレーターは "推奨" とマークできます。これにより、ユーザーは作成者の問題が回答によって解決したことを把握できます。