Apigee X の基本的な使い方
[履歴] [最終更新] (2021/12/19 23:42:29)
最近の投稿
注目の記事

概要

API を管理するためのプラットフォームである Apigee X について、基本的な使い方を記載します。Apigee は 2016 年に Google によって買収されており、Apigee Edge という名称で Google Cloud のサービスに加わりました。2021 年に Apigee X という名称の GCP-native なサービスが開始されました。

似たサービスである Cloud Endpoints や、Cloud Functions/Cloud Run 等の serverless サービスをバックエンドとする Cloud API Gateway は、GCP 内に閉じており、機能としてもシンプルなものが提供されます。

関連資料:

Private Services Access

Apigee 社 (Google) によって管理される VPC と顧客管理の VPC の二つによって構成されます。これら二つの VPC は VPC network peering によって接続されます。

Uploaded Image

Apigee architecture overview

より正確には、VPC network peering の技術を利用した Private Services Access によって接続されます。似た名称の機能が複数存在するため注意します。Private "Service" Access ではありません。"Services" は複数形です。

  • Private Google Access および Private Service Connect と区別します。
    • Private Google Access は、外部 IP を持たない VM が Google API を利用するための機能です。
    • Private Service Connect は、Service Directory に登録された Google API や SaaS API を、顧客 VPC 内で定めた任意の IP から利用するための機能です。
  • Serverless VPC Access と区別します。
    • Serverless VPC Access および Private Services Access はどちらも、Google サービスのリソースに顧客 VPC の内部 IP を持たせます。
    • Serverless VPC Access は、Google サービスのリソースが、顧客 VPC 内のリソースにアクセスします。
    • Private Services Access は、顧客 VPC 内のリソースが、Google サービスのリソースにアクセスします。

参考資料: Private access options for services

Cloud SQL で Private Services Access を利用する例

VPC → PRIVATE SERVICE CONNECTION → ALLOCATED RANGES FOR SERVICES → ALLOCATE IP RANGE をクリックして IP レンジを予約します。

Uploaded Image

PRIVATE CONNECTIONS TO SERVICES をクリックして Service Directory への connection を作成します。

Uploaded Image

VPC network peering が Google 管理の VPC である servicenetworking に対して作成されていることも確認できます。

Uploaded Image

例えば、Cloud SQL インスタンスを作成する際に、予約した IP レンジを指定すると、Cloud SQL インスタンスに対して、VPC 内から内部 IP でアクセス可能となります。

Uploaded Image

初期セットアップ

以下は eval (評価版) を Wizard でセットアップする例です。プロジェクトID を指定します。

補足: eval (評価版) における無料枠は、Apigee 管理の VPC 内リソースに対して適用されます。顧客管理 VPC 内の VM や Load Balancer は対象外です。

Uploaded Image

API を有効化した後に、ネットワーク関連の設定を行います。

Uploaded Image

VPC を選択します。前述の Private Services Access で利用する IP レンジも指定します。

Uploaded Image

Private Services Access が利用する VPC network peering が作成されていることが確認できます。

Uploaded Image

割り当てられた IP レンジです。

Uploaded Image

Private Services Access です。

Uploaded Image

Apigee API を利用して Apigee organization を作成します。

Uploaded Image

リージョンを指定します。

Uploaded Image

利用者が Apigee にアクセスする際の経路を指定します。

Uploaded Image

インターネットからアクセスする場合は以下のようにします。独自にドメインを指定することもできます。

Uploaded Image

Load balancer の backend となる Managed Instance Group (MIG) の subnet を指定します。

Uploaded Image

セットアップが完了すると、以下のような表示になります。

Uploaded Image

作成された HTTP Load Balancer です。

Uploaded Image

作成された Instance Template です。

Uploaded Image

作成された Managed Instance Group (MIG) です。

Uploaded Image

作成された VM です。

Uploaded Image

しばらく待つと、以下の API Proxy にアクセスできます。

$ curl -sS https://34.149.134.44.nip.io/hello-world
Hello, Guest!

Proxy が複数登場するため分かりづらいですが、上記 MIG の VM も Proxy です。MIG の Proxy 先が API Proxy です。API Proxy が Proxy する先が、実際の API です。

Uploaded Image

実際には API Proxy を複数まとめて API Product としてユーザに提供します。

Uploaded Image

Create an API product

API Proxy は Apigee 管理の Instance で稼働します。Instance には Private Services Access で利用する IP レンジ内の IP が付与されていることが確認できます。

