このページでは、上り(内向き)の設定を使用して Cloud Run サービスへのネットワーク アクセスを制限する方法について説明します。ネットワーク レベルではデフォルトで、インターネット上の任意のリソースは、run.app
URL または Cloud Run で設定されたカスタム ドメインから Cloud Run サービスにアクセスできます。このデフォルトを変更するには、上り(内向き)に別の設定を指定します。デフォルトの run.app
URL を含むすべての上り(内向き)パスは、上り(内向き)設定の対象となります。上り(内向き)はサービスレベルで設定されます。
上り(内向き)設定と IAM 認証方法は、サービスへのアクセスを管理する 2 つの方法です。これらは互いに独立しています。アクセスを階層的に管理するには、両方を使用します。
使用可能な上り(内向き)設定
次の設定を使用できます。
設定 | 説明 |
---|---|
内部 |
最も厳しい。次のソースからのリクエストを許可します。
run.app URL でサービスにアクセスする場合でも、Google ネットワーク内にとどまります。インターネットを含む他のソースからのリクエストは、run.app URL またはカスタム ドメインのサービスに到達できません。マルチテナンシー(同じプロジェクト内の複数の信頼ドメイン)はサポートされていません。 |
内部と Cloud Load Balancing | 次のリソースからのリクエストを許可します。
|
すべて |
最も寛容。インターネットから run.app の URL に直接送信されるリクエストを含むすべてのリクエストを許可します。 |
内部サービスへのアクセス
次のことに注意してください。
内部サービスにアクセスする場合は、公開 URL(デフォルトの
run.app
URL または Cloud Run で設定されたカスタム ドメイン)を使用して通常どおりに呼び出します。Compute Engine VM インスタンスからのリクエストの場合、または同じプロジェクトの VPC ネットワーク内で実行されている他のリソースからのリクエストの場合、さらなる設定は必要ありません。
他の Cloud Run サービスまたは同じプロジェクト内の Cloud Functions からのリクエストでは、サービスまたは関数を VPC ネットワークに接続し、下り(外向き)はすべてコネクタ経由でルーティングします。詳しくは、VPC ネットワークへの接続をご覧ください。なお、IAM 起動元の権限は引き続き適用されます。
同じプロジェクトの VPC ネットワーク内のリソースからのリクエストは、送信元のリソースがパブリック IP アドレスを持っていても、内部に分類されます。
Cloud Run Admin API がサービス境界内で制限されているサービスとして構成されている場合、トラフィックが VPC ネットワークから発信される、VPC Service Controls 境界内のリソースからのリクエストは、内部サービスを呼び出すことができます。
共有 VPC リソースと内部サービスが同じ VPC SC 境界内にあり、Cloud Run Admin API がアービス境界内で制限されているサービスとして構成されている場合に限り、共有 VPC ネットワークにあるリソースは内部サービスを呼び出すことができます。
Cloud VPN 経由で VPC ネットワークに接続されているオンプレミス リソースからのリクエストは、
internal
とみなされます。Pub/Sub、Eventarc、Workflows から内部サービスへのリクエストに関して、次の点を考慮してください。
- Pub/Sub または Workflows によって呼び出される Cloud Run サービスで上り(内向き)設定を使用する場合は、カスタム ドメインではなく、そのサービスに Cloud Run のデフォルト
app.run
URL を使用する必要があります。 - Pub/Sub サブスクリプションまたはワークフローは、Cloud Run サービスと同じプロジェクトまたは VPC Service Controls の境界内になければなりません。
- Pub/Sub または Workflows によって呼び出される Cloud Run サービスで上り(内向き)設定を使用する場合は、カスタム ドメインではなく、そのサービスに Cloud Run のデフォルト
同じプロジェクトまたは VPC Service Controls の境界内から Pub/Sub、Eventarc、Workflows を使用して、VPC ネットワークの外部のトラフィック ソースから内部サービスを呼び出すことができます。
上り(内向き)の設定
以下のタブでサポートされているメソッドを使用して、上り(内向き)の設定ができます。
Console
新しいサービスをデプロイする場合:
[サービスの作成] をクリックし、最初のステップ(サービスの設定)を必要に応じて構成して、[次へ] をクリックします。
必要に応じて 2 番目のステップ(サービスの最初のリビジョンの構成)を構成し、[次へ] をクリックします。
3 番目のステップで、このサービスをトリガーする方法を構成します。Ingress* ラベルの下で、許可する上り(内向き)トラフィックを選択します。
既存のサービスを構成する場合:
サービスをクリックします。
[トリガー] タブをクリックします。
[上り] ラベルで、許可する上り(内向き)トラフィックを選択します。
[保存] をクリックします。
コマンドライン
新しいサービスをデプロイする場合は、
--ingress
フラグを付加してサービスをデプロイします。gcloud run deploy SERVICE --image IMAGE_URL --platform managed --ingress INGRESS
次のように置き換えます。
INGRESS
を、使用可能な上り(内向き)設定のいずれかに置き換えます。all
internal
internal-and-cloud-load-balancing
SERVICE
を、サービス名に置き換えます。- IMAGE_URL は、コンテナ イメージへの参照(
us-docker.pkg.dev/cloudrun/container/hello:latest
など)に置き換えます。
既存のサービスの上り(内向き)を変更する場合:
gcloud run services update SERVICE --platform managed --ingress INGRESS
次のように置き換えます。
INGRESS
を、使用可能な上り(内向き)設定のいずれかに置き換えます。all
internal
internal-and-cloud-load-balancing
SERVICE
を、サービス名に置き換えます。
YAML
既存のサービス構成をダウンロードして表示するには、gcloud run services describe --format export
コマンドを使用します。読みやすく整えられた結果が YAML 形式で出力されます。次に、下記の手順に沿ってフィールドを変更し、gcloud run services replace
コマンドを使用して変更後の YAML ファイルをアップロードします。必ず説明されているとおりにフィールドを変更してください。
次のコマンドで、構成を表示してダウンロードします。
gcloud run services describe SERVICE --format export > service.yaml
run.googleapis.com/ingress:
アノテーションを更新します。apiVersion: serving.knative.dev/v1 kind: Service metadata: annotations: run.googleapis.com/ingress: INGRESS name: SERVICE spec: template: metadata: name: REVISION
次のように置き換えます。
- SERVICE は、Cloud Run の名前に置き換えます。
- INGRESS を、使用可能な上り(内向き)設定のいずれかに置き換えます。
all
internal
internal-and-cloud-load-balancing
- REVISION を新しいリビジョン名に置き換えるか、削除(存在する場合)します。新しいリビジョン名を指定する場合は、次の条件を満たす必要があります。
SERVICE-
で始まる- 小文字、数字、
-
のみが使用されている - 末尾が
-
ではない - 63 文字以内である
次のコマンドを使用して、サービスを新しい構成に置き換えます。
gcloud run services replace service.yaml
次のステップ
- 下り(外向き)設定について学習する
- Cloud Run の内部 HTTP(S) ロードバランサを設定する
- Cloud Run で外部 HTTP(S) ロードバランサを設定する
- サービスにアクセスするための IAM 認証方法を構成する