Cloud Runの「Ingress」設定について サービスへのアクセス経路は「内部」か「すべて」か

Cloud Runのサービスをデプロイする際、そのセキュリティと公開範囲を決定する設定が「Ingress」です。これは、ご自身のCloud Runサービスが「どこからのトラフィックを受け入れるか」をコントロールする入り口の設定です。

以前は複数の細かいオプションがありましたが、現在のGoogle Cloud ConsoleのUIでは、Ingress設定はシンプルに以下の2つの主要なオプションに集約されています。

  1. 内部(Internal)
  2. すべて(All)

これらのオプションが何を意味し、どのようにあなたのCloud Runサービスへのアクセスを制御するのか、見ていきましょう。

Cloud Runにおける「Ingress」とは?

「Ingress」とは、外部からあなたのCloud Runサービスへの受信トラフィック(インバウンドトラフィック)の許可範囲を指します。この設定によって、あなたのサービスがインターネットからアクセスできるのか、あるいは特定のGoogle Cloudの内部ネットワークからのみアクセス可能になるのかが決まります。

1. 「内部(Internal)」

この設定は、最も厳格なオプションであり、Cloud Runサービスへのアクセスを完全にGoogle Cloudの内部ネットワークに限定します。

どのような動作となるか

  • 自身のCloud Runサービスは、インターネットからアクセスできなくなります。パブリックIPアドレスは割り当てられますが、外部からのルーティングはブロックされます。
  • トラフィックは、同じGCPプロジェクト内の**VPCネットワーク(VPCネットワークコネクタ経由)**からのアクセスのみに限定されます。
    • 例: Compute Engineインスタンス、Cloud Functions、Google Kubernetes Engine (GKE)、またはCloud VPN/Cloud Interconnectを介してGCPに接続されたオンプレミス環境からのアクセス。
  • Cloud Load Balancingを経由した外部からのアクセスも、直接的には許可されません。ロードバランサからアクセスさせたい場合は、ロードバランサがVPCコネクタ経由でCloud Runに到達するように設定する必要があります。

ユースケースは?

  • 完全に内部向けAPI: 外部に公開する必要のない、組織内のアプリケーションやマイクロサービス間の通信。
  • バックエンド処理: ユーザーから直接アクセスされることがなく、他のGCPサービスからのトリガーでのみ実行されるバッチ処理やワーカー。
  • 高レベルのセキュリティ: サービスをインターネットから完全に隔離し、攻撃対象領域(Attack Surface)を最小限に抑えたい場合。

2. 「すべて(All)」

この設定は、Cloud Runサービスがインターネット上からアクセス可能になることを意味します。

どのような動作となるか

  • Cloud Runサービスは、パブリックIPアドレスを介してインターネットから直接アクセス可能になります。
  • 世界中のどこからでも、サービスのURLを知っていればアクセスできます。
  • Cloud Load Balancingを経由したトラフィックも、この設定で許可されます。ロードバランサがフロントに立ち、その背後でCloud Runサービスが動く形です。

ユースケースは?

  • 一般公開するWebサイトやブログ: 誰でもアクセスできるウェブコンテンツを提供する場合。
  • パブリックAPI: 認証を別途アプリケーション内部で行う、または認証が不要な公開API。
  • 外部サービスからのWebhook: 特定のIP制限などがなく、広くWebhookを受け付けたい場合。
  • Cloud Load Balancingで高度な制御を行いたい場合: Cloud ArmorによるWAF機能、複雑なURLルーティング、SSL終端、Cloud CDNとの連携などをロードバランサで設定し、その配下にCloud Runを置く場合。

セキュリティ上の注意点

  • この設定は、認証設定とは独立して動作します。Ingressで「すべて」を選択しても、Cloud Runの認証設定で「認証が必要」を選択していれば、匿名アクセスは拒否されます。
  • 公開された状態になるため、必ず認証設定(IAM認証やアプリケーション内認証)を適切に行うか、公開されても問題ないサービスにのみ適用しましょう。

どちらのIngress設定を選ぶべきか?

Cloud RunサービスのIngress設定は、アプリケーションのセキュリティと利用目的によって選択する必要があります。

基本的には、必要最低限の公開範囲に留めることがいいと思います。

  • インターネットからアクセスする必要がない内部サービス: 「内部」 を選択し、VPCコネクタ経由でアクセスをルーティングします。これが最もセキュアです。
  • インターネットからアクセスする必要があるサービス: 「すべて」 を選択します。この場合、Cloud Runの認証設定(IAM認証など)や、アプリケーション内部での認証・認可ロジックを適切に設定し、セキュリティを確保することが極めて重要です。
    また、Cloud Load Balancingを追加することで、DDoS対策やWAFなどの追加セキュリティレイヤーを設けることも可能です。

まとめ

Cloud RunのIngress設定における「内部」と「すべて」の2つのオプションは、サービスのアクセス経路とセキュリティを決定する根本的な選択です。

  • 「内部」: サービスをインターネットから完全に隔離し、GCP内部からのアクセスに限定することで、最高レベルのセキュリティを確保します。
  • 「すべて」: サービスをインターネットに公開しますが、その背後にある認証設定Cloud Load Balancingなどのレイヤーでセキュリティを強化する必要があります。

コメント

タイトルとURLをコピーしました