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

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

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

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

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

利点

この機能には、次の利点があります。

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

  • シークレット バージョンを破棄すると、シークレットで構成された Pub/Sub トピックに SECRET_VERSION_DESTROY_SCHEDULED 通知がトリガーされます。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 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 secrets update コマンドを使用します。

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

  • SECRET_ID: Secret の ID または Secret の完全修飾識別子
  • 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: Secret の ID または Secret の完全修飾識別子
  • 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 secrets update コマンドを使用します。

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

  • SECRET_ID: Secret の ID または Secret の完全修飾識別子

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

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 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"
}

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

シークレット バージョンを復元する

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

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

Console

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

    Secret Manager に移動

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

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

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

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

gcloud

破棄がスケジュールされているシークレット バージョンを有効にするには、gcloud 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\""
}

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

Console

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

    Secret Manager に移動

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

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

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

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

gcloud

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

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

  • 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\""
}

次のステップ