このページでは、上り(内向き)の設定を使用して Cloud Run サービスへのネットワーク アクセスを制限する方法について説明します。
ネットワーク レベルでは、Cloud Run サービスのエンドポイントは次のネットワーク上り(内向き)パスから到達可能です。
- デフォルトの
run.app
URL(無効にできます) - 構成されたドメイン マッピング
- 構成済みの外部アプリケーション ロードバランサまたは内部アプリケーション ロードバランサ
すべてのネットワーク上り(内向き)パスは、サービスの上り(内向き)設定の対象となります。デフォルトの上り(内向き)パスと上り(内向き)設定によって、インターネット上の任意のリソースが Cloud Run サービスにアクセスできます。上記のネットワーク イングレス パスのいずれかからサービス エンドポイントに到達するリクエストには、引き続き IAM 認証が適用されます。アクセスを階層的に管理するには、ネットワーク上り(内向き)設定と IAM 認証の両方を使用します。
使用可能なネットワーク上り(内向き)設定
次の設定を使用できます。
設定 | 説明 |
---|---|
内部 |
最も厳しい。次のソースからのリクエストを許可します。
これらのソースからのリクエストは、 run.app URL でサービスにアクセスする場合でも、Google ネットワーク内にとどまります。インターネットを含む他のソースからのリクエストは、run.app URL またはカスタム ドメインのサービスに到達できません。Cloud Scheduler、Cloud Tasks、Eventarc、Pub/Sub、BigQuery、Workflows から内部サービスへのリクエストの場合、そのサービスに Cloud Run のデフォルト run.app URL を使用する必要があります。カスタム ドメインは使用できません。 |
内部と Cloud Load Balancing | この設定では、次のリソースからのリクエストが許可されます。
注: gcloud CLI でこの設定を有効にするには、 internal-and-cloud-load-balancing を使用します。Google Cloud コンソールでこの設定を有効にするには、[内部] > [外部アプリケーション ロードバランサからのトラフィックを許可する] を選択します。 |
すべて |
最も寛容。インターネットから run.app の URL に直接送信されるリクエストを含むすべてのリクエストを許可します。 |
内部サービスにアクセスする
次のその他の考慮事項も適用されます。
内部サービスにアクセスする場合は、URL(デフォルトの
run.app
URL または Cloud Run で設定されたカスタム ドメイン)を使用して通常どおりに呼び出します。Compute Engine VM インスタンスからのリクエストの場合、外部 IP アドレスを持つマシンや Cloud NAT を使用するマシンでは、追加の設定は必要ありません。そうでない場合は、VPC ネットワークからリクエストを受け取るをご覧ください。
Cloud Run、App Engine、または Cloud Functions から「内部」または「内部と Cloud Load Balancing」に設定されている Cloud Run サービスに呼び出しを行う場合、トラフィックは内部と見なされる VPC ネットワーク経由でルーティングする必要があります。他の Cloud Run サービス、App Engine、Cloud Functions からリクエストを受信するをご覧ください。
同じプロジェクトの VPC ネットワーク内のリソースからのリクエストは、送信元のリソースが外部 IP アドレスを持っていても「内部」になります。
Cloud VPN と Cloud Interconnect を使用して VPC ネットワークに接続しているオンプレミス リソースからのリクエストは「内部」になります。
上り(内向き)を設定する
タブでサポートされているメソッドを使用して、上り(内向き)の設定ができます。
コンソール
新しいサービスを構成する場合は、[サービスを作成] をクリックし、必要に応じて最初のサービス設定ページに入力します。
既存のサービスを構成する場合は、サービスをクリックし、[ネットワーキング] タブをクリックします。
許可する上り(内向き)トラフィックを選択します。
[作成] または [保存] をクリックします。
gcloud
新しいサービスをデプロイする場合は、
--ingress
フラグを付加してサービスをデプロイします。gcloud run deploy SERVICE --image IMAGE_URL --ingress INGRESS
次のように置き換えます。
INGRESS
は、使用可能な上り(内向き)設定のいずれかに置き換えます。all
internal
internal-and-cloud-load-balancing
SERVICE
は、サービス名に置き換えます。- IMAGE_URL: コンテナ イメージへの参照(
us-docker.pkg.dev/cloudrun/container/hello:latest
など)。Artifact Registry を使用する場合は、リポジトリ REPO_NAME がすでに作成されている必要があります。URL の形式はLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
です。
既存のサービスの上り(内向き)を変更する場合:
gcloud run services update SERVICE --ingress INGRESS
次のように置き換えます。
INGRESS
は、使用可能な上り(内向き)設定のいずれかに置き換えます。all
internal
internal-and-cloud-load-balancing
SERVICE
は、サービス名に置き換えます。
YAML
新しいサービスを作成する場合は、この手順をスキップします。既存のサービスを更新する場合は、その 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
Terraform
Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。
次のコードを main.tf
ファイルに追加します。
デフォルトの URL を無効にする
Cloud Run サービスのデフォルトの run.app
URL を無効にして、サービスの他の上り(内向き)パス(Cloud Load Balancing と構成されたドメイン マッピング)からのトラフィックのみを許可します。
コマンドライン
サービスの
run.app
URL を無効にするには、--no-default-url
フラグを指定してgcloud beta run deploy
またはgcloud beta run services update
コマンドを実行します。gcloud beta run deploy SERVICE_NAME --no-default-url
ここで、SERVICE_NAME は Cloud Run サービスの名前です。
出力に、URL が None
として表示されます。
デフォルトの URL を復元するには、--default-url
フラグを使用します。
YAML
新しいサービスを作成する場合は、この手順をスキップします。既存のサービスを更新する場合は、その YAML 構成をダウンロードします。
gcloud run services describe SERVICE --format export > service.yaml
run.app
URL を無効にするには、run.googleapis.com/default-url-disabled
アノテーションを使用します。apiVersion: serving.knative.dev/v1 kind: Service metadata: annotations: run.googleapis.com/default-url-disabled: true run.googleapis.com/launch-stage: BETA name: SERVICE spec: template: metadata: name: REVISION
次のように置き換えます。
- SERVICE は、Cloud Run サービスの名前に置き換えます。
- REVISION は、新しいリビジョン名に置き換えるか、削除します(存在する場合)。新しいリビジョン名を指定する場合は、次の条件を満たす必要があります。
SERVICE-
で始まる- 小文字、数字、
-
のみが使用されている - 末尾が
-
ではない - 63 文字以内である
次のコマンドを使用して、サービスを作成または更新します。
gcloud run services replace service.yaml
デフォルトの URL に戻すには、run.googleapis.com/default-url-disabled
アノテーションを削除します。
次の Google Cloud サービスは、デフォルトの run.app
URL を使用して Cloud Run を呼び出します。デフォルトの run.app
URL を無効にすると、次のサービスが想定どおりに動作しなくなります。
- BigQuery のリモート関数
- Cloud Scheduler
- Cloud Service Mesh
- Cloud Tasks
- Eventarc
- Firebase App Hosting
- Firebase Hosting
- Pub/Sub
- 合成モニターと稼働時間チェック
- Workflows
次のステップ
- 下り(外向き)設定について確認する
- Cloud Run で内部アプリケーション ロードバランサを設定する。
- Cloud Run で外部アプリケーション ロードバランサを設定する。
- サービスにアクセスするための IAM 認証方法を構成する。