シークレット バージョンの破棄を遅延させる

このページでは、シークレット バージョンの破棄の遅延の設定、破棄の遅延期間の更新または削除、破棄がスケジュールされているシークレット バージョンの復元の方法について説明します。

シークレット バージョンを破棄すると、シークレット マテリアルは即時かつ完全に破棄されます。Secret Manager 管理者は、シークレット バージョンの破棄を遅延して、リクエスト時にシークレット バージョンがすぐに破棄されないようにし、構成可能な期間、復元可能にすることができます。

シークレットで破棄の遅延が有効になっている場合、シークレット バージョンを破棄すると、次のようになります。

  • このバージョンが無効になっているため、使用できません。
  • システムは、遅延期間の終了時にバージョンを完全に破棄するようにスケジュールします。
  • 遅延期間が終了すると、シークレット バージョンは完全に破棄され、復元できなくなります。

利点

この機能には次のようなメリットがあります。

  • 重要な機密資料の偶発的または悪意のある破壊に対する追加の保護レイヤ。Secret Manager のシークレット バージョン マネージャーのロールを持ち、シークレット バージョンを破棄できるユーザー。この操作は元に戻せません。破棄の遅延を設定することで、シークレット バージョンが即座に破棄されることを防止できます。センシティブ データの偶発的な破棄をモニタリングし、防止できるため、シークレット バージョンのライフサイクルを管理するために必要な最小限のアクセス権をユーザーに付与できます。

  • シークレット バージョンを破棄すると SECRET_VERSION_DESTROY_SCHEDULED がトリガーされる 通知を シークレットに構成された Pub/Sub トピック。Secret Manager 管理者は、スケジュールされた破棄をキャンセルし、シークレット バージョンを有効または無効にすることで復元できます。

始める前に

  • Enable the Secret Manager API.

    Enable the API

  • 認証を設定する。

    Select the tab for how you plan to use the samples on this page:

    Console

    When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.

    gcloud

    In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

    REST

    このページの REST API サンプルをローカル開発環境で使用するには、gcloud CLI に指定した認証情報を使用します。

      Install the Google Cloud CLI, then initialize it by running the following command:

      gcloud init

    詳細については、Google Cloud 認証ドキュメントの REST を使用して認証するをご覧ください。

必要なロール

シークレット バージョンの破棄を設定するために必要な権限を取得するには、シークレットに対する Secret Manager 管理者 roles/secretmanager.admin)IAM ロールを付与するように管理者に依頼してください。ロールの付与については、プロジェクト、フォルダ、組織へのアクセスを管理するをご覧ください。

必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。

破棄の遅延を設定する

シークレット バージョンの破棄の遅延は、シークレットを作成するとき、またはシークレットを更新するときに有効にできます。

Console

  1. Google Cloud コンソールで、[Secret Manager] ページに移動します。

    Secret Manager に移動

  2. シークレットを作成するために必要な手順を行います。

  3. シークレット バージョンの破棄を遅延させるセクションに移動します。

  4. [破棄の遅延の期間を設定する] チェックボックスをオンにします。

  5. [破棄の遅延期間] フィールドに、期間を日数で入力します。入力できる最小値は 1 日、最大値は 1,000 日です。

  6. [シークレットの作成] をクリックします。

既存のシークレットでこの機能を有効にするには、[シークレットを編集] ページに移動し、破棄の遅延期間を構成します。

gcloud

シークレットの破棄遅延時間を構成するには、gcloud beta secrets create コマンドを使用します。

後述のコマンドデータを使用する前に、次のように置き換えます。

  • SECRET_ID: Secret の ID または Secret の完全修飾識別子。
  • TTL_DURATION: シークレット バージョンの破棄の遅延時間。期間は、日、時間、秒など、任意の形式で入力できます。こちらの 必要な最小期間は 1 日ですが、最大期間は 1,000 日に設定できます。

次のコマンドを実行します。

Linux、macOS、Cloud Shell

gcloud secrets create SECRET_ID --version-destroy-ttl=TTL_DURATION

Windows(PowerShell)

gcloud secrets create SECRET_ID --version-destroy-ttl=TTL_DURATION

Windows(cmd.exe)

