このページでは、VPC Service Controls を使用して TCP 転送で IAP を保護する方法と、VPC Service Controls の境界内で TCP 転送に IAP を使用する方法について説明します。
始める前に
VPC Service Controls の概要をご覧ください。
サービス境界のない IAP TCP 転送の使用を設定します。
VPC Service Controls を使用してサービス境界を作成します。このサービス境界によって、指定したサービスの Google 管理リソースが保護されます。サービス境界を作成する場合は、次を操作を行います。
IAP を使用して接続する Compute Engine インスタンスを含むプロジェクトをサービス境界内のプロジェクトに追加します。Compute Engine インスタンスで TCP クライアントの IAP を実行している場合は、このインスタンスを含むプロジェクトも境界内に配置します。
サービス境界で保護されているサービスのリストに Identity-Aware Proxy TCP API を追加します。
必要なプロジェクトやサービスを追加せずにサービス境界を作成した場合は、サービス境界の管理を参照して、サービス境界を更新する方法を確認してください。
Cloud DNS を使用して DNS レコードを構成する
TCP クライアントの IAP(Google Cloud CLI など)が境界内で実行されていない場合は、このステップをスキップできます。一方、境界内でクライアントを実行する場合は、TCP 用に IAP の DNS レコードを構成する必要があります。
TCP 用の IAP は googleapis.com
のサブドメインではないドメインを使用します。Cloud DNS を使用して、DNS レコードを追加し、それらのドメインに送信されたリクエストを VPC ネットワークが正しく処理できるようにします。VPC ルートの詳細については、ルートの概要をご覧ください。
ドメインのマネージド ゾーンを作成し、リクエストをルーティングするための DNS レコードを追加して、トランザクションを実行するには、次の操作を行います。使用しているターミナルで gcloud CLI を使用することも、gcloud CLI がプリインストールされている Cloud Shell を使用することもできます。
VPC Service Controls の統合では一般的ですが、
*.googleapis.com
DNS を構成します。DNS レコードの構成時に使用する情報を収集します。
PROJECT_ID は、VPC ネットワークをホストするプロジェクトの ID です。
NETWORK_NAME は、TCP クライアントの IAP を実行している VPC ネットワークの名前です。
ZONE_NAME は、作成するゾーンの名前です。例:
iap-tcp-zone
ドメイン
tunnel.cloudproxy.app
の限定公開マネージド ゾーンを作成し、VPC ネットワークで処理できるようにします。gcloud dns managed-zones create ZONE_NAME \ --visibility=private \ --networks=https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/networks/NETWORK_NAME \ --dns-name=tunnel.cloudproxy.app \ --description="Description of your managed zone"
トランザクションを開始します。
gcloud dns record-sets transaction start --zone=ZONE_NAME
次の DNS A レコードを追加します。これにより、Google の制限された VIP(仮想 IP アドレス)へのトラフィックが再ルーティングされます。
gcloud dns record-sets transaction add \ --name=tunnel.cloudproxy.app. \ --type=A 199.36.153.4 199.36.153.5 199.36.153.6 199.36.153.7 \ --zone=ZONE_NAME \ --ttl=300
追加した A レコードを指すように、次の DNS CNAME レコードを追加します。これにより、ドメインに一致するすべてのトラフィックが、前の手順で一覧表示された IP アドレスにリダイレクトされます。
gcloud dns record-sets transaction add \ --name="*.tunnel.cloudproxy.app." \ --type=CNAME tunnel.cloudproxy.app. \ --zone=ZONE_NAME \ --ttl=300
トランザクションを実行します。
gcloud dns record-sets transaction execute --zone=ZONE_NAME
BIND による DNS の構成
Cloud DNS を使用する代わりに、BIND を使用できます。この場合、BIND を使用した DNS の構成の手順に沿って操作しますが、TCP ドメインについては、一般的な googleapis.com
ではなく、IAP を使用してください。
プライベート VIP の使用
境界とネットワークの構成によっては、制限された VIP を使用する代わりにプライベート VIP を使用できる場合があります。プライベート VIP を使用する場合は、以下を使用します。
199.36.153.8 199.36.153.9 199.36.153.10 199.36.153.11
以下の場所に使用してください。
199.36.153.4 199.36.153.5 199.36.153.6 199.36.153.7
を使用して DNS レコードを構成する必要があります。
共有 VPC の使用
共有 VPC を使用している場合は、ホストとサービス プロジェクトをサービス境界に追加する必要があります。サービス境界の管理をご覧ください。
次のステップ
- サービス境界の管理を参照して、サービス境界にさらにリソースを追加する。