Azure Blob Storage のデータ保護機能を有効化して削除とかを試した

2021.01.03

いわさです。

Azureストレージのオブジェクト削除時のバージョニングの挙動を調べていたので、試したことを記したいと思います。

データ保護

デフォルトで無効になっていますが、データ保護機能が備わっています。
基本的な機能ではありますが、細かい挙動を確認したかったので改めて試してみました。

ストレージアカウントの作成時のデータ保護タブで有効化するか、作成済みアカウントのBlob service -> データ保護 から有効化することが出来ます。

なお、削除したBlobの保持期間は1日〜365日で指定出来ます。

今回は保護ありと保護なしでストレージアカウントを用意し、ファイルを3バージョン用意し、上書き更新しました。

iwasa.takahito@HL00780 Downloads % cat 1/file.txt 
version1
iwasa.takahito@HL00780 Downloads % cat 2/file.txt 
version2
iwasa.takahito@HL00780 Downloads % cat 3/file.txt 
version3
iwasa.takahito@HL00780 Downloads %

データ保護なしの挙動

まずカレントバージョンですが、version3が表示されています。

ファイルのバージョンタブを確認してみると、version1とversion2が確認できない状態でした。

削除されたバージョンの表示、をONにしても表示はされませんでした。

スナップショットを作成してから削除してみます。

1 個の BLOB のうち 1 個を削除できませんでした:
file.txt: This operation is not permitted because the blob has snapshots.

スナップショットも併せて削除する必要があるようです。
となるとスナップショット機能は削除保護には利用できないですね。

削除ダイアログで"BLOBスナップショットも削除する"をチェックし、削除しました。

削除されました。

"削除されたBlobを表示"をチェックしても、表示されないですね。
復元できない状態になりました。

データ保護ありの挙動

次に、データ保護ありのストレージアカウントにて同じ検証を行ってみます。 カレントバージョンはversion3です。

次に、バージョンタブを確認してみましょう。

上書きされた数だけバージョンが残されていますね。
過去バージョンのダウンロードをしてみます。

過去バージョンが表示されました!
過去バージョンを最新バージョンに昇格させることも出来ます。

次に、スナップショットを作成して削除してみます。
まずはスナップショットを同時削除しない方法でやってみました。

エラー内容は同じですね。
論理削除を有効化しても、スナップショットだけを残すことは出来ないようでした。

スナップショットも併せて削除します。

削除されました。
"削除されたBlobを表示"をチェックすると表示されて、削除の取り消しや過去バージョンのダウンロードなども可能です。

まとめ

Azureストレージのデータ保護機能について試してみました。
デフォルトで無効化されていますが、基本的に有効化しておいたほうが良い機能と言えます。

ただし、過去バージョンについてはカレントバージョンと同様のストレージ層で課金が発生するので、その点だけは事前によく考えたほうが良いでしょう。