S3 オブジェクトロック の概要 - Amazon Simple Storage Service

S3 オブジェクトロック の概要

S3 オブジェクトロック では、Write Once Read Many (WORM) モデルを使用してオブジェクトを保存できます。これにより、オブジェクトが固定期間または無期限に削除または上書きされることを防止できます。S3 オブジェクトロック を使用して、WORM ストレージを必要とする規制要件を満たしたり、オブジェクトの変更や削除に対する保護レイヤーを追加したりできます。

Amazon S3 オブジェクトのロックステータスの管理に関する詳細については、「Amazon S3 オブジェクトロックの管理」を参照してください。

注記

S3 オブジェクトロック を有効にした S3 バケットは、Amazon S3 サーバーアクセスのログ記録 の送信先バケットとして使用できません。

以下のセクションでは、S3 オブジェクトロック の主な機能について説明します。

リテンションモード

S3 オブジェクトロック では、次の 2 つのリテンションモードが提供されます。

  • ガバナンスモード

  • コンプライアンスモード

これらのリテンションモードは、さまざまなレベルの保護をオブジェクトに対して適用します。どちらのリテンションモードも、オブジェクトロック で保護されているオブジェクトバージョンに適用できます。

ガバナンスモードでは、特別なアクセス許可を持たない限り、ユーザーはオブジェクトのバージョンの上書きや削除、ロック設定を変更することはできません。ガバナンスモードでは、ほとんどのユーザーからのオブジェクトの削除を防止しますが、必要に応じて一部のユーザーにリテンション設定の変更、またはオブジェクトの削除を許可することができます。ガバナンスモードを使用して、コンプライアンスモードの保持期間を作成する前に、保持期間の設定をテストすることもできます。ガバナンスモードのリテンション設定を上書きまたは削除するには、ユーザーは s3:BypassGovernanceRetention アクセス許可を持っている必要があり、また、ガバナンスモードの上書きを必要とするリクエストで、x-amz-bypass-governance-retention:true を要求ヘッダーとして明示的に含める必要があります。

注記

Amazon S3 コンソールにはデフォルトで、x-amz-bypass-governance-retention:true ヘッダーが含まれています。ガバナンスモードで保護されているオブジェクトを削除しようとする場合、s3:BypassGovernanceRetention または s3:GetBucketObjectLockConfiguration アクセス許可があれば、そのオペレーションは成功します。

コンプライアンスモードでは、AWS アカウントの root ユーザーを含め、ユーザーが、保護されたオブジェクトのバージョンを上書きまたは削除することはできません。コンプライアンスモードでオブジェクトをロックすると、そのリテンションモードを変更することはできず、保持期間を短縮することはできません。コンプライアンスモードでは、保持期間中にオブジェクトのバージョンを上書きまたは削除することはできません。

注記

オブジェクトロック を配置または変更したときのように、オブジェクトバージョンのメタデータを更新しても、オブジェクトバージョンが上書きされたり、Last-Modified タイムスタンプがリセットされることはありません。

保持期間

保持期間は、一定期間オブジェクトバージョンを保護します。オブジェクトバージョンに保持期間を設定すると、Amazon S3 はオブジェクトバージョンのメタデータにタイムスタンプを保存して、保持期間の有効期限を示します。保持期間が終了すると、オブジェクトバージョンをリーガルホールドしない限り、オブジェクトバージョンを上書きまたは削除することができます。

保持期間は明示的に、またはバケットのデフォルト設定を通じてオブジェクトバージョンに配置することができます。保持期間をオブジェクトバージョンに明示的に適用する場合は、オブジェクトバージョンのリテンション期日を指定します。Amazon S3 はオブジェクトバージョンのメタデータにリテンション期日を保存し、保持期間が終了するまでオブジェクトバージョンを保護します。

バケットのデフォルト設定を使用するときは、保持期日を指定しません。代わりに、バケット内に配置されたすべてのオブジェクトバージョンを保護する期間を日数または年単位で指定します。バケットにオブジェクトを配置すると、Amazon S3 は、オブジェクトバージョンの作成タイムスタンプに指定された期間を追加してオブジェクトバージョンのリテンション期日を計算します。さらに、オブジェクトバージョンのメタデータにリテンション期日を格納します。オブジェクトバージョンは、オブジェクトバージョンにその保持期間のロックを明示的に配置した場合とまったく同様に保護されます。

注記

バケットにオブジェクトバージョンを配置する要求に明示的なリテンションモードと期間が含まれている場合、それらの設定は、そのオブジェクトバージョンのバケットのデフォルト設定を上書きします。

他のすべての オブジェクトロック 設定と同様に、保持期間は個々のオブジェクトバージョンに適用されます。単一のオブジェクトのバージョンが異なれば、リテンションモードや期間も異なる可能性があります。

たとえば、30 日間の保持期間に 15 日のオブジェクトがあり、同じ名前と 60 日間の保持期間を持つオブジェクトを Amazon S3 に PUT するとします。この場合、PUT が正常に実行され、Amazon S3 は保持期間が 60 日の新しいバージョンを作成します。古いバージョンは元の保持期間を維持し、15 日後に削除可能になります。

保持設定をオブジェクトバージョンに適用した後、保持期間を延長することができます。これを行うには、現在設定されているオブジェクトバージョンよりも後のRetain Until Dateを持つオブジェクトバージョンに新しいロック要求を送信します。Amazon S3 は、既存の保持期間を新しい、より長い期間に置き換えます。オブジェクトの保持期間を設定するアクセス許可を持つユーザーは、どちらのモードでもロックされたオブジェクトバージョンの保持期間を延長できます。

