オブジェクト保持構成の有効化と使用

概要

このページでは、オブジェクト保持ロック機能の使用方法(バケットで有効にしたり、バケット内のオブジェクトの保持構成を設定する方法)について説明します。

必要なロール

バケットでオブジェクト保持ロック機能を有効にしてオブジェクトの保持構成を設定するために必要な権限を取得するには、バケットまたはバケットを含むプロジェクトに対するストレージ管理者(roles/storage.admin)IAM ロールを付与するよう管理者に依頼してください。この事前定義ロールには、保持構成の設定と管理に必要な権限が含まれています。必要とされる正確な権限については、「必要な権限」セクションを開いてご確認ください。

必要な権限

  • storage.buckets.create
  • storage.buckets.enableObjectRetention
  • storage.buckets.get
  • storage.buckets.list
    • この権限は、Google Cloud コンソールを使用してこのページの手順を実施する場合にのみ必要です。
  • storage.objects.get
  • storage.objects.list
    • この権限は、Google Cloud コンソールを使用してこのページの手順を実施する場合にのみ必要です。
  • storage.objects.overrideUnlockedRetention
    • この権限は、既存の保持構成をロックまたは短縮する場合にのみ必要です。
  • storage.objects.setRetention
  • storage.objects.update

カスタムロールを使用して、これらの権限を取得することもできます。

バケットのロールの付与については、バケットで IAM を使用するをご覧ください。プロジェクトに対するロールの付与については、プロジェクトへのアクセス権を管理するをご覧ください。

バケットのオブジェクト保持を有効にする

オブジェクト保持の有効化はバケットの作成の一部としてのみサポートされています。バケットでオブジェクト保持が有効になっている場合、オブジェクト保持を無効にすることはできません。バケットのオブジェクト保持を有効にするには、次の操作を行います。

コンソール

通常どおりにバケットを作成し、[オブジェクト データを保護する方法を選択する] ステップで [保持(コンプライアンス用)] を選択して、[オブジェクト保持を有効にする] を選択します。

コマンドライン

通常どおりにバケットを作成し、コマンドに --enable-per-object-retention フラグを含めます。

REST API

JSON API

通常どおりにバケットを作成し、リクエストの一部としてクエリ パラメータ enableObjectRetention=true を含めます。

XML API

通常どおりにバケットを作成し、リクエストの一部としてヘッダー x-goog-bucket-object-lock-enabled: True を含めます。

バケットのオブジェクト保持ステータスを表示する

バケットでオブジェクト保持が有効になっているかどうかを確認するには:

コンソール

  1. Google Cloud コンソールで、Cloud Storage の [バケット] ページに移動します。

    [バケット] に移動

  2. ステータスを確認するバケットの名前をクリックします。

  3. [保護] タブをクリックします。

  4. バケットのオブジェクト保持ステータスが [オブジェクト保持] セクションに表示されます。

コマンドライン

gcloud storage buckets describe コマンドを使用し、--format フラグを指定します。

gcloud storage buckets describe gs://BUCKET_NAME --format="default(per_object_retention)"

ここで、BUCKET_NAME は、保持ポリシーを表示するバケットの名前です。例: my-bucket

処理に成功し、バケットに保持ポリシーが存在する場合、レスポンスは次のようになります。

per_object_retention:
  mode: Enabled

処理に成功し、バケットに保持ポリシーが存在しない場合、レスポンスは次のようになります。

null

REST API

JSON API

  1. Authorization ヘッダーのアクセス トークンを生成するには、gcloud CLI のインストールと初期化を行います。

    OAuth 2.0 Playground を使用してアクセス トークンを作成し、Authorization ヘッダーに含めることもできます。

  2. cURL を使用して、objectRetention フィールドを含む GET Bucket リクエストで JSON API を呼び出します。

    curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME?fields=objectRetention"

    BUCKET_NAME は、該当するバケットの名前です。例: my-bucket

