VPC Service Controls は、データ漏洩を防ぐためのセキュアな境界を設定できる Google Cloud の機能です。このガイドでは、VPC Service Controls の境界内に Cloud Scheduler ジョブを配置する方法について説明します。
制限事項
Cloud Scheduler の VPC Service Controls のサポートには、次の制限事項が適用されます。
適用されているアクション
VPC Service Controls は、次のアクションに適用されます。
- Cloud Scheduler ジョブの作成
- Cloud Scheduler ジョブの更新
なぜこれが重要なのか
VPC Service Controls はジョブの作成と更新にのみ適用されるため、Cloud Scheduler を VPC Service Controls の境界に追加する前に作成されたジョブには自動的に適用されません。ジョブ ターゲットが VPC Service Controls の境界に含まれていない、またはサポートされているターゲットではない場合でも、ジョブは引き続き実行されます。すべての Cloud Scheduler ジョブに VPC Service Controls を適用するには、次の手順を行います。
- サポートされていない、境界の外側にあるのいずれかのターゲットを持つジョブ: ジョブを削除します。このドキュメントの非準拠のジョブを削除するをご覧ください。
- サポートされている、境界の内側にあるの両方のターゲットを持つジョブ: Cloud Scheduler を境界に追加した後、各ジョブで更新を実行します。このドキュメントの既存のジョブに VPC Service Controls を適用するをご覧ください。
サポートされているターゲット
Cloud Scheduler の VPC Service Controls との統合は、次のターゲットをサポートしています。HTTP エンドポイントは、リストに記載されている場合はサポートされますが、任意の HTTP エンドポイントはサポートされません。
- Cloud Run サービス - 標準のデフォルト
run.appドメインを使用する必要があります。カスタム ドメインとカスタム DNS はサポートされていません。これらを使用すると、ジョブの作成が失敗します。 - Cloud Run functions - 標準のデフォルトの
cloudfunctions.netドメインまたはrun.appドメインを使用する必要があります。カスタム ドメインとカスタム DNS は対象外であり、ジョブの作成が失敗します。 VPC Service Controls に準拠しているGoogle Cloud API(プレビュー版または GA 版)は、Cloud Scheduler ジョブとは異なる Google Cloud プロジェクトに存在できます。
- グローバル エンドポイント形式(
https://SERVICE.googleapis.com)を使用する必要があります。*.rep.googleapis.com、LOCATION.SERVICE.googleapis.com、REGION-SERVICE.googleapis.comなどのリージョン エンドポイントと mTLS エンドポイント(*.mtls.googleapis.com)は拒否されます。 Cloud Run ジョブの場合、サポートされている URI 形式は次のとおりです。
https://run.googleapis.com/v2/projects/PROJECT_ID/locations/REGION/jobs/JOB_NAME:runCloud Run サービスとジョブ リソースの違いについては、サービス、ジョブ、ワーカープール、インスタンス: コードを実行する 4 つの方法をご覧ください。
- グローバル エンドポイント形式(
Pub/Sub
サポートされていないターゲット
Cloud Scheduler が VPC Service Controls 境界内の制限付きサービスである場合、サポートされていないターゲットを使用してジョブを作成または更新しようとすると、TARGET_TYPE_NOT_PERMITTED_FOR_VPC エラーコードで失敗します。このアクションは、ドライラン モードを使用している場合、違反ログを生成しません。
サーバーレス エンドポイントのカスタム ドメイン(外部アプリケーション ロードバランサやカスタム DNS など)は、ターゲットとしてサポートされていません。境界登録前に作成された既存のジョブであっても、境界内の認証情報がないため、カスタム ドメインへのランタイム呼び出しは移行先サービスによってブロックされます。
ワークロードが予期せずブロックされるのを防ぐには、境界を自動適用モードに移行する前に、サポートされていないターゲットを持つジョブ、または使用する予定の VPC Service Controls 境界外のターゲットを持つジョブを削除します。
要件を満たしていないジョブを削除する
使用をおすすめします。次のいずれかのターゲットを持つ Cloud Scheduler ジョブを削除します。
- サポート対象外(サポートされているターゲットを参照)
- 使用する予定の VPC Service Controls の外側
ジョブを削除する手順については、ジョブを削除するをご覧ください。
Cloud Scheduler を VPC Service Controls の境界に追加する前にこれらのジョブを削除しない場合、ジョブは引き続き実行されますが、VPC Service Controls はそれらには適用されません。このドキュメントの強制措置をご覧ください。
たとえば、サポートされていないターゲット(任意の HTTP エンドポイントなど)をターゲットとする Cloud Scheduler ジョブがある場合、Cloud Scheduler を VPC Service Controls の境界に追加した後も、ジョブは継続して実行されますが、VPC Service Controls によって保護されていません。同様のことが、VPC Service Controls の境界の外側にあるターゲットを持つ既存のジョブに当てはまります。ただし、既存のジョブが境界内のサーバーレス カスタム ドメインをターゲットにしている場合、宛先サービスはランタイム呼び出しをブロックします。
必要な IAM ロールを追加する
必須。VPC Service Controls を使用するには、Cloud Scheduler サービス アカウントに Cloud Scheduler サービス エージェント IAM ロールが付与されている必要があります。Cloud Scheduler サービス アカウントは、プロジェクト用に自動的に作成されます。Cloud Scheduler サービス エージェントの IAM ロールがあることを確認する手順、またはこのロールを付与する手順は次のとおりです。
Google Cloud コンソールで [IAM] に移動します。
[Google 提供のロール付与を含みます] チェックボックスをオンにします。
フィルタに「Cloud Scheduler サービス アカウント」と入力し、このプリンシパルを選択します。
Cloud Scheduler サービス アカウント プリンシパルの [ロール] 列を確認します。次のロールが表示されている場合は、続行できます。
- Cloud Scheduler サービス エージェント
Cloud Scheduler サービス アカウントの役割が表示されていない場合は、[編集] アイコンをクリックして Cloud Scheduler Service Agent の役割を Cloud Scheduler サービス アカウント プリンシパルに付与します。
VPC Service Controls の境界を指定する
必須。サポートされているターゲットを持つ Cloud Scheduler ジョブを保護するには、既存の境界を使用するか、新しい境界を作成します。両方の方法で、制限するサービスを指定できます。Cloud Scheduler API を指定します。
既存の境界: Cloud Scheduler を含むように既存の VPC Service Controls の境界を更新するには、サービス境界を更新する手順に従います。
新しい境界: Cloud Scheduler の新しい境界を作成するには、サービス境界を作成する手順に従います。
既存のジョブに VPC Service Controls を適用する
使用をおすすめします。Cloud Scheduler を VPC Service Controls の境界に追加する前に作成した Cloud Scheduler ジョブに VPC Service Controls を適用するには、ジョブで update を実行します。ジョブを変更する必要はありませんが、VPC Service Controls をジョブと今後のジョブの実行に適用するには、更新を実行する必要があります。
ジョブの更新は、 Google Cloud コンソール(ジョブを選択して [編集] をクリック)、API、または gcloud CLI を使用して実行できます。
gcloud CLI を使用して既存のジョブに VPC Service Controls を適用するには、次のコマンドを実行します。
HTTP ターゲット
gcloud scheduler jobs update http JOB_ID
JOB_ID をジョブの ID に置き換えます。
Pub/Sub ターゲット
gcloud scheduler jobs update pubsub JOB_ID
JOB_ID をジョブの ID に置き換えます。