gcloud secrets create SECRET_ID --version-destroy-ttl=TTL_DURATION

レスポンスには、新しく作成されたシークレットが含まれます。

REST

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: Google Cloud プロジェクト ID。
  • SECRET_ID: Secret の ID または Secret の完全修飾識別子。
  • TTL_DURATION: シークレット バージョンの破棄の遅延期間。期間を秒単位で入力します。必要な最小期間は 1 日ですが、最大期間を 1,000 日に設定できます。

HTTP メソッドと URL:

POST https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets?secretId=SECRET_ID

リクエストの本文(JSON):

{"replication": {"automatic": {}}, "version_destroy_ttl":"TTL_DURATION"}

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets?secretId=SECRET_ID"

PowerShell

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets?secretId=SECRET_ID" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

{
"name":"projects/PROJECT_ID/secrets/SECRET_ID",
"replication":{
   "automatic":{

   }
},
"createTime":"2023-10-16T17:10:16.345401Z",
"etag":"\"1607d90ee3d84c\"",
"versionDestroyTtl":"TTL_DURATION"
}

破棄の遅延は、以下のシナリオには適用されません。

  • シークレットが削除されると、すべてのシークレット マテリアル、関連するシークレット バージョンが直ちに削除されます。
  • シークレットに有効期限が設定され、シークレットが期限切れになると、シークレットで破棄の遅延が有効になっていても、すべてのシークレット バージョンが直ちに破棄されます。

破棄の遅延期間を更新する

Console

  1. Google Cloud コンソールで、[Secret Manager] ページに移動します。

    Secret Manager に移動

  2. 次のいずれかの方法でシークレットを編集します。

    • 編集するシークレットに関連付けられた [その他の操作] をクリックし、メニューから [編集] を選択します。
    • シークレット名をクリックして、[シークレットの詳細] ページに移動します。[シークレットの詳細] ページで、[シークレットを編集する] をクリックします。
  3. シークレット バージョンの破棄を遅延させるセクションに移動します。

  4. [破棄の遅延期間] フィールドに、更新された期間を入力します。

  5. [シークレットを更新する] をクリックします。

gcloud

破棄の遅延時間を更新するには、gcloud beta secrets update コマンドを使用します。

後述のコマンドデータを使用する前に、次のように置き換えます。

  • SECRET_ID: シークレットの ID またはシークレットの完全修飾識別子
  • TTL_DURATION: シークレット バージョンの破棄の遅延期間

次のコマンドを実行します。

Linux、macOS、Cloud Shell

gcloud secrets update SECRET_ID --version-destroy-ttl=TTL_DURATION

Windows(PowerShell)

gcloud secrets update SECRET_ID --version-destroy-ttl=TTL_DURATION

Windows(cmd.exe)

gcloud secrets update SECRET_ID --version-destroy-ttl=TTL_DURATION

レスポンスには、新しく作成されたシークレットが含まれます。

REST

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: Google Cloud プロジェクト ID
  • SECRET_ID: シークレットの ID またはシークレットの完全修飾識別子
  • TTL_DURATION: シークレット バージョンの破棄の遅延期間

HTTP メソッドと URL:

PATCH https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=version_destroy_ttl

リクエストの本文(JSON):

{
  "version_destroy_ttl":"TTL_DURATION"
}

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=version_destroy_ttl"

PowerShell

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=version_destroy_ttl" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

{
  "name":"projects/PROJECT_ID/secrets/SECRET_ID",
  "replication":{
     "automatic":{

     }
  },
  "createTime":"2023-10-16T17:10:16.345401Z",
  "etag":"\"1607d90ee3d84c\"",
  "versionDestroyTtl":"TTL_DURATION"
}

破棄の遅延時間の影響を受けるシークレット バージョンは、 次のように変更します

  • シークレットに破棄の遅延が初めて設定されると、破棄の遅延期間が、シークレットの有効なすべてのバージョン(有効と無効)に影響します。
  • 破棄の遅延期間を更新または削除すると、変更は破棄のアクションが試行された新しいシークレット バージョンにのみ反映されます。Secret すでに破棄がスケジュールされているバージョンは、引き続き破棄されます。

破棄の遅延を無効にする

