実行環境のセキュリティ

このページでは、gcloud functions コマンドまたは Cloud Functions v2 API を使用して作成された関数のセキュリティ更新ポリシーに関する補足情報を提供します。

言語ランタイム、OS パッケージ、オペレーティング システムなど、ベースイメージの自動更新を設定する方法の詳細については、Cloud Run ドキュメントのベースイメージの自動更新を構成するをご覧ください。

ランタイム イメージ

各ランタイムには、Artifact Registry の公開リポジトリ内のランタイム イメージ(実行イメージとも呼ばれます)が関連付けられています。ランタイム ID とそのランタイム イメージの一覧については、ランタイムをご覧ください。

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

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

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

{
  ...
  "textPayload": "Step #2 - \"build\": Adding image label google.run-image:
    us-central1-docker.pkg.dev/serverless-runtimes/google-22-full/runtimes/nodejs22:nodejs20_20230924_20_6_1_RC00",
  ...
}

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

次のいずれかのセキュリティ更新ポリシーを選択できます。

  • 自動更新(デフォルト): ランタイム環境の更新とセキュリティ パッチは、ランタイム イメージの新しいバージョンで公開されます。更新されたランタイムは、安定性と信頼性についてのテスト期間の後、すべての関数にロールアウトされ、ダウンタイムのない更新が行われます。セキュリティの自動更新は、Cloud Run functions(第 1 世代)と Cloud Run functions で使用できます。言語レベルのセキュリティ修正を適用するには、Go や Java などのコンパイル済み言語を使用する関数を再ビルドする必要がある場合があります。

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

ランタイムの更新ポリシーは、gcloud functions 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 Run functions のセキュリティ スキャン

自動更新が有効になっている Cloud Run functions は、scratch イメージ上に作成されます。その結果、Artifact Registry で関数を表すコンテナはベースイメージを持たないため、デプロイ時の更新を使用する関数よりもサイズが大幅に小さくなります。ベースイメージは実行時に関数イメージと結合され、完全な関数が作成されます。詳細については、scratch 上にビルドをご覧ください。