XML API

  1. Authorization ヘッダーのアクセス トークンを生成するには、gcloud CLI のインストールと初期化を行います。

    OAuth 2.0 Playground を使用してアクセス トークンを作成し、Authorization ヘッダーに含めることもできます。

  2. cURL を使用して、?object-lock をスコープとする GET バケット リクエストで XML API を呼び出します。

    curl -X GET \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      "https://storage.googleapis.com/BUCKET_NAME?object-lock"

    BUCKET_NAME は、該当するバケットの名前です。例: my-bucket

オブジェクトの保持構成を設定する

オブジェクトの保持構成を設定するには、オブジェクト保持が有効になっているバケットにオブジェクトが保存されている必要があります。オブジェクトの保持構成を設定するには:

コンソール

  1. Google Cloud コンソールで、Cloud Storage の [バケット] ページに移動します。

    [バケット] に移動

  2. バケットのリストで、保持構成を設定または変更するオブジェクトを含むバケットの名前をクリックします。

    [バケットの詳細] ページが開き、[オブジェクト] タブが選択されています。

  3. フォルダ内にあるオブジェクトに移動します。

  4. オブジェクトの名前をクリックします。

    [オブジェクトの詳細] ページが開き、オブジェクトのメタデータが表示されます。

  5. [保護] セクションで、[オブジェクト保持構成から] の編集アイコン()をクリックします。

    [保持を編集] ペインが開きます。

  6. [オブジェクト保持構成] セクションで、[有効] または [無効] をクリックします。

    1. 保持構成が有効になっている場合は、[保持期限] セクションで構成の日時を選択し、[保持モード] セクションで [未ロック] または [ロック中] をクリックします。
  7. [確認] をクリックします。

コマンドライン

適切なフラグを指定して、gcloud storage objects update コマンドを使用します。保持構成を追加または変更するには、次のコマンドを使用します。既存の構成をロックするか、保持期間を短縮するように既存の構成を変更する場合は、--override-unlocked-retention フラグも追加する必要があります。

gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME --retain-until=DATETIME --retention-mode=STATE

ここで

  • BUCKET_NAME は、関連するバケットの名前です。例: my-bucket

  • OBJECT_NAME は、該当するオブジェクトの名前です。例: kitten.png

  • DATETIME は、オブジェクトを削除できる最も早い日時です。例: 2028-02-15T05:30:00Z

  • STATELockedUnlocked のどちらかです。

正常に終了すると、レスポンスは次の例のようになります。

Updating gs://my-bucket/kitten.png...
  Completed 1  

オブジェクトから保持構成を削除するには、次のコマンドを使用します。

gcloud storage objects update gs://BUCKET_NAME/OBJECT_NAME --clear-retention --override-unlocked-retention

ここで

  • BUCKET_NAME は、関連するバケットの名前です。例: my-bucket

  • OBJECT_NAME は、該当するオブジェクトの名前です。例: kitten.png

REST API

JSON API

  1. Authorization ヘッダーのアクセス トークンを生成するには、gcloud CLI のインストールと初期化を行います。

    OAuth 2.0 Playground を使用してアクセス トークンを作成し、Authorization ヘッダーに含めることもできます。

  2. 次の情報が含まれる JSON ファイルを作成します。

    {
      "retention": {
        "mode": STATE,
        "retainUntilTime": "DATETIME"
      }
    }

    ここで

    • STATELockedUnlocked のどちらかです。

    • DATETIME は、オブジェクトを削除できる最も早い日時です。例: 2028-02-15T05:30:00Z

  3. cURL を使用して、PATCH Object リクエストで JSON API を呼び出します。

    curl -X PATCH --data-binary @JSON_FILE_NAME \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME?overrideUnlockedRetention=BOOLEAN"

    ここで

    • JSON_FILE_NAME は、手順 2 で作成したファイルのパスです。
    • BUCKET_NAME は、関連するバケットの名前です。例: my-bucket
    • OBJECT_NAME は、関連するオブジェクトの URL エンコードされた名前です。例: pets%2Fkitten.png として URL エンコードされている pets/kitten.png
    • リクエストで既存の保持構成を短縮、削除、またはロックする場合は、BOOLEANtrue にする必要があります。それ以外の場合は、リクエストから overrideUnlockedRetention パラメータを完全に除外できます。