Uploaded Image

VPC Service Controls の併用

Apigee X の Customer VPC のプロジェクトを VPC-SC に含めることができます。

関連資料:

Private Services Access 先の VPC 内のリソース

VPC-SC を設定済みであっても、API Proxy からインターネット上の Target を指定可能です。

$ curl -sS https://34.149.134.44.nip.io/hello-world
Hello, Guest!

gcloud services vpc-peerings enable-vpc-service-controls を利用することにより、Private Services Access の VPC network peering で接続された先の VPC 内のリソースからの通信を Customer VPC にルーティングさせることができます。

username@cloudshell:~ (myproject-20211206)$ gcloud services vpc-peerings enable-vpc-service-controls --network=myvpc --project=myproject-20211206
Operation "operations/evsc.p28-464464998635-294c81f8-4399-4737-8233-71a04f5d5c42" finished successfully.

$ curl -sS https://34.149.134.44.nip.io/hello-world
{"fault":{"faultstring":"The Service is temporarily unavailable","detail":{"errorcode":"messaging.adaptors.http.flow.ServiceUnavailable"}}}

Both the Google Cloud project and its associated runtime are incuded within that project's VPC Service Controls perimeter.
https://cloud.google.com/apigee/docs/api-platform/security/vpc-sc

When VPC Service Controls are enabled, access to the internet is disabled: the Apigee runtime will no longer communicate with any public internet target.
https://cloud.google.com/apigee/docs/api-platform/security/vpc-sc

Customer VPC 内の Target

インターネット上の API にアクセスしたい場合は、一旦 Customer VPC の VM にルーティングする必要があります。

Uploaded Image

You have to route traffic to your VPC by establishing custom routes.
https://cloud.google.com/apigee/docs/api-platform/security/vpc-sc

Cloud Storage へのアクセス

以下の二つの Cloud Storage Bucket を用いて実験してみます。Cloud Shell で実行すると、どちらもパブリックにアクセスできることが分かります。

username@cloudshell:~ (myproject-20211206)$ gsutil ls gs://gcp-public-data-landsat/
gs://gcp-public-data-landsat/index.csv.gz
gs://gcp-public-data-landsat/LC08/
gs://gcp-public-data-landsat/LE07/
gs://gcp-public-data-landsat/LM01/
gs://gcp-public-data-landsat/LM02/
gs://gcp-public-data-landsat/LM03/
gs://gcp-public-data-landsat/LM04/
gs://gcp-public-data-landsat/LM05/
gs://gcp-public-data-landsat/LO08/
gs://gcp-public-data-landsat/LT04/
gs://gcp-public-data-landsat/LT05/
gs://gcp-public-data-landsat/LT08/

username@cloudshell:~ (myproject-20211206)$ gsutil ls gs://apigee-5g-saas/
gs://apigee-5g-saas/apigee-envoy-proxy-release/
gs://apigee-5g-saas/apigee-southbound-nat-release/

VPC-SC を Cloud Storage API についても設定すると、MIG で管理される VM 内では以下のようになります。

username@apigee-proxy-3ksw:~$ gsutil ls gs://gcp-public-data-landsat/
AccessDeniedException: 403 Request is prohibited by organization's policy. vpcServiceControlsUniqueIdentifier: uCVEeFd2EHek3OrPMYPi1gbFi7k1QN0WGlJrYDRqFy4Vmwu82Bng9Q

username@apigee-proxy-3ksw:~$ gsutil ls gs://apigee-5g-saas/
gs://apigee-5g-saas/apigee-envoy-proxy-release/
gs://apigee-5g-saas/apigee-southbound-nat-release/

VM の startup-script-url で指定された Bucket については、VPC-SC が存在していてもアクセスできることが分かります。

Uploaded Image

apigee.google.com について

Cloud Identity の Google サービスへのアクセス制御

Apigee X の apigee.google.com は 2021-12-19 現在、Cloud Identity のサービスアクセス制御に対応していません。「Additional services without individual control」に属するため、以下のページで ON/OFF を制御する必要があります。

Uploaded Image

関連資料: Manage access to services that aren't controlled individually

BeyondCorp Enterprise IP 制限

以下のページで言及されている BeyondCorp Enterprise の IP アクセス制限は apigee.google.com へのアクセスについては機能しません。

IP 制限を実施したい場合は、BeyondCorp Enterprise ではなく VPC-SC を設定する必要があります。

Uploaded Image

関連ページ