実行環境のセキュリティ

すべての関数は、Cloud Functions の安全な実行環境内で、バージョニングされたランタイム イメージ上で実行されます。ランタイム イメージには、オペレーティング システム ライブラリ、言語ランタイム、その他のシステム パッケージが含まれています。Google は、すべての Cloud Functions ランタイム イメージを保持し、安定性テスト期間の後にセキュリティ パッチとメンテナンス更新をリリースします。

ランタイム イメージ

各ランタイムには、gcr.io の公開リポジトリに、関連するランタイム イメージ(実行イメージとも呼ばれます)があります。ランタイム ID とそのランタイム イメージの一覧については、ランタイムをご覧ください。

ランタイム イメージを特定する

関数のビルドログを調べることで、関数の作成に使用されたランタイム イメージを特定できます。

ビルドログ内で google.run-image を検索します。これにより、関数のビルドに使用されたランタイム イメージのバージョンを記述したビルドステップのログエントリが得られます。たとえば、Nodejs 関数のログエントリは次のようになります。

{
  ...
  "textPayload": "Step #2 - \"build\": Adding image label google.run-image:
    us.gcr.io/gae-runtimes/buildpacks/nodejs20/run:nodejs20_20230924_20_6_1_RC00",
  ...
}

セキュリティ更新ポリシー

Cloud Functions には、次の 2 つのセキュリティ更新ポリシーがあります。

  • 自動更新: ランタイム環境の更新とセキュリティ パッチは、ランタイム イメージの新しいバージョンで公開されます。更新されたランタイムは、安定性と信頼性についてのテスト期間の後、すべての関数にロールアウトされ、ダウンタイムのない更新が行われます。セキュリティの自動更新は、Cloud Functions(第 1 世代)でのみ使用できます。

  • デプロイ時の更新: 特に明記されていない限り、更新とセキュリティ パッチは、関数がデプロイまたは再デプロイされたときにのみランタイムに適用されます。デプロイ時の更新は、Cloud Functions(第 1 世代)と Cloud Functions(第 2 世代)の両方で使用できます。

関数の更新ポリシーを設定する

Cloud Functions(第 1 世代)を使用している場合は、次に示すように gcloud deploy コマンドに --runtime-update-policy フラグを含めることで、関数の更新ポリシーを変更できます。

  gcloud functions deploy FUNCTION_NAME \
    --runtime-update-policy=POLICY ...

次のように置き換えます。

  • FUNCTION_NAME は、関数の名前に置き換えます。
  • POLICYautomatic または on-deploy に置き換えます。

関数の更新ポリシーを調べる

関数の更新ポリシーは、次のコマンドで検査できます。

  gcloud functions describe FUNCTION_NAME \

ここで、FUNCTION_NAME は関数の名前です。

  • セキュリティの自動更新が有効になっている関数には、キー automaticUpdatePolicy があります。
  • デプロイ時に更新される関数には、キー onDeployUpdatePolicy があります。

自動更新後に使用されるランタイム イメージを特定する

自動更新を有効にすると、Cloud Functions は関数のランタイム イメージを、追加のセキュリティ パッチと更新を含む新しいリビジョンと交換します。この変更は、関数のランタイムログに記載されます。

ランタイムログの runtime_version ラベルは、新しいランタイム イメージが関数で使用されることを表しています。自動的に更新された Nodejs 関数のログエントリは、次のようになります。

{
  ...
  "labels:" {
    runtime_version: nodejs20_20230924_20_6_1_RC00
    execution_id: ...
  }
  ...
}