Console

  1. Google Cloud コンソールで、[Secret Manager] ページに移動します。

    Secret Manager に移動

  2. 次のいずれかの方法でシークレットを編集します。

    • 編集するシークレットに関連付けられた [その他の操作] をクリックし、メニューから [編集] を選択します。
    • シークレット名をクリックして、[シークレットの詳細] ページに移動します。[シークレットの詳細] ページで、[シークレットを編集する] をクリックします。
  3. シークレット バージョンの破棄を遅延させるセクションに移動します。

  4. [破棄の遅延期間を設定する] チェックボックスをオフにします。

  5. [シークレットを更新する] をクリックします。

gcloud

破棄の遅延時間を削除するには、gcloud beta secrets update コマンドを使用します。

後述のコマンドデータを使用する前に、次のように置き換えます。

  • SECRET_ID: シークレットの ID またはシークレットの完全修飾識別子

次のコマンドを実行します。

Linux、macOS、Cloud Shell

gcloud secrets update SECRET_ID --remove-version-destroy-ttl

Windows(PowerShell)

gcloud secrets update SECRET_ID --remove-version-destroy-ttl

Windows(cmd.exe)

gcloud secrets update SECRET_ID --remove-version-destroy-ttl

REST

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: Google Cloud プロジェクト ID
  • SECRET_ID: Secret の ID または Secret の完全修飾識別子

HTTP メソッドと URL:

PATCH https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=version_destroy_ttl

リクエストの本文(JSON):

{}

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X PATCH \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=version_destroy_ttl"

