オブジェクトロックの考慮事項 - Amazon Simple Storage Service

オブジェクトロックの考慮事項

Amazon S3 オブジェクトロックは、オブジェクトが一定期間または無期限に削除または上書きされるのを防ぐのに役立ちます。

Amazon S3 コンソール、AWS Command Line Interface (AWS CLI)、AWS SDK、または Amazon S3 REST API を使用して、オブジェクトロック情報を表示したり設定したりできます。S3オブジェクトロック機能全般については、「S3 オブジェクトロックの使用」を参照してください。

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

  • S3 オブジェクトロックが有効になっている S3 バケットは、サーバーアクセスログの送信先バケットとしては使用できません。詳細については、「サーバーアクセスログによるリクエストのログ記録」を参照してください。

ロック情報を表示するためのアクセス許可

HeadObject オペレーションまたは GetObject オペレーションを使用して、Amazon S3 オブジェクトバージョンのオブジェクトロックステータスをプログラムで表示できます。いずれのオペレーションでも、指定されたオブジェクトバージョンの保持モード、保持期日、リーガルホールドステータスが返されます。また、S3 インベントリを使用して、S3 バケット内の複数のオブジェクトの Object Lock ステータスを表示できます。

オブジェクトバージョンのリテンションモードおよび保存期間を表示するには、s3:GetObjectRetention アクセス許可が必要です。オブジェクトバージョンのリーガルホールドステータスを表示するには、s3:GetObjectLegalHold アクセス許可が必要です。バケットのデフォルトの保持期間を表示するには、s3:GetBucketObjectLockConfiguration アクセス許可が必要です。S3 オブジェクトロックが有効になっていないバケットに対してオブジェクトロック設定をリクエストしりtp、Amazon S3 はエラーを返します。

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

s3:BypassGovernanceRetention アクセス許可がある場合は、ガバナンスモードでロックされているオブジェクトバージョンに対して、保護されていない場合と同様にオペレーションを実行できます。このようなオペレーションには、オブジェクトバージョンの削除、保持期間の短縮以外にも、空のパラメータを指定した新しい PutObjectRetention リクエストの発行によるオブジェクトロック保持期間の解除があります。

ガバナンスモードをバイパスするには、このモードをバイパスするリクエストに明示的に示す必要があります。これを行うには、PutObjectRetention API オペレーションリクエストに x-amz-bypass-governance-retention:true ヘッダーを含めるか、AWS CLI または AWS SDK を介したリクエストで同等のパラメータを使用します。s3:BypassGovernanceRetention アクセス許可がある場合、S3 コンソールは、S3 コンソールを通じて行われたリクエストにこのヘッダーを自動的に適用します。

注記

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

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

S3 レプリケーションでオブジェクト ロックを使用すると、S3 バケット間でロックされたオブジェクトとその保持メタデータの自動非同期コピーを有効にすることができます。つまり、レプリケートされたオブジェクトの場合、Amazon S3 はレプリケート元バケットのオブジェクトロック設定を受け取ります。言い換えると、ソースバケットで Object Lock が有効になっている場合は、レプリケート先バケットでも Object Lock が有効になっている必要があります。オブジェクトが (S3 レプリケーションの外部で) レプリケート先バケットに直接アップロードされると、レプリケート先バケットに設定された Object Lock が取得されます。レプリケーションを使用すると、ソースバケット内のオブジェクトは、単一または複数の送信先バケットにレプリケートされます。

オブジェクトロックが有効になっているバケットにレプリケーションを設定するには、S3 コンソール、AWS CLI、Amazon S3 REST API 、または AWS SDK を使用できます。

注記

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

S3 レプリケーション全般については、「オブジェクトのレプリケーション」を参照してください。

S3 レプリケーションの設定の詳細については、「ライブレプリケーションの設定例」を参照してください。

AmazonS3 インベントリでのオブジェクトロックの使用

定義されたスケジュールに従って S3 バケット内のオブジェクトのリストを作成するように Amazon S3 インベントリを設定できます。オブジェクトの次のオブジェクトロック メタデータを含めるように Amazon S3 インベントリを設定できます。

  • 保持期日

  • 保持モード

  • リーガルホールドステータス

詳細については、「Amazon S3 インベントリ」を参照してください。

Object Lock による S3 ライフサイクルポリシーの管理

オブジェクトライフサイクルの管理設定は、削除マーカーの配置も含めて、保護されたオブジェクトで引き続き正常に機能します。ただし、S3 ライフサイクルの有効期限ポリシーでは、オブジェクトのロックされたバージョンを削除することはできません。Object Lock は、オブジェクトが保存されているストレージクラスに関係なく、またストレージクラス間での S3 ライフサイクル移行全体を通して維持されます。

オブジェクトのライフサイクルの管理の詳細については、「オブジェクトのライフサイクルの管理」を参照してください。

Object Lock による削除マーカーの管理

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

注記

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

オブジェクトロックでの S3 Storage Lens の使用

オブジェクトロックが有効なストレージバイト数とオブジェクト数のメトリクスを表示するには、Amazon S3 Storage Lens を使用できます。S3 Storage Lens は、オブジェクトストレージの使用状況とアクティビティを組織全体で可視化するために使用できるクラウドストレージ分析機能です。

詳細については、「S3 ストレージレンズによるデータ保護」を参照してください。

メトリクスの一覧については、「Amazon S3 Storage Lens のメトリクスに関する用語集」を参照してください。

Object Lock が有効なバケットへのオブジェクトのアップロード

Content-MD5 ヘッダーは、Object Lock を使用して設定された保持期間のあるオブジェクトをアップロードするリクエストに必要です。MD5 ダイジェストは、バケットにアップロードした後にオブジェクトの整合性を検証するもう 1 つの方法です。オブジェクトをアップロードした後、Amazon S3 はオブジェクトの MD5 ダイジェストを計算し、指定した値と比較します。リクエストは、2 つのダイジェストが一致した場合にのみ成功します。S3 コンソールは自動的にこのヘッダーを追加しますが、PutObject API を使用するときにこのヘッダーを指定する必要があります。

詳細については、「オブジェクトをアップロードするときに Content-MD5 を使用する」を参照してください。

イベントと通知の設定

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

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

バケットポリシーを使用する保持期間の制限の設定

バケットポリシーを使用してバケットの最小と最大の許容保持期間を設定できます。最大保存期間は 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:::amzn-s3-demo-bucket1/*", "Condition": { "NumericGreaterThan": { "s3:object-lock-remaining-retention-days": "10" } } } ] }
注記

バケットがレプリケーション設定の送信先バケットである場合は、レプリケーションを使用して作成されるオブジェクトレプリカの最小および最大許容保存期間を設定できます。これを実行するには、バケットポリシーで s3:ReplicateObject アクションを許可する必要があります。レプリケーションのアクセス許可の詳細については、「ライブレプリケーションのアクセス許可の設定」を参照してください。

バケットポリシーの詳細については、後続のトピックを参照してください。