XML API

  1. Authorization ヘッダーのアクセス トークンを生成するには、gcloud CLI のインストールと初期化を行います。

    OAuth 2.0 Playground を使用してアクセス トークンを作成し、Authorization ヘッダーに含めることもできます。

  2. 次の情報が含まれる XML ファイルを作成します。

    <Retention>
      <Mode>
        STATE
      </Mode>
      <RetainUntilDate>
        DATETIME
      </RetainUntilDate>
    </Retention>

    ここで

    • STATEGOVERNANCECOMPLIANCE のどちらかです。

    • DATETIME は、オブジェクトを削除できる最も早い日時です。例: 2028-02-15T05:30:00Z

  3. cURL を使用して、?retention をスコープとする PUT Object リクエストで XML API を呼び出します。

    curl -X PUT --data-binary @XML_FILE_NAME \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      -H "x-goog-bypass-governance-retention: BOOLEAN" \
      "https://storage.googleapis.com/BUCKET_NAME/OBJECT_NAME?retention"

    ここで

    • XML_FILE_NAME は、手順 2 で作成した XML ファイルのパスです。
    • リクエストで既存の保持構成を短縮、削除、またはロックする場合は、BOOLEANtrue にする必要があります。それ以外の場合は、リクエストから x-goog-bypass-governance-retention ヘッダーを完全に除外できます。
    • BUCKET_NAME は、関連するバケットの名前です。例: my-bucket
    • OBJECT_NAME は、関連するオブジェクトの URL エンコードされた名前です。例: pets%2Fkitten.png として URL エンコードされている pets/kitten.png

オブジェクトの保持構成を表示する

オブジェクトに設定されている保持構成を確認するには:

コンソール

  1. Google Cloud コンソールで、Cloud Storage の [バケット] ページに移動します。

    [バケット] に移動

  2. バケットのリストで、保持構成を表示するオブジェクトを含むバケットの名前をクリックします。

    [バケットの詳細] ページが開き、[オブジェクト] タブが選択されています。

  3. フォルダ内にあるオブジェクトに移動します。

  4. オブジェクトの名前をクリックします。

    [オブジェクトの詳細] ページが開き、オブジェクトのメタデータが表示されます。オブジェクトの保持構成に関する情報が [保護] セクションに表示されます。

コマンドライン

gcloud storage objects describe コマンドを使用し、--format フラグを指定します。

gcloud storage objects describe gs://BUCKET_NAME/OBJECT_NAME --format="default(retention_settings)"

ここで

  • BUCKET_NAME は、関連するバケットの名前です。例: my-bucket

  • OBJECT_NAME は、該当するオブジェクトの名前です。例: kitten.png

成功し、オブジェクトに保持構成が存在する場合、レスポンスは次のようになります。

retention_settings:
  mode: Unlocked
  retainUntilTime: '2028-11-30T14:11:14+00:00'

成功し、オブジェクトに保持構成が存在しない場合、レスポンスは次のようになります。

null

REST API

JSON API

  1. Authorization ヘッダーのアクセス トークンを生成するには、gcloud CLI のインストールと初期化を行います。

    OAuth 2.0 Playground を使用してアクセス トークンを作成し、Authorization ヘッダーに含めることもできます。

  2. cURL を使用して、retention フィールドを含む GET Bucket リクエストで JSON API を呼び出します。

    curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/OBJECT_NAME?fields=retention"

    ここで

    • BUCKET_NAME は、関連するバケットの名前です。例: my-bucket
    • OBJECT_NAME は、該当するオブジェクトの名前です。例: kitten.png

XML API

  1. Authorization ヘッダーのアクセス トークンを生成するには、gcloud CLI のインストールと初期化を行います。

    OAuth 2.0 Playground を使用してアクセス トークンを作成し、Authorization ヘッダーに含めることもできます。

  2. cURL を使用して、?retention をスコープとする GET Object リクエストで XML API を呼び出します。

    curl -X GET \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      "https://storage.googleapis.com/BUCKET_NAME/OBJECT_NAME?retention"

    ここで

    • BUCKET_NAME は、関連するバケットの名前です。例: my-bucket
    • OBJECT_NAME は、該当するオブジェクトの名前です。例: kitten.png

次のステップ