このページでは、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
IAP ページに移動して、プロジェクトがまだ選択されていない場合は選択します。
[SSH と TCP のリソース] タブで、[移行先グループを作成する] をクリックします。
グループ名の名前を入力します。グループ名に使用できるのは、小文字(a-z)とダッシュ(-)のみです。
プルダウン リストから、宛先グループを作成するリージョンを選択します。
[IP アドレス] セクションで [行を追加する] をクリックしてから、リソースの IP アドレスまたは完全修飾ドメイン名(FQDN)を入力します。
IP 範囲は、CIDR 表記を使用したカンマ区切りの範囲で構成されます(例:
10.1.2.0/24,172.0.0.0/8
)。FQDN リストは、ホスト名のカンマ区切りリストです(例:
*.internal.company.com
)。FQDN エントリでワイルドカードを使用できます。[移行先グループを作成する] をクリックします。
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
IAP ページに移動し、[SSH と TCP のリソース] タブをクリックします。
宛先グループの詳細を表示するには、宛先グループの名前をクリックします。
宛先グループを変更するには、宛先グループを選択してから、鉛筆アイコンをクリックして、[宛先グループを編集する] パネルを開きます。このパネルから宛先グループを削除することもできます。
宛先グループを削除するには、宛先グループを選択してから、ごみ箱アイコンをクリックします。
gcloud CLI
gcloud CLI を使用して宛先グループを管理する方法の詳細については、宛先グループの gcloud コマンドをご覧ください。
トンネルの権限の構成
トンネルを作成するには、関連する宛先グループに対して iap.tunnelDestGroups.accessViaIAP
権限が必要です。iap.tunnelResourceAccessor
ロールでその権限を付与できます。
宛先グループの権限を構成するには、iap.tunnelDestGroups.setIamPolicy
権限が必要です。これは、iap.admin
ロールで付与できます。
Console
IAP ページに移動します。
[SSH と TCP のリソース] タブで、権限を構成する宛先グループを選択します。
表示されたパネルで [プリンシパルを追加する] をクリックし、ユーザーのメールアドレスを入力します。
[ロールを割り当てる] セクションで、プリンシパルに割り当てるロールを選択します。
[保存] をクリックします。
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-tunnel、ssh、scp です。
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