オブジェクトロックの管理 - Amazon Simple Storage Service

オブジェクトロックの管理

AWS CLI、AWS SDK、Amazon S3 REST API を使用して、ロック情報の設定と表示、保持期限の設定、削除とライフサイクルの管理などを行えます。

オブジェクトのロック情報の表示

GET Object コマンドまたは HEAD Object コマンドを使用して、Amazon S3 オブジェクトバージョンのオブジェクトロックステータスを表示できます。どちらのコマンドでも、指定されたオブジェクトバージョンのリテンションモード、Retain Until Date、およびリーガルホールドステータスが返されます。

オブジェクトバージョンのリテンションモードおよび保存期間を表示するには、s3:GetObjectRetention アクセス許可が必要です。オブジェクトバージョンのリーガルホールドステータスを表示するには、s3:GetObjectLegalHold アクセス許可が必要です。オブジェクトバージョンを GET または HEAD しても、そのロックステータスを表示するための必要なアクセス許可がない場合、リクエストは成功しますが、表示するためのアクセス許可がないという情報は返されません。

バケットのデフォルトの保持設定がある場合にそれを表示するには、バケットのオブジェクトロック設定をリクエストします。これを行うには、s3:GetBucketObjectLockConfiguration アクセス許可が必要です。S3 オブジェクトロックが有効になっていないバケットに対してオブジェクトロック設定をリクエストした場合、Amazon S3 はエラーを返します。 権限の詳細については、 を参照してください例 — オブジェクトオペレーション

バケットで Amazon S3 インベントリレポートを設定して、バケット内のすべてのオブジェクトの Retain Until Dateobject lock ModeLegal Hold Status を含めることができます。詳細については、「Amazon S3 インベントリ」を参照してください。

ガバナンスモードのバイパス

s3:BypassGovernanceRetention アクセス許可がある場合は、ガバナンスモードでロックされているオブジェクトバージョンは保護されていないものとして、ガバナンスモードのロックされたオブジェクトバージョンで操作を実行することができます。これらの操作には、空のパラメータで新しいロックを設置して、オブジェクトバージョンの削除、保持期間の短縮、オブジェクトロックの解除をすることが含まれます。

ガバナンスモードをバイパスするには、このモードをバイパスするリクエストに明示的に示す必要があります。これを行うには、リクエストに x-amz-bypass-governance-retention:true ヘッダーを含めるか、AWS CLI または AWS SDK によって作成されたリクエストと同等のパラメータを使用します。ガバナンスモードをバイパスするために必要なアクセス許可を持っている場合、AWS Management Console はコンソールを通じて行われたリクエストに対して、このヘッダーを自動的に適用します。

注記

ガバナンスモードをバイパスしても、オブジェクトバージョンのリーガルホールドステータスには影響しません。オブジェクトバージョンでリーガルホールドが有効になっている場合、リーガルホールドは有効のままで、オブジェクトバージョンの上書きまたは削除のリクエストを回避します。

イベントと通知の設定

Amazon S3 イベント通知を使用して、 で、オブジェクトロック設定およびデータへのアクセスおよび変更を追跡できますAWS CloudTrail CloudTrail の詳細については、「AWS CloudTrail ドキュメント」を参照してください。

また、Amazon CloudWatch を使用してこのデータに基づいてアラートを生成することもできます。CloudWatch の詳細については、Amazon CloudWatch のドキュメントを参照してください。

保持期限の設定

バケットポリシーを使用してバケットの最小および最大許容保持期間を設定できます。これは、s3:object-lock-remaining-retention-days 条件キーを使用して行います。最大保存期間は 100 年です。

以下の例は、s3:object-lock-remaining-retention-days 条件キーを使用して最大保持期間を 10 日間に設定するバケットポリシーを示しています。

{ "Version": "2012-10-17", "Id": "<SetRetentionLimits", "Statement": [ { "Sid": "<SetRetentionPeriod", "Effect": "Deny", "Principal": "*", "Action": [ "s3:PutObjectRetention" ], "Resource": "arn:aws:s3:::<awsexamplebucket1>/*", "Condition": { "NumericGreaterThan": { "s3:object-lock-remaining-retention-days": "10" } } } ] }
注記

バケットがレプリケーションポリシーの宛先バケットであり、レプリケーションを使用して作成されたオブジェクトレプリカの最小許容保存期間および最大許容保存期間を設定する場合は、バケットポリシーにその s3:ReplicateObject アクションを含める必要があります。

詳細については、次のトピックを参照してください。

削除マーカーとオブジェクトのライフサイクルの管理

保護されたオブジェクトバージョンを削除することはできませんが、そのオブジェクトの削除マーカーを作成することはできます。オブジェクトに削除マーカーを配置しても、オブジェクトや、そのオブジェクトバージョンは削除されません。ただし、オブジェクトが削除されたかのように Amazon S3 をほとんどの方法で動作させます。詳細については、「削除マーカーの使用」を参照してください。

注記

削除マーカーは、基盤となるオブジェクトでの保持期間またはリーガルホールドに関係なく、WORM 保護されません。

オブジェクトライフサイクルの管理設定は、削除マーカーの配置も含めて、保護されたオブジェクトで引き続き正常に機能します。ただし、保護されたオブジェクトバージョンは、ライフサイクル設定によって削除または上書きされても安全なままです。オブジェクトのライフサイクルの管理の詳細については、「ストレージのライフサイクルの管理」を参照してください。

レプリケーションでの S3 オブジェクトロックの使用

レプリケーションで S3 オブジェクトロックを使用すると、異なる、または同一の AWS リージョン にある S3 バケット間で、ロックされたオブジェクトとその保持メタデータの自動非同期コピーを有効にできます。レプリケーションを使用すると、ソースバケット内のオブジェクトはターゲットバケットにレプリケートされます。詳細については、「オブジェクトのレプリケーション」を参照してください。

レプリケーションで S3 オブジェクトロックを設定するには、以下のいずれかのオプションを選択できます。

オプション 1: 最初にオブジェクトロックを有効にする
  1. ターゲットバケットで、またはソースバケットとターゲットバケットの両方で、オブジェクトロックを有効にします。

  2. ソースバケットとターゲットバケットの間でレプリケーションを設定します。

オプション 2: 最初にレプリケーションを設定する
  1. ソースバケットとターゲットバケットの間でレプリケーションを設定します。

  2. ターゲットバケットで、またはソースバケットとターゲットバケットの両方で、オブジェクトロックを有効にします。

上記のオプションでオブジェクトロックを有効にするときは、バケットの作成時に行うか、既存のバケットを使用する場合は AWS Support に連絡するか、いずれかで行います。これは、レプリケーションが正しく設定されていることを確認するために必要です。

AWS Support に連絡する前に、レプリケーションでオブジェクトロックを設定するための以下の要件を確認してください。

  • Amazon S3 ターゲットバケットでオブジェクトロックが有効になっている必要があります。

  • レプリケーションを設定するために使用する AWS Identity and Access Management (IAM) ロールで、ソース S3 バケットに対する 2 つの新しいアクセス許可を付与する必要があります。2 つの新しいアクセス許可は s3:GetObjectRetentions3:GetObjectLegalHold です。ロールに s3:Get* アクセス許可がある場合、そのロールは要件を満たしています。詳細については、「許可のセットアップ」を参照してください。

S3 オブジェクトロックの詳細については、「S3 オブジェクトロックの仕組み」を参照してください。