Google Cloud または Google Cloud 外の環境で IP アドレスまたはホスト名で IAP TCP 転送を設定する

このページでは、IP アドレスまたはホスト名機能で Identity-Aware Proxy(IAP)TCP 転送を設定して使用する方法について説明します。

IP アドレスまたはホスト名機能を持つ IAP TCP 転送を使用するには、Chrome Enterprise Premium ライセンスが必要です。

概要

Google Cloud CLI を使用して、リソースのプライベート IP アドレスまたはホスト名を使用して、リソースへのトンネルを作成できます。Cloud Interconnect または VPN を介して Google Cloud に接続されている Google Cloud 以外の外部リソースがある場合は、それらのリソースで IAP TCP 転送を使用できます。

準備

Google Cloud 外のリソースにトンネリングする必要がある場合は、ハイブリッド接続を構成する必要があります。Google Cloud 以外の外部のリソースを Google Cloud に接続するには、ハイブリッド接続が必要です。詳細については、Cloud Interconnect または Cloud VPN のドキュメントをご覧ください。

Cloud Router は IAP-TCP IP 範囲 35.235.240.0/20 をアドバタイズする必要があります。これにより、宛先がインターネット経由ではなく、Cloud VPN または Cloud Interconnect を介してレスポンス トラフィックを返送できるようになります。この構成がない場合、Google Cloud プロジェクトの外部リソースへのトンネルは作成できません。

IAP-TCP IP 範囲 35.235.240.0/20 をアドバタイズするように Cloud Router を構成するには、カスタム IP 範囲のアドバタイズの手順に沿ってください。

次の手順では、タスクを完了するための gcloud の例を示しています。API を使用して宛先グループを操作する方法については、REST リソース: projects.iap_tunnel.locations.destGroups をご覧ください。

トンネルの宛先グループの作成

トンネルを構成するときに、権限チェックに使用する宛先グループを指定します。トンネルの宛先グループは、同じトンネル アクセス制限を持つリソースを表します。任意の数の宛先グループを作成できます。それぞれのグループに、任意の数の一致する IP 範囲または FQDN があります。宛先グループを重複させて、柔軟性を高めることができます。

宛先グループを作成する際に、リージョンを指定する必要があります。最適な結果を得るには、指定するリージョンを宛先リソースのロケーションと一致させる必要があります。たとえば、リソースが VPN で接続されている場合は、VPN ゲートウェイのリージョンを使用する必要があります。

宛先グループを作成するには、iap.tunnelDestGroups.create 権限が必要です。これは、iap.tunnelDestGroupEditor ロールで付与できます。単一のロールを付与するには、IAM ドキュメントの単一のロールを付与するをご覧ください。

Console

  1. IAP ページに移動して、プロジェクトがまだ選択されていない場合は選択します。

  2. [SSH と TCP のリソース] タブで、[移行先グループを作成する] をクリックします。

  3. グループ名の名前を入力します。グループ名に使用できるのは、小文字(a-z)とダッシュ(-)のみです。

  4. プルダウン リストから、宛先グループを作成するリージョンを選択します。

  5. [IP アドレス] セクションで [行を追加する] をクリックしてから、リソースの IP アドレスまたは完全修飾ドメイン名(FQDN)を入力します。

    IP 範囲は、CIDR 表記を使用したカンマ区切りの範囲で構成されます(例: 10.1.2.0/24,172.0.0.0/8)。

    FQDN リストは、ホスト名のカンマ区切りリストです(例: *.internal.company.com)。FQDN エントリでワイルドカードを使用できます。

  6. [移行先グループを作成する] をクリックします。

gcloud CLI

gcloud iap tcp dest-groups create YOUR_GROUP_NAME \
  --region=REGION \
  --ip-range-list=IP_RANGE_LIST \
  --fqdn-list=FQDN_LIST

