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 はジョブの作成と更新にのみ適用されるため、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)は拒否されます。この要件は、ジョブ ターゲット URI にのみ適用されます。リージョン エンドポイントを介して Cloud Scheduler API に独自のリクエストを送信するには、リージョン エンドポイントを使用するをご覧ください。
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 サービス エージェントのロールを 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 に置き換えます。