このページでは、Cloud Storage バケットの保持ポリシーを構成できるバケットロック機能について説明します。このポリシーは、バケット内のオブジェクトを保持する期間を制御します。また、バケットの保持ポリシーをロックして、ポリシーの変更や削除を完全に防ぐこともできます。
この機能を使用すると、Cloud Storage に不変のストレージを作成できます。Cloud Storage のリクエストとレスポンスの詳細をログに記録する詳細な監査ロギングモードとともに、バケットロックは、FINRA、SEC、CFTC などの規制やコンプライアンス要件への対応に役立ちます。また、医療業界のデータ保持規制への対応にも役立ちます。
概要
バケットに保持ポリシーを追加して、保持期間を指定できます。
バケットの保持ポリシーが設定されている場合、バケット内のオブジェクトを削除または置換できるのは、保存期間が過ぎてからです。
ポリシーは、バケットに追加された新しいオブジェクトだけでなく、バケット内の既存のオブジェクトにさかのぼって適用されます。これは、オブジェクトごとにデータ保持要件を定義できるオブジェクト保持ロック機能とは異なります。
バケットの保持ポリシーをロックして、バケットに永続的に設定できます。
ポリシーをロックすると、そのポリシーを削除したり、保持期間を短縮することはできません。
バケット内のすべてのオブジェクトが保持期間を満たしていない限り、ロックされたポリシーのバケットを削除することはできません。
ロックされたポリシーの保持期間は延長できます。
バケット保持ポリシー
保持ポリシーは、新しいバケットを作成するときに追加できます。また、既存のバケットに追加することもできます。バケットに保持ポリシーを設定すると、ポリシーに定義されている保持期間が経過するまで、バケット内のオブジェクトは削除または置き換えできなくなります。この制約は、現在バケットにあるオブジェクトだけでなく、今後バケットに作成されるオブジェクトにも適用されます。保持期間が経過していないオブジェクトを削除または置き換えしようとすると、403 - retentionPolicyNotMet
エラーが発生し、処理が失敗します。
たとえば、バケット内にオブジェクト A とオブジェクト B の 2 つのオブジェクトがあり、オブジェクト A は 1 か月前に、オブジェクト B は 2 年前にバケットに追加したとします。このバケットに保持期間 1 年の保持ポリシーを適用した場合、オブジェクト A は追加されてからまだ 1 か月しか経過していないため、あと 11 か月経過するまで削除や置き換えはできません。オブジェクト B はすでに保持期間を経過しているため、すぐに削除または置き換えできます。オブジェクト B を置き換えると、新しいバージョンの経過時間は 0 年になります。
個々のオブジェクトが削除可能かどうかを確認できるように、保持ポリシーが設定されたバケット内の各オブジェクトには、保持期間の有効期限を表すメタデータが維持されます。このメタデータは、オブジェクトが保持期間を満了する日時を表します。
一般的な考慮事項
保持ポリシーを使用する場合は、次の点に注意してください。
バケットの保持ポリシーがロックされていない限り、ポリシーを追加または削除できます。
オブジェクトの編集可能メタデータはバケットの保持ポリシーの対象ではありません。そのため、オブジェクト自体が変更できない場合でも、これらのメタデータは変更可能です。
バケットの保持ポリシーには有効期間が含まれています。バケット内のすべてのオブジェクトにこの保持期間が適用されます。
保持ポリシーが設定されたバケット内の特定のオブジェクトが削除可能になる最短の日付は、オブジェクトのメタデータの保持期間の有効期限部分で確認できます。
他の機能に関する考慮事項
保持ポリシーと他の Cloud Storage の機能を使用する場合は、次の点に注意してください。
オブジェクトのバージョニングを使用するバケットでは、将来の日時の保持期限が設定されているライブ オブジェクト バージョンは、引き続き非現行として設定可能です。また、保持ポリシーを適用するときにバケット内に存在するバージョニングされたオブジェクトも、ポリシーで保護されます。
イベントベースの保留の対象となるオブジェクトは、保持が適用されている間は削除できません。オブジェクトからイベントベースの保留が解除されると、オブジェクトの保持期間がリセットされます。
個々のオブジェクトは、バケットの保持ポリシーと、それ自体の個々の保持構成の対象となります。オブジェクトが両方の対象である場合、両方の保持が満たされるまでそのオブジェクトが保持されます。
オブジェクトが保持期限に達していない場合、ロックされたバケット内のオブジェクトを暗号化する Cloud Key Management Service 鍵バージョンは破棄できません。詳細については、ロックされたオブジェクトの暗号化に使用される鍵バージョンをご覧ください。
オブジェクトのライフサイクル管理を使用して、バケット内のオブジェクトを自動的に削除できます。ポリシーがロックされたバケットでも同様ですが、オブジェクトが保持ポリシーを満たすまで、ライフサイクル ルールでオブジェクトが削除されることはありません。
バケットに保持ポリシーがある場合は、並列複合アップロードを実行しないでください。各コンポーネントは、バケットの最小保持期間を過ぎるまで削除できないためです。
結果のオブジェクトによって保持期間内のオブジェクトが上書きされたときに、XML API マルチパート アップロードを完了しようとするとエラーが発生します。
組織のポリシーにおける保持ポリシーの制約を使用して、新しいバケットを作成するときや、既存のバケットに保持ポリシーの追加または更新を行うときに、その一部に特定の保持期間を設けることをバケット保持ポリシーに義務付けることもできます。
保持期間
保持期間は秒単位で測定されます。ただし、Google Cloud コンソールや Google Cloud CLI などのツールを使って、他の時間単位で保持期間を表示するように設定することもできます。その場合、次のような変換規則が適用されます。
- 1 日は 86,400 秒とする。
- 1 か月は 2,678,400 秒(31 日)とする。
- 1 年は 31,557,600 秒(365.25 日)とする。
最大保持期間として、3,155,760,000 秒(100 年)まで設定できます。
gcloud CLI で保持期間を指定する場合は、整数と単位を指定します。単位は s
、d
、m
、y
で、それぞれ秒、日、月、年を表します。たとえば、1d43200s
は 1 日と 43,200 秒(1 日半)の保持期間を設定します。
保持ポリシーのロック
バケットの保持ポリシーをロックすると、ポリシーの削除や保持期間の短縮を防ぐことができます(保持期間は延長できます)。ロックされたポリシーの保持期間を削除または短縮しようとすると、400 BadRequestException
エラーが発生します。保持ポリシーをロックすると、バケット内のすべてのオブジェクトが保持期間を満了するまで、バケットを削除することはできません。
バケットの保持ポリシーのロックは元に戻すことができません。この機能を使用する前に、その意味をよく理解しておく必要があります。ロックされていないポリシーは削除できます。この場合、必要に応じてオブジェクトを削除できます。ポリシーをロックした場合、ポリシーを削除するにはバケット全体を削除する必要があります。ただし、保持期間が経過していないオブジェクトがある場合はバケットを削除できません。したがって、ロックされたポリシーを削除するには、バケット内のすべてのオブジェクトがその保持期間に達するまで待ってから、バケットを削除することになります。
また、保持ポリシーをロックした場合、Cloud Storage はバケットを含むプロジェクトの projects.delete
権限にリーエンを自動的に適用します。これにより、プロジェクトが削除できなくなります。プロジェクトを削除するには、このようなリーエンをすべて削除する必要があります。リーエンを削除するには、roles/owner
ロールと roles/resourcemanager.lienModifier
ロールに含まれる resourcemanager.projects.updateLiens
権限が必要です。
保持ポリシーのロックが記録保持規制の遵守にどのように役立つかについては、コンプライアンスのページをご覧ください。
次のステップ
- 保持ポリシーの使用とロックについて学習する。
- オブジェクト保持ロックおよびオブジェクト保留で、個々のオブジェクトを削除から保護する方法について学習する。
- 規制やコンプライアンスの要件への対応にも役立つ詳細な監査ロギングモードについて学習する。