以下を置き換えます。

  • YOUR_GROUP_NAME: グループ名。グループ名に使用できるのは、小文字(a-z)とダッシュ(-)のみです。
  • REGION: us-central1 などの宛先グループを作成するリージョン。
  • IP_RANGE_LIST: 省略可。IP 範囲のリスト。これは、10.1.2.0/24,172.0.0.0/8 などのCIDR 表記を使用したカンマ区切りの範囲で構成されます。
  • FQDN_LIST: 省略可。FQDN リストは、ホスト名のカンマ区切りリストです(例: *.internal.company.com)。FQDN エントリにワイルドカード接頭辞が含まれている場合、指定された末尾を含むホスト名と一致します。それ以外の場合は、完全一致が必要です。リクエストが IP 範囲または FQDN と一致する場合、一致と見なされます。

すでに存在するグループがわからない場合は、次のコマンドを実行してグループを一覧表示します。

gcloud iap tcp dest-groups list \
  --region=REGION

トンネルの宛先グループの管理

宛先グループの詳細の確認、移行先グループの変更と削除が可能です。

Console

  1. IAP ページに移動し、[SSH と TCP のリソース] タブをクリックします。

    • 宛先グループの詳細を表示するには、宛先グループの名前をクリックします。

    • 宛先グループを変更するには、宛先グループを選択してから、鉛筆アイコンをクリックして、[宛先グループを編集する] パネルを開きます。このパネルから宛先グループを削除することもできます。

    • 宛先グループを削除するには、宛先グループを選択してから、ごみ箱アイコンをクリックします。

gcloud CLI

gcloud CLI を使用して宛先グループを管理する方法の詳細については、宛先グループの gcloud コマンドをご覧ください。

トンネルの権限の構成

トンネルを作成するには、関連する宛先グループに対して iap.tunnelDestGroups.accessViaIAP 権限が必要です。iap.tunnelResourceAccessor ロールでその権限を付与できます。

宛先グループの権限を構成するには、iap.tunnelDestGroups.setIamPolicy 権限が必要です。これは、iap.admin ロールで付与できます。

Console

  1. IAP ページに移動します。

  2. [SSH と TCP のリソース] タブで、権限を構成する宛先グループを選択します。

  3. 表示されたパネルで [プリンシパルを追加する] をクリックし、ユーザーのメールアドレスを入力します。

  4. [ロールを割り当てる] セクションで、プリンシパルに割り当てるロールを選択します。

  5. [保存] をクリックします。

gcloud CLI

gcloud iap tcp dest-groups add-iam-policy-binding \
  --member=MEMBER \
  --role=ROLE \
  --dest-group=GROUP_NAME \
  --region=REGION

以下を置き換えます。

  • MEMBER: ユーザーのメールアドレス(例: user:exampleuser@company.com)。
  • ROLE: 必要な IAP のロール(roles/iap.tunnelResourceAccessor)。
  • GROUP_NAME: 宛先グループ名。
  • REGION: リージョン名(例: us-central1)。

トンネルの使用方法について

IAP-TCP の操作時に使用できる gcloud CLI コマンドには次の 3 つがあります。start-iap-tunnelsshscp です。

IAP-TCP コマンドが更新され、IP と FQDN ベースのトンネリングがサポートされるようになりました。IP アドレスまたは FQDN に切り替えるには、コマンドを使用するときに次の操作を行います。

  • インスタンス名の代わりに IP アドレスまたは FQDN を指定します。
  • そのためには、--zone ではなく --region を使用します。
  • --dest-group を使用して、使用する宛先グループを指定します。
  • --network を使用して、使用する VPC ネットワークの名前を指定します。

指定する IP アドレスは宛先のプライベート IP アドレスにする必要があります。パブリック IP アドレスを持つ IAP-TCP を使用することはできません。FQDN を使用する場合、宛先の IP アドレスに解決する必要があります。名前解決は、クライアントのネットワークからではなく、指定した VPC ネットワーク内から行われます。たとえば、vm.corp.company.com へのトンネルを作成しようとすると、vm.corp.company.com を IP アドレスに変換するステップが VPC ネットワーク内で発生します。

指定するリージョンは、宛先グループのリージョンと一致している必要があります。

