このページでは、シークレット バージョンの破棄の遅延の設定、破棄の遅延期間の更新または削除、破棄がスケジュールされているシークレット バージョンの復元の方法について説明します。
シークレット バージョンを破棄すると、シークレット マテリアルは即時かつ完全に破棄されます。Secret Manager 管理者は、シークレット バージョンの破棄を遅らせることができます。これにより、シークレット バージョンはリクエストされるとすぐに破棄されず、構成可能な期間にわたって復元可能になります。
シークレットで破棄の遅延が有効になっている場合、シークレット バージョンを破棄すると、次のようになります。
- バージョンが無効になっているため、使用できません。
- システムは、遅延期間の終了時にバージョンを完全に破棄するようにスケジュールします。
- 遅延期間が終了すると、シークレット バージョンは完全に破棄され、復元できなくなります。
利点
この機能には、次の利点があります。
重要なシークレット マテリアルの偶発的または悪意のある破壊に対する保護の強化。Secret Manager シークレット バージョン マネージャーのロールを持つすべてのユーザーは、シークレット バージョンを破棄できます。この操作は元に戻せません。破棄の遅延を設定することで、シークレット バージョンが即座に破棄されることを防止できます。センシティブ データの偶発的な破棄をモニタリングし、防止できるため、シークレット バージョンのライフサイクルを管理するために必要な最小限のアクセス権をユーザーに付与できます。
シークレット バージョンを破棄すると、シークレットで構成された Pub/Sub トピックに SECRET_VERSION_DESTROY_SCHEDULED 通知がトリガーされます。Secret Manager 管理者は、スケジュールされた破棄をキャンセルし、シークレット バージョンを有効または無効にすることで復元できます。
始める前に
Enable the Secret Manager 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.
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
Google Cloud コンソールで、[Secret Manager] ページに移動します。
シークレットを作成するために必要な手順を行います。
シークレット バージョンの破棄を遅延させるセクションに移動します。
[破棄の遅延期間を設定する] チェックボックスをオンにします。
[破棄の遅延期間] フィールドに、期間を日数で入力します。入力できる最小値は 1 日で、最大値は 1,000 日です。
[シークレットの作成] をクリックします。
既存のシークレットでこの機能を有効にするには、[シークレットを編集] ページに移動し、破棄の遅延期間を構成します。
gcloud
シークレットの破棄遅延時間を構成するには、gcloud secrets create コマンドを使用します。
後述のコマンドデータを使用する前に、次のように置き換えます。
- SECRET_ID: シークレットの ID またはシークレットの完全修飾識別子。
- 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: シークレットの ID またはシークレットの完全修飾識別子。
- 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
Google Cloud コンソールで、[Secret Manager] ページに移動します。
次のいずれかの方法でシークレットを編集します。
- 編集するシークレットに関連付けられた [その他の操作] をクリックし、メニューから [編集] を選択します。
- シークレット名をクリックして [シークレットの詳細] ページに移動します。[シークレットの詳細] ページで、[ シークレットを編集する] をクリックします。
シークレット バージョンの破棄を遅延させるセクションに移動します。
[破棄の遅延期間] フィールドに、更新された期間を入力します。
[シークレットを更新する] をクリックします。
gcloud
破棄の遅延時間を更新するには、gcloud 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
Google Cloud コンソールで、[Secret Manager] ページに移動します。
次のいずれかの方法でシークレットを編集します。
- 編集するシークレットに関連付けられた [その他の操作] をクリックし、メニューから [編集] を選択します。
- シークレット名をクリックして [シークレットの詳細] ページに移動します。[シークレットの詳細] ページで、[ シークレットを編集する] をクリックします。
シークレット バージョンの破棄を遅延させるセクションに移動します。
[破棄の遅延期間を設定する] チェックボックスをオフにします。
[シークレットを更新する] をクリックします。
gcloud
破棄の遅延時間を削除するには、gcloud 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: シークレットの ID またはシークレットの完全修飾識別子
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
Google Cloud コンソールで、[Secret Manager] ページに移動します。
シークレット名をクリックします。[シークレットの詳細] ページが表示されます。
[シークレットの詳細] ページの [バージョン] テーブルで、シークレットのバージョンを選択します。
[操作] 列で、
[もっと見る] をクリックし、[破棄] をクリックします。表示されたダイアログで、[選択したバージョンの破棄をスケジュール] をクリックします。
gcloud
シークレット バージョンを破棄するには、gcloud secrets versions destroy コマンドを使用します。
後述のコマンドデータを使用する前に、次のように置き換えます。
- SECRET_VERSION_ID: バージョンの ID またはバージョンの完全修飾識別子
- SECRET_ID: シークレットの ID またはシークレットの完全修飾識別子
次のコマンドを実行します。
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: シークレットの ID またはシークレットの完全修飾識別子
- 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
Google Cloud コンソールで、[Secret Manager] ページに移動します。
シークレット名をクリックします。[シークレットの詳細] ページが表示されます。
[シークレットの詳細] ページの [バージョン] テーブルで、破棄がスケジュールされているシークレット バージョンを選択します。
[操作] 列で、
[さらに表示] をクリックし、[有効にする] をクリックします。表示されたダイアログで、[選択したバージョンを有効にする] をクリックします。
gcloud
破棄がスケジュールされているシークレット バージョンを有効にするには、gcloud secrets versions enable コマンドを使用します。
後述のコマンドデータを使用する前に、次のように置き換えます。
- SECRET_VERSION_ID: バージョンの ID またはバージョンの完全修飾識別子
- SECRET_ID: シークレットの ID またはシークレットの完全修飾識別子
次のコマンドを実行します。
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: シークレットの ID またはシークレットの完全修飾識別子
- 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
Google Cloud コンソールで、[Secret Manager] ページに移動します。
シークレット名をクリックします。[シークレットの詳細] ページが表示されます。
[シークレットの詳細] ページの [バージョン] テーブルで、破棄がスケジュールされているシークレット バージョンを選択します。
[操作] 列で、
[さらに表示] をクリックし、[無効にする] をクリックします。表示されたダイアログで、[選択したバージョンを無効にする] をクリックします。
gcloud
破棄がスケジュールされているシークレット バージョンを無効にするには、gcloud secrets versions disable コマンドを使用します。
後述のコマンドデータを使用する前に、次のように置き換えます。
- SECRET_VERSION_ID: バージョンの ID またはバージョンの完全修飾識別子
- SECRET_ID: シークレットの ID またはシークレットの完全修飾識別子
次のコマンドを実行します。
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: シークレットの ID またはシークレットの完全修飾識別子
- 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\"" }
次のステップ
- データの整合性を確保する方法を学習する。
- ベスト プラクティスについて確認する。
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2024-12-22 UTC。