シークレットのデータは不変であり、ほとんどの操作はシークレットのバージョンに対して行われます。シークレット バージョンには、実際のシークレット データとともに、シークレットに関する状態とメタデータが含まれます。このページでは、シークレット バージョンを追加する方法について説明します。
バージョニングの詳細については、バージョニングに関するこちらの動画をご覧ください。
必要なロール
シークレット バージョンを追加するために必要な権限を取得するには、シークレットに対する次の IAM ロールを付与するよう管理者に依頼してください。
- 
  
  
    
      Secret Manager のシークレット バージョンの追加 (
roles/secretmanager.secretVersionAdder) - 
  
  
    
      Secret Manager のシークレット バージョン マネージャー  (
roles/secretmanager.secretVersionManager) 
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
必要な権限は、カスタムロールや他の事前定義ロールから取得することもできます。
シークレット バージョンには IAM ロールを付与できません。
シークレット バージョンを追加する
シークレット バージョンを追加するには、次のいずれかの方法を使用します。
コンソール
- 
    
Google Cloud コンソールで、[Secret Manager] ページに移動します。
 - 
    
    
[Secret Manager] ページで、新しいバージョンを追加するシークレットを見つけます。
 - 
    
そのシークレットに関連付けられている [アクション] メニューをクリックし、[新しいバージョンを追加] をクリックします。[Add new version] ダイアログが表示されます。
 - 
    
[シークレット値] フィールドに、シークレットの値(
abcd1234など)を入力します。または、シークレット値を含むファイルをアップロードすることもできます。 - 
    
[新しいバージョンを追加] をクリックします。
 
gcloud
ディスク上のファイルのコンテンツからシークレット バージョンを追加する
後述のコマンドデータを使用する前に、次のように置き換えます。
- SECRET_ID: シークレットの ID
 - FILE_PATH: バージョンの詳細を含むファイルへの完全パス(ファイル名を含む)
 
次のコマンドを実行します。
Linux、macOS、Cloud Shell
gcloud secrets versions add SECRET_ID --data-file="FILE_PATH"
Windows(PowerShell)
gcloud secrets versions add SECRET_ID --data-file="FILE_PATH"
Windows(cmd.exe)
gcloud secrets versions add SECRET_ID --data-file="FILE_PATH"
レスポンスには、新しく作成されたシークレット バージョンが含まれます。
コマンドラインにシークレット バージョンを直接追加する
シークレット バージョンは、コマンドラインに直接追加することもできますが、プロセスのリストで平文として表示され、他のシステム ユーザーがキャプチャする可能性があるため、この方法はおすすめできません。平文のコマンドもシェル履歴に含まれることに注意してください。
  echo -n "SECRET_DATA" | \
      gcloud secrets versions add SECRET_ID --data-file=-次のように置き換えます。
- SECRET_DATA: シークレット バージョンに保存するデータ
 - SECRET_ID: シークレットの ID またはシークレットの完全修飾識別子
 
省略可: シークレットを最初に作成するときに、ファイルのコンテンツからバージョンを追加する
後述のコマンドデータを使用する前に、次のように置き換えます。
- SECRET_ID: シークレットの ID
 - FILE_PATH: バージョンの詳細を含むファイルへの完全パス(ファイル名を含む)
 
次のコマンドを実行します。
Linux、macOS、Cloud Shell
gcloud secrets create SECRET_ID --data-file="FILE_PATH"
Windows(PowerShell)
gcloud secrets create SECRET_ID --data-file="FILE_PATH"
Windows(cmd.exe)
gcloud secrets create SECRET_ID --data-file="FILE_PATH"
レスポンスには、新しく作成されたシークレット バージョンが含まれます。
REST
シークレット データを Base64 エンコードし、シェル変数として保存します。
$ SECRET_DATA=$(echo "seCr3t" | base64)
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: Google Cloud プロジェクト ID
 - SECRET_ID: シークレットの ID
 
HTTP メソッドと URL:
POST https://secretmanager.googleapis.com/v1/projects/PROJECT_ID/secrets/SECRET_ID:addVersion
リクエストの本文(JSON):
{"payload": {"data": "${SECRET_DATA}"}}
リクエストを送信するには、次のいずれかのオプションを選択します。
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:addVersion"
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:addVersion" | Select-Object -Expand Content
次のような JSON レスポンスが返されます。
{
  "name": "projects/PROJECT_ID/locations/LOCATION/secrets/SECRET_ID/versions/1",
  "createTime": "2024-03-25T08:24:13.153705Z",
  "state": "ENABLED",
  "etag": "\"161477e6071da9\""
}
C#
このコードを実行するには、まず C# 開発環境を設定し、Secret Manager C# SDK をインストールします。 Compute Engine または GKE では、cloud-platform スコープを使用して認証する必要があります。
Go
このコードを実行するには、まず Go 開発環境を設定し、Secret Manager Go SDK をインストールします。 Compute Engine または GKE では、cloud-platform スコープを使用して認証する必要があります。
Java
このコードを実行するには、まず Java 開発環境を設定し、Secret Manager Java SDK をインストールします。Compute Engine または GKE では、cloud-platform スコープを使用して認証する必要があります。
Node.js
このコードを実行するには、まず Node.js 開発環境を設定し、Secret Manager Node.js SDK をインストールします。Compute Engine または GKE では、cloud-platform スコープを使用して認証する必要があります。
PHP
このコードを実行するには、まず Google Cloud での PHP の使用について確認して、Secret Manager PHP SDK をインストールします。Compute Engine または GKE では、cloud-platform スコープを使用して認証する必要があります。
Python
このコードを実行するには、まず Python 開発環境を設定し、Secret Manager Python SDK をインストールします。Compute Engine または GKE では、cloud-platform スコープを使用して認証する必要があります。
Ruby
このコードを実行するには、まず Ruby 開発環境を設定し、Secret Manager Ruby SDK をインストールします。Compute Engine または GKE では、cloud-platform スコープを使用して認証する必要があります。
シークレット バージョンの状態
シークレット バージョンは任意の時点で次のいずれかの状態になります。
- 
    
有効 - この状態では、シークレット バージョンにアクセスして記述できます。 これは新しいシークレット バージョンのデフォルトの状態です。
 - 
    
無効 - この状態では、シークレット バージョンにアクセスできませんが、シークレットのコンテンツはまだ存在します。シークレット バージョンは、再度有効にして復元できます。
 - 
    
破棄 - この状態では、シークレット バージョンの内容は破棄されています。シークレット バージョンを別の状態に変更することはできません。
 
有効なシークレット バージョンと無効なシークレット バージョンの両方に対して課金されます。破棄状態のシークレット バージョンに対しては課金されません。
次のステップ
- シークレット バージョンにアクセスする方法を確認する。
 - シークレット バージョンにエイリアスを割り当てる方法を学習する。
 - シークレット バージョンを一覧表示し、バージョンの詳細を表示する方法を学習する。