PowerShell

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method PATCH `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID?updateMask=version_destroy_ttl" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

{
  "name":"projects/PROJECT_ID/secrets/SECRET_ID",
  "replication":{
     "automatic":{

     }
  },
  "createTime":"2023-10-16T17:10:16.345401Z",
  "etag":"\"1607d90ee3d84c\""
}

シークレット バージョンの破棄の遅延をテストする

Console

  1. Google Cloud コンソールで、[Secret Manager] ページに移動します。

    Secret Manager に移動

  2. シークレット名をクリックします。[シークレットの詳細] ページが表示されます。

  3. [シークレットの詳細] ページの [バージョン] テーブルで、シークレットのバージョンを選択します。

  4. [操作] 列で、 [もっと見る] をクリックし、[破棄] をクリックします。

  5. 表示されたダイアログで、[選択したバージョンの破棄のスケジュール] をクリックします。

gcloud

シークレット バージョンを破棄するには、gcloud beta secrets versions destroy コマンドを使用します。

後述のコマンドデータを使用する前に、次のように置き換えます。

  • SECRET_VERSION_ID: バージョンの ID またはバージョンの完全修飾識別子
  • SECRET_ID: Secret の ID または Secret の完全修飾識別子

次のコマンドを実行します。

Linux、macOS、Cloud Shell

gcloud secrets versions destroy SECRET_VERSION_ID --secret=SECRET_ID

Windows(PowerShell)

gcloud secrets versions destroy SECRET_VERSION_ID --secret=SECRET_ID

Windows(cmd.exe)

gcloud secrets versions destroy SECRET_VERSION_ID --secret=SECRET_ID

REST

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: Google Cloud プロジェクト ID
  • SECRET_ID: Secret の ID または Secret の完全修飾識別子
  • VERSION_ID: バージョンの ID または完全修飾識別子

HTTP メソッドと URL:

POST https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID:destroy

リクエストの本文(JSON):

{}

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID:destroy"

PowerShell

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID:destroy" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

{
  "name":"projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID",
  "createTime":"2023-10-16T17:21:55.920036Z",
  "state":"DISABLED",
  "replicationStatus":{
     "automatic":{

     }
  },
  "etag":"\"1607d8b2fc1cf4\"",
  "scheduledDestroyTime":"2023-10-16T17:26:57.459395960Z"
}

シークレット バージョンはすぐに無効になり、破棄の遅延期間が終了すると破棄がスケジュールされます。バージョンの正確な破棄日時は、[バージョン] テーブルの [破棄予定日時] 列で確認できます。

Secret バージョンを復元する

シークレット バージョンを有効または無効にすることで、破棄がスケジュールされているシークレット バージョンを復元できます。

破棄がスケジュールされているシークレット バージョンを有効にする

Console

  1. Google Cloud コンソールで、[Secret Manager] ページに移動します。

    Secret Manager に移動

  2. シークレット名をクリックします。[シークレットの詳細] ページが表示されます。

  3. [シークレットの詳細] ページの [バージョン] テーブルで、シークレット バージョンを選択します。 破棄をスケジュールしています。

  4. [操作] 列で、 [さらに表示] をクリックし、[有効にする] をクリックします。

  5. 表示されたダイアログで、[選択したバージョンを有効にする] をクリックします。

gcloud

破棄がスケジュールされている Secret バージョンを有効にするには、gcloud beta secrets versions enable コマンドを使用します。

後述のコマンドデータを使用する前に、次のように置き換えます。

  • SECRET_VERSION_ID: バージョンの ID またはバージョンの完全修飾識別子
  • SECRET_ID: Secret の ID または Secret の完全修飾識別子

次のコマンドを実行します。

Linux、macOS、Cloud Shell

gcloud secrets versions enable SECRET_VERSION_ID --secret=SECRET_ID

Windows(PowerShell)

gcloud secrets versions enable SECRET_VERSION_ID --secret=SECRET_ID

Windows(cmd.exe)

gcloud secrets versions enable SECRET_VERSION_ID --secret=SECRET_ID

REST

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: Google Cloud プロジェクト ID
  • SECRET_ID: Secret の ID または Secret の完全修飾識別子
  • VERSION_ID: バージョンの ID または完全修飾識別子

HTTP メソッドと URL:

POST https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID:enable

リクエストの本文(JSON):

{}

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID:enable"

PowerShell

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID:enable" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

{
  "name": "projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID",
  "createTime": "2024-09-04T06:41:57.859674Z",
  "state": "ENABLED",
  "etag": "\"1621457b3c1459\""
}

破棄がスケジュール設定されている Secret バージョンを無効にする

Console

  1. Google Cloud コンソールで、[Secret Manager] ページに移動します。

    Secret Manager に移動

  2. シークレット名をクリックします。[シークレットの詳細] ページが表示されます。

  3. [シークレットの詳細] ページの [バージョン] テーブルで、シークレット バージョンを選択します。 データが破棄されます。

  4. [操作] 列で、 [さらに表示] をクリックし、[無効にする] をクリックします。

  5. 表示されたダイアログで、[選択したバージョンを無効化する] をクリックします。

gcloud

破棄がスケジュールされているシークレット バージョンを無効にするには、 gcloud beta secrets versionsdisable コマンドを使用します。

後述のコマンドデータを使用する前に、次のように置き換えます。

  • SECRET_VERSION_ID: バージョンの ID またはバージョンの完全修飾識別子
  • SECRET_ID: Secret の ID または Secret の完全修飾識別子

次のコマンドを実行します。

Linux、macOS、Cloud Shell

gcloud secrets versions disable SECRET_VERSION_ID --secret=SECRET_ID

Windows(PowerShell)

gcloud secrets versions disable SECRET_VERSION_ID --secret=SECRET_ID

Windows(cmd.exe)

gcloud secrets versions disable SECRET_VERSION_ID --secret=SECRET_ID

レスポンスには、無効化されたバージョンのシークレットが含まれます。

REST

リクエストのデータを使用する前に、次のように置き換えます。

  • PROJECT_ID: Google Cloud プロジェクト ID
  • SECRET_ID: Secret の ID または Secret の完全修飾識別子
  • VERSION_ID: バージョンの ID または完全修飾識別子

HTTP メソッドと URL:

POST https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID:disable

リクエストの本文(JSON):

{}

リクエストを送信するには、次のいずれかのオプションを選択します。

curl

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID:disable"

PowerShell

リクエスト本文を request.json という名前のファイルに保存して、次のコマンドを実行します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID:disable" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

{
  "name":"projects/PROJECT_ID/secrets/SECRET_ID/versions/VERSION_ID",
  "createTime":"2023-10-16T17:21:55.920036Z",
  "state":"DISABLED",
  "replicationStatus":{
     "automatic":{

     }
  },
  "etag":"\"1607d8b3e8e1bc\""
}

次のステップ