このトピックでは、シークレットの作成、シークレット バージョンの追加、シークレット バージョンにアクセスする方法を説明します。シークレットの管理に関する詳細は、シークレットの管理をご覧ください。
始める前に
プロジェクトごとに 1 回、Secret Manager とローカル環境を構成します。
シークレットの作成
シークレットには 1 つ以上のシークレット バージョンとともに、ラベルやレプリケーション情報などのメタデータが含まれます。シークレットの実際のコンテンツは、シークレット バージョンに保存されます。
シークレットに適したレプリケーション ポリシーがわからない場合は、レプリケーション ポリシーの選択をご覧ください。
シークレットを作成するには、プロジェクト、フォルダ、または組織の Secret Manager 管理者ロール(roles/secretmanager.admin
)が必要です。
Console
-
コンソールで [Secret Manager] ページに移動します。
-
[シークレット マネージャー] ページで、[シークレットを作成] をクリックします。
-
[シークレットの作成] ページの [名前] に、シークレットの名前を入力します(例:
my-secret
)。 -
(省略可)最初のシークレットの作成時にシークレット バージョンも追加するには、[シークレットの値] フィールドにシークレットの値を入力します(例:
abcd1234
)。 -
[リージョン] セクションは変更しません。
-
[シークレットを作成] ボタンをクリックします。
gcloud
Secret Manager をコマンドラインで使用するには、まず Google Cloud CLI のバージョン 338.0.0 以降をインストールまたはアップグレードします。Compute Engine または GKE では、cloud-platform スコープを使用して認証する必要があります。
$ gcloud secrets create secret-id \
--replication-policy="automatic"
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 スコープを使用して認証する必要があります。
API
次の例では、API の使用を示すために curl を使用します。gcloud auth print-access-token を使用してアクセス トークンを生成できます。Compute Engine または GKE では、cloud-platform スコープを使用して認証する必要があります。
$ curl "https://secretmanager.googleapis.com/v1/projects/project-id/secrets?secretId=secret-id" \
--request "POST" \
--header "authorization: Bearer $(gcloud auth print-access-token)" \
--header "content-type: application/json" \
--data "{\"replication\": {\"automatic\": {}}}"
シークレット バージョンの追加
シークレット バージョンには、実際の シークレットのコンテンツが含まれています。シークレット バージョンの有効化、無効化、破棄を行うことができます。シークレットのコンテンツを変更するには、新しいバージョンを作成します。
シークレット バージョンを追加するには、シークレット、プロジェクト、フォルダ、または組織に対する Secret Manager 管理者ロール(roles/secretmanager.admin
)が必要です。シークレット バージョンにはロールを付与できません。
Console
-
コンソールで [Secret Manager] ページに移動します。
-
[Secret Manager] ページで、[さらに表示
] をクリックして [新しいバージョンを追加] を選択します。 -
[新しいバージョンを追加] ダイアログの [シークレット値] フィールドに、シークレットの値を入力します(例:
abcd1234
)。 -
[新しいバージョンを追加] ボタンをクリックします。
gcloud
Secret Manager をコマンドラインで使用するには、まず Google Cloud CLI のバージョン 338.0.0 以降をインストールまたはアップグレードします。Compute Engine または GKE では、cloud-platform スコープを使用して認証する必要があります。
ディスク上のファイルのコンテンツからシークレット バージョンを追加します。
$ gcloud secrets versions add secret-id --data-file="/path/to/file.txt"
シークレット バージョンは、コマンドラインに直接追加することもできますが、シェル履歴に平文が表示されるため、この方法はおすすめできません。
$ echo -n "this is my super secret data" | \
gcloud secrets versions add secret-id --data-file=-
省略可: シークレットを最初に作成するときに、ファイルのコンテンツからバージョンを追加します。
$ gcloud secrets create secret-id --data-file="/path/to/file.txt"
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 スコープを使用して認証する必要があります。
API
次の例では、API の使用を示すために curl を使用します。gcloud auth print-access-token を使用してアクセス トークンを生成できます。Compute Engine または GKE では、cloud-platform スコープを使用して認証する必要があります。
シークレット データを Base64 エンコードし、シェル変数として保存します。
$ SECRET_DATA=$(echo "seCr3t" | base64)
curl を使用して API を呼び出します。
$ curl "https://secretmanager.googleapis.com/v1/projects/project-id/secrets/secret-id:addVersion" \
--request "POST" \
--header "authorization: Bearer $(gcloud auth print-access-token)" \
--header "content-type: application/json" \
--data "{\"payload\": {\"data\": \"${SECRET_DATA}\"}}"
シークレット バージョンへのアクセス
シークレット バージョンにアクセスすると、シークレットのコンテンツとシークレットのバージョンに関する追加のメタデータが返されます。シークレット バージョンにアクセスする際は、その version-id を指定します。また、"latest"
をバージョンとして指定することにより、シークレットの最新バージョンにもアクセスできます。
シークレット バージョンにアクセスするには、シークレット、プロジェクト、フォルダまたは組織に対する Secret Manager の Secret Accessor ロール(roles/secretmanager.secretAccessor
)が必要です。シークレット バージョンには IAM ロールを付与できません。
リソースの整合性
Secret Manager では、シークレット バージョンを追加してすぐにそのシークレット バージョンにアクセスすることは、強整合性のあるオペレーションです。Secret Manager 内の他のオペレーションには、結果整合性があります。結果整合性のあるオペレーションは、通常は数分以内に収束しますが、数時間かかることもあります。
IAM 権限の伝播には、結果整合性があります。つまり、シークレットのアクセス権の付与または取り消しはすぐには有効にならない場合があります。詳細については、IAM のドキュメントをご覧ください。
Console
-
コンソールで [Secret Manager] ページに移動します。
-
[Secret Manager] ページで、シークレットの [名前] をクリックします。
-
[シークレットの詳細] ページの [バージョン] テーブルで、アクセスするシークレット バージョンのロケーションを確認します。
-
[アクション] 列で、[
の詳細] をクリックします。 -
メニューから [シークレット値の表示] をクリックします。
-
シークレットのバージョン値を示すダイアログが表示されます。[完了] をクリックして終了します。
gcloud
Secret Manager をコマンドラインで使用するには、まず Google Cloud CLI のバージョン 338.0.0 以降をインストールまたはアップグレードします。Compute Engine または GKE では、cloud-platform スコープを使用して認証する必要があります。
シークレット バージョンにアクセスします。
$ gcloud secrets versions access version-id --secret="secret-id"
バイナリ シークレット バージョンにアクセスします。
$ gcloud secrets versions access version-id --secret="secret-id" --format='get(payload.data)' | tr '_-' '/+' | base64 -d
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 スコープを使用して認証する必要があります。
API
次の例では、API の使用を示すために curl を使用します。gcloud auth print-access-token を使用してアクセス トークンを生成できます。Compute Engine または GKE では、cloud-platform スコープを使用して認証する必要があります。
$ curl "https://secretmanager.googleapis.com/v1/projects/project-id/secrets/secret-id/versions/version-id:access" \
--request "GET" \
--header "authorization: Bearer $(gcloud auth print-access-token)" \
--header "content-type: application/json"
レスポンス payload.data
は、シークレット バージョンの Base64 エンコードされたコンテンツです。jq
ツールを使用してシークレットを抽出する例を次に示します。
$ curl "https://secretmanager.googleapis.com/v1/projects/project-id/secrets/secret-id/versions/version-id:access" \
--request "GET" \
--header "authorization: Bearer $(gcloud auth print-access-token)" \
--header "content-type: application/json" \
| jq -r ".payload.data" | base64 --decode
次のステップ
- シークレットとシークレット バージョンの管理について確認する。
- シークレットへのアクセスの管理について詳細を確認する。