このページでは、上り(内向き)の設定を使用して Cloud Run サービスへのネットワーク アクセスを制限する方法について説明します。ネットワーク レベルではデフォルトで、インターネット上の任意のリソースは、run.app
URL または Cloud Run で設定されたカスタム ドメインから Cloud Run サービスにアクセスできます。このデフォルトを変更するには、上り(内向き)に別の設定を指定します。デフォルトの run.app
URL を含むすべての上り(内向き)パスは、上り(内向き)設定の対象となります。上り(内向き)はサービスレベルで設定されます。
上り(内向き)設定と IAM 認証方法は、サービスへのアクセスを管理する 2 つの方法です。これらは互いに独立しています。アクセスを階層的に管理するには、両方を使用します。
使用可能な上り(内向き)設定
次の設定を使用できます。
設定 | 説明 |
---|---|
内部 |
最も厳しい。次のソースからのリクエストを許可します。
これらのソースからのリクエストは、 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
ファイルに追加します。
次のステップ
- 下り(外向き)設定について学習する
- Cloud Run で内部アプリケーション ロードバランサを設定する。
- Cloud Run で外部アプリケーション ロードバランサを設定する。
- サービスにアクセスするための IAM 認証方法を構成する。