オブジェクト・バージョニングの使用
オブジェクト・バージョニングは、不注意や悪意によるオブジェクトの更新、上書きまたは削除に対するデータ保護を提供します。
バージョニングが有効化されている各バケットには、標準のOracle Cloud Infrastructure価格設定が適用されます。最新のオブジェクト・バージョンとバケットに格納されている以前のオブジェクト・バージョン(削除済バージョンを含む)がすべて課金されます。以前のオブジェクト・バージョンは、ユーザーが明示的に削除するまで保持されます。
オブジェクト・バージョニングにより、ストレージ・コストは増加します。オブジェクト・ライフサイクル管理を使用して、オブジェクト・バージョンを自動的に管理することを検討してください。
このトピックでは、オブジェクト・ストレージのバージョニングについて説明し、オブジェクト・バージョンを作成および管理する方法の詳細を示します。
オブジェクト・バージョニングについて
オブジェクト・バージョニングは、バケット・レベルで有効化されます。バージョニングでは、新規オブジェクトのアップロード、既存のオブジェクトの上書き、またはオブジェクトの削除が発生するたびに、オブジェクト・ストレージによってオブジェクト・バージョンが自動的に作成されます。オブジェクト・バージョニングは、バケットの作成時に、または後から有効化できます。
バージョニング対応のバケットには、様々なバージョンのオブジェクトを含めることができます。オブジェクトの最新バージョンが常に1つあり、以前のバージョンがゼロ以上あります。
オブジェクト・バージョニング・ステータスの理解
各オブジェクト・ストレージ・バケットには、無効、有効または一時停止のオブジェクト・バージョニング・ステータスがあります。デフォルトでは、オブジェクト・バージョニングはバケットで無効になっています。各オブジェクト・バージョニング・ステータスに関連する動作を理解することが重要です。
無効
オブジェクト・バージョニングがバケットで無効になっている場合:
- オブジェクト・バージョニングはバケットで一度も有効になっていません。
- 既存のオブジェクトと同じ名前のオブジェクトをアップロードすると、オブジェクトは上書きされ、上書きされたオブジェクトは保持またはリカバリできません。
- オブジェクトを削除すると、その削除は永久的となり、オブジェクトはリカバリできません。
有効
オブジェクト・バージョニングがバケットで有効になっている場合:
-
既存のオブジェクトと同じ名前のオブジェクトをアップロードすると、既存のオブジェクトは以前のバージョンになり、新しくアップロードしたオブジェクトが最新バージョンになります。
- アップロードした各オブジェクトには、一意のバージョン識別子が割り当てられます。識別子によって、オブジェクト・ストレージのアクションを特定のバージョンに向けることができます。
- オブジェクトを削除しても、オブジェクト・ストレージは削除されたオブジェクトのバージョンを保持します。オブジェクトの削除の詳細は、オブジェクト・バージョンの削除の理解を参照してください。
- オブジェクト・バージョニングを無効にすることはできません。ただし、バージョニングは一時停止できます。
一時停止
オブジェクト・バージョニングがバケットで一時停止されている場合:
- アップロードと削除の動作は、バージョニングが無効になっているバケットと同じです。
- バージョニングの一時停止前に作成されたオブジェクト・バージョンは、明示的なアクションを実行して削除しないかぎり保持されます。
- オブジェクト・バージョニングはいつでも再有効化できます。
オブジェクト・バージョンの削除の理解
明示的なアクションを実行するまで、バージョニングが有効になっているバケットからオブジェクトが物理的に削除されることはありません。特定のバージョンをターゲットにせずにオブジェクトを削除すると、最新のオブジェクト・バージョンが以前のオブジェクト・バージョンになり、削除ポイントをマークする特別な削除マーカーが作成されます。削除マーカーには最小限のメタデータのみが含まれます。フォルダを削除すると、フォルダ内のオブジェクトごとに削除マーカーが作成されます。削除マーカーを削除するだけで、その削除したバージョンを最新のオブジェクト・バージョンにすることができます。
削除マーカーと同じ名前のオブジェクトをアップロードすると、アップロードしたオブジェクトがそのオブジェクトの最新バージョンになります。削除マーカーは残ります。1つのオブジェクトに複数の削除マーカーを持たせたり、以前のオブジェクト・バージョンのいずれかをリカバリしたりできます。
オブジェクト・バージョンの削除は異なります。オブジェクト・バージョンを削除すると、そのバージョンは完全に削除されます。完全な削除は、最新バージョンをバージョンIDで明示的に削除した場合にも発生します。特定のオブジェクト・バージョンIDをターゲットとするすべての削除操作で、データが完全に削除されます。
必須IAMポリシー
Oracle Cloud Infrastructureを使用するには、管理者によってポリシーでセキュリティ・アクセス権が付与されている必要があります。このアクセス権は、コンソール、あるいはSDK、CLIまたはその他のツールを使用したREST APIのいずれを使用している場合でも必要です。権限を持っていない、または認可されていないというメッセージが表示された場合は、持っているアクセス権のタイプと作業しているコンパートメントを管理者に確認してください。
ポリシーを初めて使用する場合は、ポリシーの開始と共通ポリシーを参照してください。
管理者の場合:
- 指定したIAMグループで、テナンシのすべてのコンパートメント内のオブジェクト・ストレージのネームスペース、バケット、およびそれらに関連付けられたオブジェクトを管理するポリシーを作成できます。たとえば、IAMグループのStorageAdminsがテナンシのすべての操作を実行できるようにするには:
Allow group StorageAdmins to manage object-family in tenancy
- または、アクセスの範囲を狭くするポリシーを作成できます。たとえば、StorageAdminsグループがテナンシのObjectStoreというコンパートメント内のバケットとオブジェクトのみを管理できるようにするポリシーを作成できます:
Allow group StorageAdmins to manage buckets in compartment ObjectStore Allow group StorageAdmins to manage objects in compartment ObjectStore
- 個別の権限を付与するより限定的なポリシーを作成する場合、バージョニングを有効化するにはBUCKET_UPDATEが必要です。オブジェクトのアップロード、既存のオブジェクトの上書き、またはオブジェクトの削除を行うには、これらの操作に必要な通常の権限を持っていることが必要です。オブジェクト・バージョンを削除するには、OBJECT_VERSION_DELETEが必要です。たとえば、StorageSupportというグループがオブジェクト・ストレージのリソースを管理できるようにし、そのグループがオブジェクト・バージョンを完全に削除しないようにするには:
Allow group StorageSupport to manage object-family in tenancy where request.operation != 'DeleteObjectVersion'
ポリシーを記述するための他の代替手段の詳細は、オブジェクト・ストレージ、アーカイブ・ストレージおよびデータ転送の詳細を参照してください。
範囲および制約
- バージョニングは、標準(オブジェクト・ストレージ)またはアーカイブ・ストレージ層のバケットで有効化できます。
- アーカイブされたオブジェクトのリストアはインプレース操作であり、オブジェクト・バージョンは作成されません。
- オブジェクトの最新バージョンの名前は変更できますが、以前のオブジェクト・バージョンの名前は変更できません。オブジェクトの名前を変更すると、新しいオブジェクトが作成されます。
バージョニングとその他のオブジェクト・ストレージ機能間の相互作用
この項では、オブジェクト・バージョニングとその他のオブジェクト・ストレージ機能との相互作用について理解する必要がある重要な事項について説明します。
バケットの再暗号化
Oracleまたは独自のマスター暗号化キーのいずれかを使用してバケットを再暗号化すると、既存のオブジェクト・バージョンも再暗号化されます。
ライフサイクル管理
ライフサイクル・ポリシーで、オブジェクトの最新バージョンまたは以前のバージョンをアーカイブできます。ライフサイクル・ポリシーでオブジェクトの最新バージョンを削除すると、そのオブジェクトが以前のバージョンになり、削除マーカーが作成されます。ライフサイクル・ポリシーでオブジェクトの以前のバージョンを削除した場合、その削除は永続的です。
オブジェクトのコピー
最新バージョンのオブジェクトを別のバケットにコピーする場合、そのオブジェクトのみがコピーされます。そのオブジェクトの以前のバージョンはいずれもコピーされません。オブジェクトの以前のバージョンを別のバケットにコピーできますが、そのアクションによって、宛先バケットに新しいオブジェクトの最新バージョンまたは新しいオブジェクト・バージョンが作成されます。
レプリケーション
- レプリケーションでは、以前のオブジェクト・バージョンをレプリケートできません。
- レプリケーション宛先バケットでバージョニングを有効にすることはできません。宛先バケットは読取り専用です。
保持ルール
- バージョニングが有効になっているバケットには保持ルールを追加できません。
- アクティブな保持ルールを持つバケットではバージョニングを有効にできません。
- バージョニングが一時停止されているバケットには保持ルールを追加できます。ただし、アクティブな保持ルールを持つバージョニングを再開することはできません。
バージョニングのトラブルシューティング
このトピックでは、バージョニングを使用した場合に発生する可能性がある問題のトラブルシューティング解決策を提供します。
バージョニングの有効化に失敗した場合、最も可能性の高い原因は、IAM権限が欠落しているか、不完全であることです。バージョニングの有効化には次が必要です:
- バケットを使用し、そのバケット内のオブジェクトを管理できるユーザー権限。
- BUCKET_UPDATE権限(最小限)。
ユーザー権限を付与する既存のポリシーを確認します。詳細は、必須IAMポリシーを参照してください。
削除したバケットをリカバリすることはできません。
次のリソースのいずれかが含まれているバケットは削除できません:
- オブジェクトおよびオブジェクト・バージョン
- 事前認証済リクエスト
- レプリケーション・ポリシー
- コミットされていないマルチパート・アップロード
バージョン対応バケットのオブジェクトを削除すると、そのオブジェクトの以前のバージョンが作成されます。「削除したオブジェクトの表示」を選択すると、バケットの削除を妨げる可能性のあるオブジェクト・バージョンが表示されます。
以前のオブジェクト・バージョンの削除に失敗した場合、最も可能性の高い原因は、IAM権限が欠落しているか、不完全であることです。オブジェクト・バージョンの削除には次が必要です:
- バケットを使用し、そのバケット内のオブジェクトを管理できるユーザー権限。
- OBJECT_VERSION_DELETE権限(最小限)。