🌟

Cloud Storageに実装されたオブジェクト保持ロック機能の紹介

2024/01/12に公開

はじめに

こんにちは、クラウドエースのデータソリューション部所属の児島です。

クラウドエースのITエンジニアリングを担うシステム開発統括部の中で、特にデータ基盤構築・分析基盤構築からデータ分析までを含む一貫したデータ課題の解決を専門とするのがデータソリューション部です。

データソリューション部では活動の一環として、毎週 Google Cloud の新規リリースを調査・発表し、データ領域のプロダクトのキャッチアップをしています。その中でも重要と考えるリリースを本ページ含め記事として公開しています。

今回ご紹介するリリースは「Cloud Storage でオブジェクト保持ロック機能が一般提供された」というものです。
これにより、この機能を有効化した Cloud Storage バケット内の個々のオブジェクトに対して上書きや削除を無効化する保持期間を設定することができるようになりました。

リリース内容

本リリースは2023年11月21日付で発表された Cloud Storage の Object Retention Lock feature(オブジェクト保持ロック機能)が一般提供された、という内容に関するものです。
従来からあったバケットロックがバケット単位で保持設定を管理する機能であるのに対し、本記事で紹介する機能はバケット内のファイル単位で保持設定を管理する機能です。
なお、注意点として保持期間を設定した後、期間を短くすることや、保持設定自体の削除はできなくなるため、設定前に適切な期間を考慮して本機能を適用していただくようお願いします。
該当するリリース記事はこちらです

確認してみた

概要/手順

この記事でご紹介するオブジェクト保持ロック機能を実際に使用するために、新規のCloud Storageバケットを作成します。
まずはバケットを作成したい Google Cloud のプロジェクトを選択し、Cloud Shell を起動します。

本記事作成時点(2024年1月時点)ではバケット作成時のオプション機能としてオブジェクト保持ロック機能がリリースされています。そのため、この機能を有効化するためにはバケット作成時に以下のような指定をする必要があります。

gcloud storage buckets create gs://BUCKET_NAME --enable-per-object-retention

上記のgcloud bucket create コマンドはCloud Storageバケットの新規作成を行うコマンドです。
BUCKET_NAMEには作成する新規バケットの名前を指定します。

--enable-per-object-retention

の部分が、今回ご紹介するオブジェクト保持ロック機能を新規バケットで有効化するためのオプションです。

上記のコマンドでオブジェクト保持ロック機能が有効化されたバケットを作成し、バケットにsample_1.txt、sample_2.txtという二つのファイルをアップロードしました。

ここまででバケット内の個々のオブジェクトに保持ロック機能を適用する準備が整いました。

次に、先ほどアップロードしたテストファイルのうちsample_1.txtに保持ロック機能を適用したいと思います。
そのためには以下のようなコマンドを実行します。

gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME --retain-until=DATETIME --retention-mode=STATE

上記のコマンドにつきまして、
BUCKET_NAME は、適用するバケットの名前です。今回作成したバケットはtest-bucket-2024-01という名前です。
OBJECT_NAME は、適用するオブジェクトの名前です。今回はsample_1.txtを設定します。
DATETIME は、保持期間をDATETIME型で指定し、オブジェクトを削除できる最も早い日時を指定します。今回は日本時間の2024年1月10日18:10:00を指定することにしますので、2024-01-10T18:10:00JSTと指定します。
STATE は Locked か Unlocked のどちらかです。今回は保持ロック機能を有効化するため、Lockで指定します。
上記を踏まえ、実際に実行したコマンドは以下のものです。

gcloud storage objects update gs://test-bucket-2024-01/sample_1.txt --retain-until=2024-01-10T18:10:00JST --retention-mode=Locked

上記のコマンドが正常に終了すると以下のようなレスポンスがコマンドライン上に返ります。

Patching gs://test-bucket-2024-01/sample_1.txt...                                                                                                                                                                                                                                                                              
Completed 1

実際にオブジェクトを選択し、詳細画面で確認したところ、以下のようになっています。
policy.png
また、バケット内のオブジェクト全てではなく、sample_1.txtのみにこの設定が適用されていることも確認できました。
hoji-settei.png

ここまでの手順でsample_1.txtにオブジェクト保持ロック機能を適用することができました。

最後に保持期間までに保持ロック機能が適用されたオブジェクトが削除されないことを確認したいと思います。
今回は検証用に作成したバケットtest-bucket-2024-01を削除する操作を行ってみました。
kakunin-gamen.png

その結果、sample_1.txtが削除されず、それに伴ってバケットの削除にも失敗していることを確認できました。
sakujo-shippai.png

改めてバケットの中を確認したところ、問題なくsample_1.txtは保持されていましたが、保持ロック機能を有効化していないもう一つのファイルであるsample_2.txtは削除されてしまっていました。
file-sakujo.png

以上、Cloud Storageのオブジェクト保持ロック機能の適用手順と検証を行いました。

まとめ

ここまで、新規バケットを作成する際にオブジェクト保持ロック機能を設定できること、保持期間中には保持ロック機能が有効化されているオブジェクトおよびそのオブジェクトが格納されているバケットが削除されないことを確認しました。
このリリースによって今後作成するCloud Storageバケットに格納するオブジェクトの保持期間を個別に設定することが可能となりました。

Discussion