オブジェクトロック を使用すると、オブジェクトバージョンをリーガルホールドすることもできます。保持期間と同様に、リーガルホールドは、オブジェクトバージョンが上書きまたは削除されるのを防ぎます。ただし、リーガルホールドには関連する保持期間はなく、削除するまで有効です。リーガルホールドは、s3:PutObjectLegalHold アクセス許可を持つ任意のユーザーが自由に適用および解除できます。Amazon S3 アクセス許可の詳細なリストについては、「Amazon S3 のアクション、リソース、条件キー」を参照してください。

リーガルホールドは、保持期間から独立しています。オブジェクトを含むバケットに オブジェクトロック が有効になっている限り、指定されたオブジェクトバージョンに保持期間が設定されているかどうかにかかわらず、リーガルホールドを適用および解除できます。オブジェクトバージョンをリーガルホールドしても、そのオブジェクトバージョンのリテンションモードや保持期間には影響しません。たとえば、オブジェクトバージョンをリーガルホールドし、オブジェクトバージョンも保持期間で保護するとします。保持期間が終了すると、オブジェクトは WORM 保護を失いません。むしろ、リーガルホールドは、許可されたユーザーが明示的に解除するまでオブジェクトを保護し続けます。同様に、オブジェクトバージョンに有効な保持期間がある間にリーガルホールドを解除すると、保護期間が終了するまでオブジェクトバージョンは保護されたままになります。

バケット設定

オブジェクトロック を使用するには、バケットのオブジェクトロックを有効にします。オプションで、バケットに配置された新しいオブジェクトに適用されるデフォルトのリテンションモードと期間を設定することもできます。

S3 オブジェクトロック の有効化

オブジェクトをロックする前に、S3 オブジェクトロック を使用するようにバケットを設定する必要があります。これを行うには、オブジェクトロック を有効にするバケットをいつ作成するかを指定します。オブジェクトロック 用のバケットを設定した後、そのバケット内のオブジェクトを保持期間やリーガルホールド、またはその両方を使用してロックすることができます。

注記
  • 新しいバケットに対してのみ オブジェクトロック を有効にすることができます。既存のバケットの オブジェクトロック をオンにする場合は、AWS サポートにお問い合わせください。

  • オブジェクトロック が有効になっているバケットを作成すると、Amazon S3 は自動的にバケットのバージョニングを有効にします。

  • オブジェクトロック を有効にしてバケットを作成すると、オブジェクトロック を無効にしたり、バケットのバージョニングを停止したりすることはできません。

コンソールでの オブジェクトロック の有効化の詳細については、Amazon Simple Storage Service コンソールユーザーガイド の「Amazon S3 オブジェクトをロックする方法」を参照してください。

デフォルトの保持設定

バケットの オブジェクトロック をオンにすると、バケットは保護されたオブジェクトを格納できます。ただし、バケットに入れたオブジェクトは自動的には保護されません。バケットに配置されたオブジェクトのバージョンを自動的に保護する場合は、デフォルトの保持期間を設定できます。オブジェクトを作成するときにオブジェクトに各リテンションモードと期間を明示的に指定しない限り、バケットに配置されたすべての新しいオブジェクトにはデフォルト設定が適用されます。

ヒント

バケットに配置されたすべての新しいオブジェクトバージョンにバケットのデフォルトリテンションモードと期間を強制する場合は、バケットのデフォルトを設定し、オブジェクトの保持設定を行うアクセス許可を拒否することができます。その後、Amazon S3 は、バケットに配置された新しいオブジェクトバージョンにデフォルトのリテンションモードと期間を適用し、リテンションモードと設定を含むオブジェクトを配置する要求は拒否されます。

バケットのデフォルト設定には、モードと期間の両方が必要です。バケットのデフォルトモードはガバナンスまたはコンプライアンスのいずれかです。詳細については、「リテンションモード」を参照してください。

デフォルトの保持期間は、タイムスタンプではなく、日数または年数として示されます。デフォルトの保持期間が設定されているバケットにオブジェクトバージョンを配置すると、オブジェクトロック はリテンション期日を計算します。これは、オブジェクトバージョンの作成タイムスタンプにデフォルトの保持期間を追加することで行われます。Amazon S3 は、タイムスタンプを手動で計算して自分でオブジェクトバージョンに配置した場合と同様に、結果のタイムスタンプをオブジェクトバージョンのリテンション期日として保存します。

デフォルト設定は、バケットに配置された新しいオブジェクトにのみ適用されます。バケットにデフォルトの保持設定を配置しても、バケット内に既に存在するオブジェクトには保持設定は適用されません。

重要

オブジェクトロックは個々のオブジェクトバージョンにのみ適用されます。デフォルトの保持期間を持つバケットにオブジェクトを配置し、そのオブジェクトの保持期間を明示的に指定しない場合、Amazon S3 はバケットのデフォルトと一致する保持期間でオブジェクトを作成します。オブジェクトの作成後、その保持期間はバケットのデフォルト保持期間とは無関係です。バケットのデフォルトの保持期間を変更しても、そのバケット内のオブジェクトのデフォルトの保持期間は変更されません。

注記

バケットにデフォルトの保存期間を設定する場合、そのようなバケット内のオブジェクトをアップロードするリクエストには Content-MD5 ヘッダーが含まれている必要があります。詳細については、Amazon Simple Storage Service API Reference の「PUT Object」を参照してください。

必要なアクセス許可

オブジェクトロック オペレーションにはアクセス許可が必要です。必要なアクセス権限の詳細については、「例 — オブジェクトオペレーション」を参照してください。アクセス権限で条件を使用する方法の詳細については、「Amazon S3 条件キー」を参照してください。