ブロブソフトデリットは、削除されたデータを一定期間システム内に保持することで、個々のブロブ、スナップショット、またはバージョンを誤って削除や上書きから守ります。 保持期間中は、論理的に削除されたオブジェクトを削除された時点の状態に復元することができます。 保持期間が終了すると、そのオブジェクトは永久に削除されます。
推奨されるデータ保護の構成
BLOB の論理的な削除は、BLOB データの包括的なアカウント内データ保護戦略の一部です。 Blob データを最適に保護するために、Microsoft は次のデータ保護機能を有効にすることをお勧めします。
Blobソフト削除は、削除したBlobやスナップショット、またはバージョンを復元するためのものです。 BLOB の論理的な削除も有効にする方法については、BLOB の論理的な削除の有効化と管理に関する記事をご覧ください。
コンテナソフトデリットは、削除したコンテナを復元するためのものです。 コンテナーの論理的な削除を有効にする方法については、「コンテナーの論理的な削除を有効にして管理する」をご覧ください。
アカウントの誤削除やランサムウェアなど、より広範なデータ損失シナリオから保護するには、アカウント内機能に加えてAzure Backupを有効にすることを検討してください。 データ保護に関する Microsoft の推奨事項の詳細については、「データ保護の概要」を参照してください。
注意
ストレージアカウントでブロブのバージョン管理を有効にすると、そのアカウント内のブロブへの書き込み操作ごとに新しいバージョンが作成されます。 このため、ブロブのバージョン管理を有効にすると追加コストが発生する可能性があります。 コストを最小限に抑えるには、ライフサイクル管理ポリシーを使用して、古いバージョンを自動的に削除します。 ライフサイクル管理の詳細については、「Azure Blob Storage アクセス層の自動化によるコストの最適化」を参照してください。
BLOB の論理的な削除のしくみ
ストレージ アカウントで BLOB の論理的な削除を有効にするときは、削除されたオブジェクトの保持期間を 1 日から 365 日の範囲で指定します。 保持期間は、データが削除または上書きされた後で、そのデータを使用できる期間を示します。 オブジェクトが削除または上書きされるとすぐに、保持期間が開始されます。
保持期間がアクティブな間は、Undelete Blob 操作を呼び出すことによって、削除された BLOB とそのスナップショット、または削除されたバージョンを復元できます。 次の図は、BLOB の論理的な削除が有効になっている場合に、削除されたオブジェクトを復元する方法を示したものです。
論理的な削除のリテンション期間はいつでも変更できます。 更新された保持期間は、保持期間が変更された後で削除されたデータにのみ適用されます。 保持期間が変更される前に削除されたデータには、削除された時点で有効であった保持期間が適用されます。
論理的に削除されたオブジェクトの削除を試みても、有効期限に影響はありません。
BLOB の論理的な削除を無効にすると、論理的な削除の保持期間が経過するまでは、ストレージ アカウント内の論理的に削除されたオブジェクトに引き続きアクセスして復旧できます。
Microsoftがソフト削除と同時に有効にすることを推奨しているBlobのバージョン管理は、汎用v2、ブロックBlob、Blobストレージアカウントで利用可能です。 階層的な名前空間を持つアカウントではバージョン管理はサポートされていません。
Azure Storage REST APIのバージョン2017-07-29以降は、blobソフト削除をサポートしています。
重要
BLOB の論理的な削除は、個々の BLOB、スナップショット、(階層型名前空間の) ディレクトリ、またはバージョンの復元のみに使用できます。 コンテナーとその内容を復元するには、ストレージ アカウントでコンテナーの論理的な削除を有効にする必要があります。 BLOB データを完全に保護するために、コンテナーの論理的な削除と BLOB のバージョン管理を BLOB の論理的な削除と共に有効にすることをお勧めします。 詳細については、「データ保護の概要」を参照してください。
BLOB 論理的な削除を使用して、ストレージ アカウントの削除から保護することはできません。 ストレージ アカウントを削除から保護するには、ストレージ アカウント リソースに対してロックを構成します。 ストレージ アカウントのロックの詳細については、「Azure Resource Manager のロックをストレージ アカウントに適用する」を参照してください。
論理的な削除が有効になっているときに削除が処理される方法
ブロブソフトデリットを有効にすると、ブロブを削除するとそのブロブはソフトデリットとしてマークされます。 削除してもスナップショットは作成されません。 保持期間が終了すると、論理的に削除された BLOB は完全に削除されます。 階層的な名前空間を持つアカウントでは、ブロブのアクセス制御リストは影響を受けず、ブロブが復元されてもそのまま残ります。
ブロブにスナップショットがある場合、スナップショットも削除しない限りブロブを削除することはできません。 ブロブとそのスナップショットを削除すると、ブロブもスナップショットもソフト削除としてマークされます。 削除しても新しいスナップショットは作成されません。
ベース BLOB を削除せずに、アクティブなスナップショットを 1 つ以上削除することもできます。 この場合、スナップショットは論理的に削除されます。
階層的な名前空間機能が有効なアカウントのディレクトリを削除すると、そのディレクトリとそのすべての内容はソフト削除としてマークされます。 ソフト削除されたディレクトリのみにアクセスできます。 ソフト削除されたディレクトリの内容にアクセスするには、ソフト削除されたディレクトリの削除を取り消す必要があります。
論理的に削除されたオブジェクトは、明示的に表示または一覧表示されない限り、非表示になります。 論理的に削除されたオブジェクトを一覧表示する方法の詳細については、「論理的に削除された BLOB を管理および復元する」を参照してください。
論理的な削除が有効になっているときに上書きが処理される方法
重要
このセクションは、階層型名前空間を持つアカウントには適用されません。
Put Blob、Put Block List、Copy Blob などの操作を呼び出すと、BLOB 内のデータが上書きされます。 ブロブソフトデリットが有効になると、書き込み操作前にブロブの状態をソフト削除したスナップショットを自動的に上書きします。 保持期間が終了すると、論理的に削除されたスナップショットは完全に削除されます。 システムがスナップショットを作成する操作は、Azure MonitorのリソースログやStorage Analyticsのログには現れません。
ソフト削除されたスナップショットは、ソフト削除されたオブジェクトを明示的に表示またはリストしない限り見えません。 論理的に削除されたオブジェクトを一覧表示する方法の詳細については、「論理的に削除された BLOB を管理および復元する」を参照してください。
コピー操作を保護するには、宛先のストレージアカウントでブロブソフト削除を有効にする必要があります。
BLOB の論理的な削除では、BLOB のメタデータまたはプロパティを書き込む操作からは保護されません。 削除は、ブロブのメタデータやプロパティが更新された際にソフト削除されたスナップショットを作成することはありません。
Premium Storage アカウントの場合、論理的に削除されたスナップショットは、BLOB ごとの制限である 100 スナップショットにはカウントされません。
論理的に削除されたオブジェクトの復元
保持期間内に Undelete Blob 操作を呼び出すことで、論理的に削除された BLOB または (階層型名前空間の) ディレクトリを復元できます。 Undelete Blob 操作を実行すると、BLOB とそれに関連付けられている論理的に削除されたスナップショットが復元されます。 保持期間中に削除したスナップショットを復元します。 階層型名前空間を持つアカウントでは、BLOB のアクセス制御リストが BLOB と共に復元されます。
階層的な名前空間を持つアカウントでは、 Undelete Blob 操作を使ってソフト削除されたディレクトリとそのすべての内容を復元することもできます。 論理的に削除された BLOB を含むディレクトリの名前を変更すると、それらの論理的に削除された BLOB はディレクトリから切断されます。 それらのブロブを復元するには、ディレクトリ名を元の名前に戻すか、元のディレクトリ名を使う別のディレクトリを作成する必要があります。 そうしないと、ソフト削除されたブロブを復元しようとしたときにエラーが出ます。 また、すでにその名前のディレクトリやブロブがあるファイルパスにディレクトリやブロブを復元することはできません。 例えば、a.txt(1)を削除し、同じくa.txt(2)という名前の新しいファイルをアップロードした場合、アクティブなa.txt(2)が削除または名前変更されるまでソフト削除されたa.txt(1)を復元できません。 ソフト削除されたディレクトリの内容には、そのディレクトリが復元されるまでアクセスできません。
ソフト削除されていないブロブに対して Undelete Blob を呼び出すと、そのブロブに関連付けられたソフト削除済みのスナップショットが復元されます。 ブロブにスナップショットがなく、論理削除もされていない場合、Blob の削除取り消しを呼び出しても効果はありません。
論理的に削除されたスナップショットをベース BLOB にレベル上げするには、最初にベース BLOB で Undelete Blob を呼び出して、BLOB とそのスナップショットを復元します。 次に、目的のスナップショットをベース BLOB に上書きコピーします。 新しい BLOB にスナップショットをコピーすることもできます。
ソフト削除されたブロブやスナップショットのデータは、オブジェクトが復元されるまで読み取れません。
論理的に削除されたオブジェクトを復元する方法の詳細については、「論理的に削除された BLOB を管理および復元する」を参照してください。
ヒント
ストレージ タスクを使用すると、定義した一連の条件に基づいて、複数のストレージ アカウント全体で BLOB を大規模に復元できます。 ストレージ タスクは Azure Storage Actions で利用できるリソースです。これは、複数のストレージ アカウントにまたがる数百万ものオブジェクトに対して一般的なデータ操作を実行するために使用できるサーバーレス フレームワークです。 詳細については、「Azure Storage Actions とは」を参照してください。
BLOB の論理的な削除とバージョン管理
重要
階層的な名前空間を持つアカウントではバージョン管理はサポートされていません。
ストレージアカウントでBlobのバージョン設定とBlobソフト削除の両方を有効にすると、Blobを上書きすると自動的に書き込み前のBlobの状態を反映した新しい以前のバージョンが作成されます。 新しいバージョンは論理的に削除されず、論理的な削除の保持期間が過ぎても削除されません。 論理的に削除されたスナップショットは作成されません。
ストレージアカウントでブロブのバージョン設定とブロブソフト削除の両方を有効にすると、ブロブを削除すると現在のバージョンが前のバージョンになり、現在のバージョンは存在しません。 新しいバージョンは作成されず、論理的に削除されたスナップショットは作成されません。 過去のすべてのバージョンは、直接削除操作またはライフサイクル管理ポリシーを通じて明示的に削除するまで保持されます。
論理的な削除とバージョン管理を一緒に有効にすると、以前の BLOB バージョンと現在のバージョンが削除から保護されます。 ソフト削除を有効にすると、Blobを削除してもバージョンは削除されずに残ります。 バージョンを削除すると、そのバージョンは論理的に削除された状態になります。 ソフト削除されたバージョンは、ソフト削除の保持期間が経過するまで保持されます。 保持期間が経過すると、ソフト削除されたブロブバージョンは永久に削除されます。
Undelete Blob 操作を使用すると、論理的に削除されたバージョンを論理的な削除の保有期間中に復元できます。 Undelete Blob 操作では常に、BLOB の論理的に削除されたすべてのバージョンが復元されます。 論理的に削除された 1 つのバージョンのみを復元することはできません。
注
バージョン管理が有効で削除されたブロブに対して「 Blobの削除解除 」操作を呼び出すと、ソフト削除されたバージョンやスナップショットは復元されますが、現在のバージョンは復元されません。 現在のバージョンを復元するには、前のバージョンを現在のバージョンにコピーして昇格させます。
最適なデータ保護のため、ストレージ アカウントのバージョン管理と BLOB の論理的な削除の両方を有効にすることをお勧めします。 BLOB のバージョン管理と論理的な削除の併用の詳細については、「BLOB のバージョン管理と論理的な削除」を参照してください。
操作による BLOB の論理的な削除の保護
次の表は、BLOB の論理的な削除が有効にされていて、BLOB のバージョン管理が有効または無効にされている場合の、削除操作と書き込み操作の想定される動作を示しています。 以下の表では、 変更がない とは、ブロブソフト削除が有効かどうかにかかわらず操作が同じ動作をすることを意味します。
ストレージ アカウント (階層型名前空間なし)
| REST API の操作 | 論理的な削除が有効 | 論理的な削除とバージョン管理が有効 |
|---|---|---|
| ストレージ アカウントの削除 | 変更はありません。 削除されたアカウントではコンテナやブロブは復元できません。 | 変更はありません。 削除されたアカウントではコンテナやブロブは復元できません。 |
| コンテナーの削除 | 変更はありません。 削除されたコンテナ内のブロブは復元できません。 | 変更はありません。 削除されたコンテナ内のブロブは復元できません。 |
| BLOB の削除 | BLOB の削除に使った場合、その BLOB は論理的に削除済みとしてマークされます。 BLOB のスナップショットを削除するために使用した場合、そのスナップショットは論理的に削除済みとしてマークされます。 |
BLOB を削除するために使用した場合、現在のバージョンが前のバージョンになり、現在のバージョンは削除されます。 新しいバージョンは作成されず、論理的に削除されたスナップショットは作成されません。 BLOB のバージョンを削除するために使用した場合、そのバージョンは論理的に削除済みとしてマークされます。 |
| BLOB の削除の取り消し | 保持期間内に削除された BLOB とすべてのスナップショットが復元されます。 | 保持期間内に削除された BLOB とすべてのバージョンが復元されます。 |
|
Blob を配置 ブロックリストの配置 ブロブをコピー URL から BLOB をコピーする |
アクティブな BLOB に対して呼び出した場合、操作の前の BLOB の状態のスナップショットが自動的に生成されます。 論理的に削除された BLOB に対して呼び出した場合、同じ種類の BLOB で置き換えられている場合にのみ、BLOB の以前の状態のスナップショットが生成されます。 BLOB の種類が異なる場合は、既存のすべての論理的に削除されたデータが完全に削除されます。 |
操作の前の BLOB の状態をキャプチャした新しいバージョンが、自動的に生成されます。 |
| ブロックを置く | アクティブな BLOB にブロックをコミットするために使用した場合、変更はありません。 論理的に削除された BLOB にブロックをコミットするために使用した場合、新しい BLOB が作成され、論理的に削除された BLOB の状態をキャプチャするためにスナップショットが自動的に生成されます。 |
変更はありません。 |
|
Put ページ URL からページを配置する |
変更はありません。 この操作を使って上書きまたは消去されるページ BLOB のデータは保存されず、復旧できません。 | 変更はありません。 この操作を使って上書きまたは消去されるページ BLOB のデータは保存されず、復旧できません。 |
|
ブロックの追加 URL からブロックを追加 |
変更はありません。 | 変更はありません。 |
| Blobプロパティを設定する | 変更はありません。 上書きされた BLOB のプロパティは復旧できません。 | 変更はありません。 上書きされた BLOB のプロパティは復旧できません。 |
| BLOB メタデータの設定 | 変更はありません。 上書きされた BLOB のメタデータは復旧できません。 | 操作の前の BLOB の状態をキャプチャした新しいバージョンが、自動的に生成されます。 |
| Blobの階層を設定する | ベース BLOB は新しい層に移動されます。 アクティブなスナップショットまたは論理的に削除されたスナップショットは、元の層に残ります。 論理的に削除されたスナップショットは作成されません。 | ベース BLOB は新しい層に移動されます。 アクティブなバージョンまたは論理的に削除されたバージョンは、元の層に残ります。 新しいバージョンは作成されません。 |
ストレージ アカウント (階層型名前空間)
| REST API の操作 | ソフト削除有効 |
|---|---|
| ストレージ アカウントの削除 | 変更はありません。 削除されたアカウントのコンテナーと BLOB は復旧できません。 |
| ファイルシステム - 削除 | 変更はありません。 削除されたコンテナーの BLOB は復旧できません。 |
| コンテナーの削除 | 変更はありません。 削除されたコンテナ内のブロブは復元できません。 |
| パス - 削除 | 論理的に削除された BLOB またはディレクトリが作成されます。 論理的に削除されたオブジェクトは、保有期間が経過すると削除されます。 |
| BLOB の削除 | 論理的に削除されたオブジェクトが作成されます。 論理的に削除されたオブジェクトは、保有期間が経過すると削除されます。 スナップショットを持つブロブにはソフトデリットはサポートされていません。 |
| パス - 作成 (BLOB またはディレクトリの名前が変更される) | 既存の宛先 BLOB または空のディレクトリはソフト削除され、ソースで置き換えられます。 論理的に削除されたオブジェクトは、保有期間が経過すると削除されます。 |
| 既存の BLOB の有効期限を設定する Set Blob Expiry | 論理的に削除された BLOB は作成されません。 有効期限が切れた BLOB は、有効期限が切れるときに論理的に削除された BLOB になりません。 |
機能のサポート
この機能のサポートは、Data Lake Storage Gen2、ネットワーク ファイルシステム (NFS) 3.0 プロトコル、または SSH ファイル転送プロトコル (SFTP) を有効にすることによって影響を受ける可能性があります。 これらの機能のいずれかを有効にしている場合は、「Azure Storage アカウントでの Blob Storage 機能のサポート」 を参照して、この機能のサポートを評価してください。
論理的な削除は、階層型名前空間を使っていないストレージ アカウントで Data Lake Storage API を使ってアップロードされる BLOB ではサポートされていません。
価格と課金
論理的に削除されたデータはすべて、アクティブなデータと同じレートで課金されます。 保存期間終了後に永久に削除されたデータに対しては料金がかかりません。
ソフト削除を有効にする際は、短い保持期間を設けて、その機能が請求書にどのような影響を与えるかをよりよく理解しましょう。 推奨される最小保持期間は 7 日です。
頻繁に上書きされるデータのソフト削除を有効にすると、記憶容量の料金が増加し、ブロブをリストアップする際の遅延が増加する可能性があります。 この追加コストと遅延を軽減するには、頻繁に上書きされるデータをソフト削除を無効にした別のストレージアカウントに保存できます。
BLOB が上書きまたは削除されるとき、スナップショットまたはバージョンの自動生成に関連するトランザクションに対しては課金されません。 Undelete Blob 操作の呼び出しについては、書き込み操作のトランザクションのレートで課金されます。
Blob Storage の料金の詳細については、Blob Storage の価格に関するページを参照してください。
BLOB の論理的な削除と仮想マシンのディスク
BLOB の論理的な削除は、内部のページ BLOB である Premium と Standard の両方のアンマネージド ディスクで使用できます。 論理的な削除は、Delete Blob、Put Blob、Put Block List、Copy Blob の各操作についてのみ、削除または上書きされたデータの復旧に役立ちます。
Put Page を呼び出すことで上書きされたデータは復旧できません。 Azureの仮想マシンはPut Pageの呼び出しを使って管理されていないディスクに書き込みを行うため、ソフト削除でAzureのVMから管理されていないディスクへの書き込みを元に戻すのはサポートされていません。