VPC Service Controls で cron ジョブを保護する

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 を境界に追加した後、各ジョブで更新を実行します。既存のジョブに適用するをご覧ください。

サポートされているターゲット

Cloud Scheduler の VPC Service Controls との統合は、次のターゲットのみをサポートしています。

  • Cloud Run 関数(functions.net URL 上)
  • Cloud Run(Cloud Run サービスの場合は run.app URL 上)。Cloud Run ジョブ ターゲットはサポートされていません。Cloud Run のサービスとジョブリソースの違いについては、サービスとジョブ: コードを実行する 2 つの方法をご覧ください)。
  • Dataflow API(Cloud Scheduler ジョブと同じ Google Cloud プロジェクトに存在する必要があります)
  • Data Pipelines(Cloud Scheduler ジョブと同じ Google Cloud プロジェクト内に存在する必要があります)
  • Pub/Sub(Cloud Scheduler ジョブと同じ Google Cloud プロジェクトに存在する必要があります)

要件を満たしていないジョブを削除する

推奨。次のいずれかのターゲットを持つ Cloud Scheduler ジョブを削除します。

ジョブを削除する手順については、ジョブを削除するをご覧ください。

Cloud Scheduler を VPC Service Controls の境界に追加する前にこれらのジョブを削除しない場合、ジョブは引き続き実行されますが、VPC Service Controls はそれらには適用されません(適用されたアクションをご覧ください)。

たとえば、サポートされていないターゲット(Cloud Run カスタム ドメインなど)をターゲットとする 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 ロールがあることを確認する手順、またはこのロールを付与する手順は次のとおりです。

  1. Google Cloud コンソールで [IAM] に移動します。

    IAM に移動

  2. [Google 提供のロール付与を含みます] チェックボックスをオンにします。

  3. フィルタに「Cloud Scheduler サービス アカウント」と入力し、このプリンシパルを選択します。

  4. [ロール] 列で Cloud Scheduler サービス アカウント プリンシパルを確認します。次のロールが表示されている場合は、続行できます。

    • Cloud Scheduler サービス エージェント

    Cloud Scheduler サービス アカウントの役割が表示されていない場合は、[編集] アイコンをクリックして Cloud Scheduler Service Agent の役割を Cloud Scheduler サービス アカウント プリンシパルに付与します。

VPC Service Controls の境界を指定する

必須。サポートされているターゲットを持つ Cloud Scheduler ジョブを保護するには、既存の境界を使用するか、新しい境界を作成します。両方の方法で、制限するサービスを指定できます。Cloud Scheduler API を指定します。

既存のジョブに 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