指定するネットワークは、宛先へのアクセス権を持つ VPC ネットワークの名前と一致している必要があります。一般的なネットワーク名は default です。Google Cloud コンソールの [VPC ネットワーク] ページでネットワーク名のリストを表示できます。また、次のコマンドを実行してネットワーク名のリストを取得することもできます。

gcloud compute networks list --format='value(name)'

次の例では、IP アドレスとして 172.16.1.2 を使用しています。各コマンドで、IP アドレスの代わりに FQDN(example.internal.company.com など)を指定することもできます。

SSH の例

172.16.1.2 への SSH セッションを開始するには、次のコマンドを実行します。

gcloud compute ssh 172.16.1.2 \
    --region=us-central1 \
    --dest-group=DESTINATION_GROUP_NAME \
    --network=default \
    --tunnel-through-iap

DESTINATION_GROUP_NAME は、宛先グループ名に置き換えます。

--plain が暗黙で指定されているため、IP アドレスの使用時に SSH 認証鍵の自動的な管理や push は試行されません。

エラー Permission denied (publickey) を受信した場合、コマンドで SSH 認証鍵を含むファイルを見つけられませんでした。この問題を解決するには、次の例に示すように、SSH コマンドのパラメータとして SSH 秘密鍵を含むファイルへのパスを追加します。

gcloud compute ssh 172.16.1.2 \
    --region=us-central1 \
    --dest-group=DESTINATION_GROUP_NAME \
    --network=default \
    --tunnel-through-iap \
    -- -i ~/.ssh/google_compute_engine

DESTINATION_GROUP_NAME は、宛先グループ名に置き換えます。

特定のユーザーとしてログインする場合は、IP のみを指定せずに USER@IP という形式を使用します。

gcloud compute ssh user@172.16.1.2 \
    --region=us-central1 \
    --dest-group=DESTINATION_GROUP_NAME \
    --network=default \
    --tunnel-through-iap

アカウントがパスワードで保護されている場合は、パスワードを入力する必要があります。アカウントが秘密鍵または公開鍵の SSH 認証鍵ペアで保護されている場合は、上記のように -- -i フラグを使用して指定する必要があります。

トンネルの例

別の TCP ポートへのトンネルを確立するには、start-iap-tunnel コマンドを使用します。localhost:8022 からポート 172.16.1.2:8085 へのトンネルを作成するには、次のコマンドを実行します。

gcloud compute start-iap-tunnel 172.16.1.2 8085 \
    --local-host-port=localhost:8022 \
    --region=us-central1 \
    --dest-group=destination-group-name \
    --network=default

ターゲット マシンがこの例のポート 8085 をリッスンしている必要があります。

トンネルを確立したら、PuTTy などのツールを使用して接続を確立できます。

SCP の例

ファイルを 172.16.1.2 に SCP するには、次のコマンドを実行します。

gcloud compute scp file.txt 172.16.1.2:~/ \
    --region=us-central1 \
    --dest-group=destination-group-name \
    --network=default \
    --tunnel-through-iap

--plain が暗黙で指定されているため、IP アドレスの使用時に SSH 認証鍵の自動的な管理や push は試行されません。

SSH ProxyCommand の例

常に 172.16.1.2 にトンネリングする ProxyCommand としてコマンドを使用するには、次の例で示すように、~/.ssh/config 構成(または同等の構成)にエントリを追加します。

Host example
ProxyCommand gcloud compute start-iap-tunnel 172.16.1.2 '%p' \
    --listen-on-stdin \
    --region=us-central1 \
    --dest-group=destination-group-name \
    --network=default \
    --verbosity=warning
  

ProxyCommand は、次のコマンドを実行すると有効になります。ssh example

次の例のように、多数のホスト名を処理するように ProxyCommand を設定することもできます。

Host *.internal.company.com
ProxyCommand gcloud compute start-iap-tunnel '%h' '%p' 
--listen-on-stdin
--region=us-central1
--dest-group=destination-group-name
--network=default --verbosity=warning

ProxyCommand は、次のコマンドを実行すると有効になります。ssh example.internal.company.com