このページでは、 または 以外の環境で、IP アドレスまたはホスト名を使用して Identity-Aware Proxy(IAP) TCP 転送を設定して使用する方法について説明します。 Google Cloud Google Cloud
概要
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 範囲のアドバタイズの手順に沿ってください。
次の手順では、タスクを完了するための Google Cloud CLI の例を示します。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
gcloud iap tcp dest-groups createYOUR_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
gcloud CLI を使用して宛先グループを管理する方法の詳細については、 宛先グループの gcloud コマンドをご覧ください。
トンネルの権限を構成する
トンネルを作成するには、関連する宛先グループに対して iap.tunnelDestGroups.accessViaIAP 権限が必要です。この権限は、iap.tunnelResourceAccessor ロールで付与できます。
宛先グループの権限を構成するには、iap.tunnelDestGroups.setIamPolicy 権限が必要です。これは、iap.admin ロールで付与できます。
Console
IAP ページに移動します。
[SSH と TCP のリソース] タブで、権限を構成する宛先グループを選択します。
表示されたパネルで [プリンシパルを追加する] をクリックし、ユーザーのメールアドレスを入力します。
[ロールを割り当てる] セクションで、プリンシパルに割り当てるロールを選択します。
[保存] をクリックします。
gcloud
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 です。コンソールの [VPC ネットワーク] ページでネットワーク
名のリストを表示できます。また、次のコマンドを実行してネットワーク名のリストを取得することもできます。 Google Cloud
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 の例
SCP を使用してファイルを 172.16.1.2 にコピーするには、次のコマンドを実行します。
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' --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' --region=us-central1 --dest-group=DESTINATION_GROUP_NAME --network=default --verbosity=warning
ProxyCommand は、次のコマンドを実行すると有効になります。ssh example.internal.company.com