サービスで、依存関係に API キー、パスワード、証明書などの機密情報が必要になることがあります。Cloud Run の場合、この機密情報を Secret Manager で作成したシークレットに保存することをおすすめします。
次のいずれかの方法で、コンテナでシークレットを使用できるようにします。
- 各シークレットをボリュームとしてマウントすると、Cloud Run はシークレットをファイルとしてコンテナで利用できるようにします。ボリュームを読み取るとき、Cloud Run は常に Secret Manager からシークレット値を取得し、最新バージョンでその値を使用します。この方法はシークレット ローテーションでも有効です。
- 環境変数を使用してシークレットを渡します。環境変数はインスタンスの起動時に解決されるため、この方法を使用する場合は、バージョンとして latestを使用するのではなく、特定のバージョンにシークレットを固定することをおすすめします。
詳細については、Secret Manager のベスト プラクティスをご覧ください。
デプロイ時とランタイムにシークレットを確認する方法
サービスのデプロイ時に、Cloud Run は使用するすべてのシークレットをチェックします。このチェックにより、コンテナを実行するサービス アカウントにこれらのシークレットへのアクセス権があることが確認されます。
ラインタイムにインスタンスが起動したときに、次の処理が実行されます。
- シークレットが環境変数の場合、Cloud Run はインスタンスの開始前にシークレットの値を取得します。シークレットの取得プロセスが失敗した場合、インスタンスは起動しません。
- シークレットをボリュームとしてマウントする場合、Cloud Run はインスタンスの起動時にチェックを行いません。ただし、ランタイムにシークレットにアクセスできない場合、マウントされたボリュームの読み取りに失敗します。
ボリュームの所有権
Cloud Run シークレット ボリュームの所有権は、実行環境とデプロイタイプによって異なります。
シークレット ボリュームをマウントする場合、ファイルとディレクトリを所有する ID は、ワークロードの実行環境や、デプロイメントが 1 つまたは複数のコンテナで構成されているかどうかによって異なります。
単一のコンテナをデプロイする第 1 世代の実行環境の場合、コンテナに使用する ID がシークレット ボリュームを所有します。それ以外の場合はすべて、root がボリュームを所有します。以下に例を示します。
- 複数のコンテナをデプロイする第 1 世代の実行環境
- 第 2 世代の環境
始める前に
- 
  
  
    
      Enable the Secret Manager API. Roles required to enable APIs To enable APIs, you need the Service Usage Admin IAM role ( roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.
- 既存のシークレットを使用するか、シークレットの作成の説明に沿って Secret Manager でシークレットを作成します。
必要なロール
シークレットを構成するために必要な権限を取得するには、次の IAM ロールを付与するよう管理者に依頼してください。
- Cloud Run サービスに対する Cloud Run 管理者(roles/run.admin)
- 
  
  
    
      サービス ID に対するサービス アカウント ユーザー(roles/iam.serviceAccountUser)
Cloud Run がシークレットにアクセスできるようにするには、サービス ID に次のロールが必要です。
- Secret Manager のシークレット アクセサー(roles/secretmanager.secretAccessor)
サービス ID プリンシパルを Secret Manager のシークレット アクセサー ロールに追加する方法については、シークレットへのアクセスを管理するをご覧ください。
Cloud Run に関連付けられている IAM ロールと権限のリストについては、Cloud Run IAM ロールと Cloud Run IAM 権限をご覧ください。Cloud Run サービスがGoogle Cloud APIs(Cloud クライアント ライブラリなど)と連携している場合は、サービス ID の構成ガイドをご覧ください。ロールの付与の詳細については、デプロイ権限とアクセスの管理をご覧ください。
Cloud Run がシークレットにアクセスできるようにする
構成を変更すると、新しいリビジョンが作成されます。明示的に更新しない限り、以降のリビジョンでも、この構成が自動的に設定されます。
新しいサービスをデプロイするか、既存のサービスを更新してリビジョンをデプロイする際に、 Google Cloud コンソール、Google Cloud CLI、または YAML ファイルを使用して、サービスでシークレットを利用できるようにします。目的のタブをクリックします。
コンソール
- Google Cloud コンソールで Cloud Run に移動します。 
- メニューから [サービス] を選択し、[コンテナをデプロイ] をクリックして、新しいサービスを構成します。最初のサービス設定ページに入力してから、[コンテナ、ボリューム、ネットワーキング、セキュリティ] をクリックしてサービス構成ページを開きます。 
- 既存のサービスを構成する場合は、サービスをクリックし、[新しいリビジョンの編集とデプロイ] をクリックします。 
- 手順に沿って、シークレットをボリュームとしてマウントするか、シークレットを環境変数として公開します。 - シークレットを環境変数として公開するには: - [コンテナ] タブをクリックします。
- [変数とシークレット] タブで、[シークレットを参照] をクリックします。
- [名前 1] フィールドに、環境変数の名前を入力します。
- [シークレット] リストから、使用するシークレットを選択します。
- [バージョン 1] リストから、参照するシークレットのバージョンを選択します。
- [完了] をクリックします。
- [作成] または [デプロイ] をクリックします。
 
- シークレットをボリュームとしてマウントするには: - [ボリューム] タブをクリックし、[ボリュームを追加] を選択します。
- [ボリュームのタイプ] リストから、[シークレット] を選択します。
- [ボリューム名] フィールドに名前を入力するか、デフォルト名を使用します。
- [シークレット] リストから、使用するシークレットを選択します。
- [パス 1] フィールドに、マウントするファイルの名前を入力します。
- [バージョン 1] リストで、参照するシークレットのバージョンを選択します。デフォルトでは最新バージョンが選択されます。必要に応じて特定のバージョンを選択できます。
- [完了] をクリックします。
- [コンテナ] タブに移動して、シークレットをコンテナにマウントします。
- [ボリュームのマウント] タブで、[ボリュームをマウント] をクリックします。
- [名前 1] リストからボリューム名を選択します。
- [マウントパス 1] フィールドに、このシークレットのマウントパスを入力します。これは、シークレットのすべてのバージョンが配置されるディレクトリです。
- [完了] をクリックします。
- [作成] または [デプロイ] をクリックします。
 
 
gcloud
サービスでシークレットを利用できるようにするには、次のいずれかのコマンドを入力します。
- サービスをデプロイするときにシークレットをボリュームとしてマウントするには: - gcloud run deploy SERVICE --image IMAGE_URL \ --update-secrets=PATH=SECRET_NAME:VERSION - 次のように置き換えます。 - SERVICE: サービスの名前。
- IMAGE_URL: コンテナ イメージへの参照(us-docker.pkg.dev/cloudrun/container/hello:latestなど)。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL はLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAGの形式です。
- PATH: ボリュームのマウントパスとシークレットのファイル名。先頭にスラッシュを付ける必要があります(例:- /etc/secrets/dbconfig/password)。ここで、- /etc/secrets/dbconfig/はボリュームのマウントパス、- passwordはシークレットのファイル名です。
- SECRET_NAME: 同じプロジェクト内のシークレット名(例:- mysecret)。
- VERSION: シークレットのバージョン。最新バージョンには- latestまたは数字(- 2など)を使用します。
 
- サービスをデプロイするときに、シークレットを環境変数として公開するには: - gcloud run deploy SERVICE \ --image IMAGE_URL \ --update-secrets=ENV_VAR_NAME=SECRET_NAME:VERSION - 次のように置き換えます。 - SERVICE: サービスの名前。
- IMAGE_URL: コンテナ イメージへの参照(us-docker.pkg.dev/cloudrun/container/hello:latestなど)。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL はLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAGの形式です。
- ENV_VAR_NAME: シークレットで使用する環境変数の名前。
- SECRET_NAME: 同じプロジェクト内のシークレット名(例:- mysecret)。
- VERSION: シークレットのバージョン。最新バージョンには- latestまたは数字(- 2など)を使用します。
 
- 複数のシークレットを同時に更新できます。これを行うには、各シークレットの構成オプションをカンマで区切ります。次のコマンドは、ボリュームとしてマウントされたシークレットと、環境変数として公開された別のシークレットを更新します。 - 既存のシークレットを更新するには、次のコマンドを入力します。 - gcloud run deploy SERVICE --image IMAGE_URL \ --update-secrets=PATH=SECRET_NAME:VERSION,ENV_VAR_NAME=SECRET_NAME:VERSION 
- 既存のシークレットをクリアして、サービスで新しいシークレットを利用できるようにするには、 - --set-secretsフラグを使用します。- gcloud run services update SERVICE \ --set-secrets="ENV_VAR_NAME=SECRET_NAME:VERSION" 
YAML
- 新しいサービスを作成する場合は、この手順をスキップします。既存のサービスを更新する場合は、その YAML 構成をダウンロードします。 - gcloud run services describe SERVICE --format export > service.yaml 
- 環境変数として公開されたシークレットの場合、 - envで、必要に応じて ENV_VAR、VERSION、SECRET_NAME を更新します。複数のシークレットを環境変数としてマウントすると、属性はその倍数になります。- apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: name: REVISION spec: containers: - image: IMAGE_URL env: - name: ENV_VAR valueFrom: secretKeyRef: key: VERSION name: SECRET_NAME 
- ファイルパスとしてマウントされたシークレットの場合は、必要に応じて MOUNT_PATH、VOLUME_NAME、VERSION、FILENAME、SECRET_NAME を更新します。ファイルパスとして複数のシークレットをマウントすると、属性はその倍数になります。 - apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: name: REVISION spec: containers: - image: IMAGE_URL volumeMounts: - mountPath: MOUNT_PATH name: VOLUME_NAME volumes: - name: VOLUME_NAME secret: items: - key: VERSION path: FILENAME secretName: SECRET_NAME - VOLUME_NAMEは任意の名前に設定できます。- 次のように置き換えます。 - SERVICE: Cloud Run サービスの名前。
- IMAGE_URL: コンテナ イメージへの参照(us-docker.pkg.dev/cloudrun/container/hello:latestなど)。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL はLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAGの形式です。
- REVISION は、新しいリビジョン名に置き換えるか、削除します(存在する場合)。新しいリビジョン名を指定する場合は、次の条件を満たす必要があります。- SERVICE-で始まる
- 小文字、数字、-のみが使用されている
- 末尾が -ではない
- 63 文字以内である
 
 
- 次のコマンドを使用して、サービスを新しい構成に置き換えます。 - gcloud run services replace service.yaml 
Terraform
- シークレットを作成し、シークレット バージョンにアクセスします。 
- サービス アカウントを作成して、シークレットへのアクセス権を付与します。 
- Cloud Run から Secret Manager のシークレットにアクセスするには、マウントされたファイルパスとしてアクセスするか、環境変数としてアクセスします。 - ファイルパスとしてマウントされたシークレットの場合は、 - volumesパラメータで Secret Manager リソースを参照します。- nameは- volume_mountsパラメータのエントリに対応しています。
- 環境変数として公開されたシークレットの場合は、 - envパラメータで Secret Manager リソースを参照します。
 
他のプロジェクトのシークレットを参照する
別のプロジェクトのシークレットを参照するには、プロジェクトのサービス アカウントにシークレットへのアクセス権があることを確認します。
コンソール
- Google Cloud コンソールで Cloud Run に移動します。 
- メニューから [サービス] を選択し、[コンテナをデプロイ] をクリックして、新しいサービスを構成します。最初のサービス設定ページに入力してから、[コンテナ、ボリューム、ネットワーキング、セキュリティ] をクリックしてサービス構成ページを開きます。 
- 既存のサービスを構成する場合は、サービスをクリックし、[新しいリビジョンの編集とデプロイ] をクリックします。 
- 手順に沿って、シークレットをボリュームとしてマウントするか、シークレットを環境変数として公開します。 - シークレットを環境変数として公開するには: - [コンテナ] タブをクリックします。
- [変数とシークレット] タブで、[シークレットを参照] をクリックします。
- [名前 1] フィールドに、環境変数の名前を入力します。
- [シークレット] リストで、[シークレットを手動で入力] をクリックします。
- シークレットのリソース ID を次の形式で入力します。 - projects/PROJECT_NUMBER/secrets/SECRET_NAME- 次のように置き換えます。 - PROJECT_NUMBER: Google Cloud プロジェクト番号。プロジェクト番号を確認する方法の詳細については、プロジェクトの作成と管理をご覧ください。 
- SECRET_NAME: Secret Manager でのシークレットの名前。 
 
- [バージョン 1] リストから、参照するシークレットのバージョンを選択します。 
- [完了] をクリックします。 
- [作成] または [デプロイ] をクリックします。 
 
- シークレットをボリュームとしてマウントするには: - [ボリューム] タブをクリックし、[ボリュームを追加] を選択します。
- [ボリュームのタイプ] リストから、[シークレット] を選択します。
- [ボリューム名] フィールドに名前を入力するか、デフォルト名を使用します。
- [シークレット] リストで、[シークレットを手動で入力] をクリックします。
- シークレットのリソース ID を次の形式で入力します。 - projects/PROJECT_NUMBER/secrets/SECRET_NAME- 次のように置き換えます。 - PROJECT_NUMBER: Google Cloud プロジェクト番号。プロジェクト番号を確認する方法の詳細については、プロジェクトの作成と管理をご覧ください。 
- SECRET_NAME: Secret Manager でのシークレットの名前。 
 
- [パス 1] フィールドに、マウントするファイルの名前を入力します。 
- [バージョン 1] リストで、参照するシークレットのバージョンを選択します。デフォルトでは最新バージョンが選択されます。必要に応じて特定のバージョンを選択できます。 
- [完了] をクリックします。 
- [コンテナ] タブに移動して、シークレットをコンテナにマウントします。 
- [ボリュームのマウント] タブで、[ボリュームをマウント] をクリックします。 
- [名前 1] リストからボリューム名を選択します。 
- [マウントパス 1] フィールドに、このシークレットのマウントパスを入力します。これは、シークレットのすべてのバージョンが配置されるディレクトリです。 
- [完了] をクリックします。 
- [作成] または [デプロイ] をクリックします。 
 
 
gcloud
- サービスをデプロイするときにシークレットをボリュームとしてマウントするには: - gcloud run deploy SERVICE --image IMAGE_URL \ --update-secrets=PATH=projects/PROJECT_NUMBER/secrets/SECRET_NAME:VERSION - 次のように置き換えます。 - SERVICE: サービスの名前。
- IMAGE_URL: コンテナ イメージへの参照(us-docker.pkg.dev/cloudrun/container/hello:latestなど)。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL はLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAGの形式です。
- PATH: ボリュームのマウントパスとシークレットのファイル名。先頭にスラッシュを付ける必要があります(例:- /etc/secrets/dbconfig/password)。ここで、- /etc/secrets/dbconfig/はボリュームのマウントパス、- passwordはシークレットのファイル名です。
- PROJECT_NUMBERは、シークレットが作成されたプロジェクトのプロジェクト番号に置き換えます。
- SECRET_NAME: シークレット名(例:- mysecret)。
- VERSION: シークレットのバージョン。最新バージョンには- latestまたは数字(- 2など)を使用します。
 
YAML
- 新しいサービスを作成する場合は、この手順をスキップします。既存のサービスを更新する場合は、その YAML 構成をダウンロードします。 - gcloud run services describe SERVICE --format export > service.yaml 
API の互換性には制約があるため、シークレットの場所はアノテーションに保存する必要があります。
- 環境変数として公開されたシークレットの場合: - apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: annotations: run.googleapis.com/secrets: SECRET_LOOKUP_NAME:projects/PROJECT_NUMBER/secrets/SECRET_NAME spec: containers: - image: IMAGE_URL env: - name: ENV_VAR valueFrom: secretKeyRef: key: VERSION name: SECRET_LOOKUP_NAME - 次のように置き換えます。 - SERVICE: サービスの名前。
- IMAGE_URL: コンテナ イメージへの参照(us-docker.pkg.dev/cloudrun/container/hello:latestなど)。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL はLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAGの形式です。
- ENV_VAR
- PROJECT_NUMBER: シークレットが作成されたプロジェクトのプロジェクト番号。
- SECRET_NAME: シークレット名(例:- mysecret)。
- VERSION: シークレットのバージョン。最新バージョンには- latestまたは数字(- 2など)を使用します。
- SECRET_LOOKUP_NAME: 有効なシークレット名の構文を持つ任意の名前(- my-secretなど)。- SECRET_NAMEと同じ値にすることもできます。
 
- シークレットをファイルパスとしてマウントする場合: - apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: metadata: annotations: run.googleapis.com/secrets: SECRET_LOOKUP_NAME:projects/PROJECT_NUMBER/secrets/SECRET_NAME spec: containers: - image: IMAGE_URL volumeMounts: - mountPath: MOUNT_PATH name: VOLUME_NAME volumes: - name: VOLUME_NAME secret: items: - key: VERSION path: FILENAME secretName: SECRET_LOOKUP_NAME - 次のように置き換えます。 - SERVICE: サービスの名前。
- IMAGE_URL: コンテナ イメージへの参照(us-docker.pkg.dev/cloudrun/container/hello:latestなど)。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL はLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAGの形式です。
- PATH: ボリュームのマウントパスとシークレットのファイル名。先頭にスラッシュを付ける必要があります(例:- /etc/secrets/dbconfig/password)。ここで、- /etc/secrets/dbconfig/はボリュームのマウントパス、- passwordはシークレットのファイル名です。
- PROJECT_NUMBER: シークレットが作成されたプロジェクトのプロジェクト番号。
- SECRET_NAME: シークレット名(例:- mysecret)。
- VERSION: シークレットのバージョン。最新バージョンには- latestまたは数字(- 2など)を使用します。
- SECRET_LOOKUP_NAME: 有効なシークレット名の構文を持つ任意の名前(- my-secretなど)。- SECRET_NAMEと同じ値にすることもできます。
- VOLUME_NAME: 任意の名前(- my-volumeなど)。- SECRET_NAMEと同じ値にすることもできます。
 
Terraform
Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。
Terraform 構成のgoogle_cloud_run_v2_service リソースに次の内容を追加します。環境変数として公開されたシークレットの場合:
resource "google_cloud_run_v2_service" "default" {
  name     = "SERVICE_NAME"
  location = "REGION"
  template {
    containers {
      image = "IMAGE_URL"
      env {
        name = "SECRET_NAME"
        value_source {
          secret_key_ref {
            secret = "projects/PROJECT_ID/secrets/SECRET_NAME"
            version = "VERSION"
          }
        }
      }
    }
  }
}
次のように置き換えます。
- SERVICE_NAME: Cloud Run ジョブの名前。
- REGION: Google Cloud のリージョン。例: europe-west1
- IMAGE_URL: コンテナ イメージへの参照(us-docker.pkg.dev/cloudrun/container/hello:latestなど)。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL はLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAGの形式です。
- SECRET_NAME: シークレット名(例: mysecret)。
- PROJECT_ID: シークレットが作成されたプロジェクト ID。
- VERSION: シークレットのバージョン。最新バージョンには latestまたは数字(2など)を使用します。
シークレットをファイルパスとしてマウントする場合:
resource "google_cloud_run_v2_service" "default" {
  name     = "SERVICE_NAME"
  location = "REGION"
  template {
    containers {
      image = "IMAGE_URL"
      volume_mounts {
        name       = "VOLUME_NAME"
        mount_path = "MOUNT_PATH"
      }
    }
    volumes {
      name = "VOLUME_NAME"
      secret {
        secret = "projects/PROJECT_ID/secrets/SECRET_NAME"
      }
    }
  }
}
次のように置き換えます。
- SERVICE_NAME: Cloud Run ジョブの名前。
- REGION: Google Cloud のリージョン。例: europe-west1
- IMAGE_URL: コンテナ イメージへの参照(us-docker.pkg.dev/cloudrun/container/hello:latestなど)。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL はLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAGの形式です。
- VOLUME_NAME: 任意の名前(my-volumeなど)。SECRET_NAMEと同じ値にすることもできます。
- MOUNT_PATH: ボリュームのマウントパスとシークレットのファイル名。先頭にスラッシュを付ける必要があります(例: /etc/secrets/dbconfig/password)。ここで、/etc/secrets/dbconfig/はボリュームのマウントパス、passwordはシークレットのファイル名です。
- PROJECT_ID: シークレットが作成されたプロジェクト ID。
- SECRET_NAME: シークレット名(例: mysecret)。
シークレットの設定を表示する
Cloud Run サービスの現在のシークレットの設定を表示するには:
コンソール
- Google Cloud コンソールで Cloud Run に移動します。 
- 目的のサービスをクリックして、[サービスの詳細] ページを開きます。 
- [変更内容] タブをクリックします。 
- 右側の詳細パネルの [コンテナ] タブに、シークレットの設定が表示されます。 
gcloud
- 次のコマンドを使用します。 - gcloud run services describe SERVICE 
- 返された構成で、シークレットの設定を見つけます。 
サービスからシークレットを削除する
サービスからシークレットを削除するには、 Google Cloud コンソールまたは gcloud CLI を使用します。
コンソール
- Google Cloud コンソールで Cloud Run に移動します。 
- リストからサービスを選択し、[新しいリビジョンの編集とデプロイ] をクリックします。 
- [コンテナ] タブをクリックします。 
- ボリュームとしてマウントされたシークレットを削除するには、[ボリューム マウント] タブを選択し、削除するシークレットにポインタを合わせて、 [削除] をクリックします。 
- 環境変数として公開されているシークレットを削除するには、[変数とシークレット] タブを選択し、削除するシークレットにポインタを合わせて、 [削除] をクリックします。 
- [デプロイ] をクリックします。 
gcloud
サービスからすべてのシークレットを削除するか、削除する 1 つまたは複数のシークレットを指定します。
- すべてのシークレットを削除するには、次のコマンドを実行します。 - gcloud run deploy SERVICE --image IMAGE_URL \ --clear-secrets- 次のように置き換えます。 - SERVICE: サービスの名前。
- IMAGE_URL: コンテナ イメージへの参照(us-docker.pkg.dev/cloudrun/container/hello:latestなど)。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL はLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAGの形式です。
 
- 削除するシークレットのリストを指定するには、 - --remove-secretsフラグを使用します。次のコマンドは、ボリュームとしてマウントされたシークレットと、環境変数として公開された別のシークレットを削除します。- gcloud run deploy SERVICE --image IMAGE_URL \ --remove-secrets=ENV_VAR_NAME,SECRET_FILE_PATH- 次のように置き換えます。 - SERVICE: サービスの名前。
- IMAGE_URL: コンテナ イメージへの参照(us-docker.pkg.dev/cloudrun/container/hello:latestなど)。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL はLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAGの形式です。
- ENV_VAR_NAME: 環境変数の名前。
- SECRET_FILE_PATH: シークレットのフルパス。たとえば、 - /mnt/secrets/primary/latestの場合、- /mnt/secrets/primary/はマウントパス、- latestはシークレットのパスです。マウントパスとシークレットのパスを別々に指定することもできます。- --set-secrets MOUNT_PATH:SECRET_PATH=SECRET:VERSION
 
コードでシークレットを使用する
コード内でシークレットを環境変数としてアクセスする例については、エンドユーザー認証に関するチュートリアル、特に Secret Manager で機密性の高い構成を処理するのセクションをご覧ください。
許可されていないパスと制限
シークレットのマウントには次の制限が適用されます。
- Cloud Run では、/dev、/proc、/sys、またはそのサブディレクトリにシークレットをマウントすることはできません。
- /tmpにシークレットをマウントし、第 1 世代の実行環境を使用している場合は、- /tmpへのシークレットのマウントに関する既知の問題をご覧ください。
- Cloud Run では、複数のボリューム マウントを同じ場所にマウントできないため、複数のシークレットを同じパスにマウントすることはできません。
ディレクトリのオーバーライド
Cloud Run でシークレットがボリュームとしてマウントされ、ボリューム マウント パスの最後のディレクトリがすでに存在する場合、既存のディレクトリ内のファイルまたはフォルダにアクセスできなくなります。
たとえば、my-secret という名前のシークレットがパス /etc/app_data にマウントされている場合、app_data ディレクトリ内のすべてのコンテンツが上書きされ、表示されるファイルは /etc/app_data/my-secret のみになります。
既存のディレクトリ内のファイルを上書きしないようにするには、シークレットをマウントするディレクトリ(/etc/app_data/secrets など)を新たに作成し、シークレットのマウントパスを /etc/app_data/secrets/my-secret にします。