Auf dieser Seite wird beschrieben, wie Sie die Identity-Aware Proxy (IAP) TCP-Weiterleitung mit einer IP-Adresse oder einem Hostnamen in einer Google Cloud oder Nicht-Google Cloud Umgebung einrichten und verwenden.
Übersicht
Sie können mit der Google Cloud CLI Tunnel zu Ressourcen erstellen, indem Sie die private IP-Adresse oder den Hostnamen einer Ressource verwenden. Wenn Sie externe Ressourcen in Nicht-Google Cloud Umgebungen haben, die über Google Cloud durch Cloud Interconnect oder ein VPN mitverbunden sind, können Sie die IAP-TCP Weiterleitung mit diesen Ressourcen verwenden.
Hinweis
Wenn Sie einen Tunnel zu Ressourcen außerhalb von Google Clouderstellen möchten, muss die Hybridkonnektivität konfiguriert sein. Die Hybridkonnektivität ist erforderlich um Ihre externen Nicht-Google Cloud Ressourcen mit Google Cloudzu verbinden. Weitere Informationen finden Sie in der Cloud Interconnect oder Cloud VPN Dokumentation.
Ihr Cloud Router muss den IAP-TCP-IP-Bereich 35.235.240.0/20 bewerben, damit die Ziele Antworttraffic über Cloud VPN oder Cloud Interconnect und nicht über das Internet zurücksenden. Wenn Sie diese Konfiguration nicht haben, können Sie keine Tunnel zu Ressourcen außerhalb Ihres
Projekts erstellen. Google Cloud
Eine Anleitung zum Konfigurieren Ihres Cloud Routers zum Bewerben des IAP-TCP-IP-Bereichs 35.235.240.0/20 finden Sie unter Benutzerdefinierte IP-Bereiche bewerben.
In den folgenden Anleitungen finden Sie Beispiele für die Google Cloud CLI zum Ausführen der Aufgaben. Informationen zur Interaktion mit Zielgruppen über die APIs finden Sie unter REST-Ressource: projects.iap_tunnel.locations.destGroups.
Zielgruppe für Tunnel erstellen
Wenn Sie einen Tunnel konfigurieren, geben Sie eine Zielgruppe für den Tunnel an, die für Berechtigungsprüfungen verwendet werden soll. Zielgruppen für Tunnel stellen Ressourcen dar, für die dieselben Einschränkungen für den Tunnelzugriff gelten. Sie können beliebig viele Zielgruppen erstellen, die jeweils beliebig viele übereinstimmende IP-Bereiche oder vollqualifizierte Domainnamen (Fully Qualified Domain Names, FQDNs) enthalten. Zielgruppen können sich überlappen, um mehr Flexibilität zu bieten.
Wenn Sie eine Zielgruppe erstellen, müssen Sie eine Region angeben. Die angegebene Region muss mit dem Standort der Zielressourcen übereinstimmen, um optimale Ergebnisse zu erzielen. Wenn die Ressourcen beispielsweise über ein VPN verbunden sind, müssen Sie die Region des VPN-Gateways verwenden.
Zum Erstellen einer Zielgruppe benötigen Sie die Berechtigung iap.tunnelDestGroups.create, die Sie über die Rolle iap.tunnelDestGroupEditor erteilen können. Informationen zum Zuweisen einer einzelnen
Rolle finden Sie in der IAM-Dokumentation unter Einzelne Rolle zuweisen.
Console
Rufen Sie die Seite „IAP“ auf und wählen Sie ein Projekt aus, falls noch keines ausgewählt ist.
Klicken Sie auf dem Tab SSH- und TCP-Ressourcen auf Zielgruppe erstellen.
Geben Sie einen Namen für die Gruppe ein. Der Gruppenname darf nur Kleinbuchstaben (a–z) und Bindestriche (-) enthalten.
Wählen Sie in der Drop-down-Liste die Region aus, in der die Zielgruppe erstellt werden soll.
Klicken Sie im Bereich IP-Adresse auf Zeile hinzufügen und geben Sie dann die IP Adressen oder FQDNs der Ressourcen ein.
Ein IP-Bereich besteht aus kommagetrennten Bereichen in CIDR-Notation, z. B.
10.1.2.0/24,172.0.0.0/8.Eine FQDN-Liste ist eine durch Kommas getrennte Liste von Hostnamen, z. B.
*.internal.company.com. Sie können Platzhalter in Ihrem FQDN-Eintrag verwenden.Klicken Sie auf Zielgruppe erstellen.
gcloud
gcloud iap tcp dest-groups createYOUR_GROUP_NAME\ --region=REGION\ --ip-range-list=IP_RANGE_LIST\ --fqdn-list=FQDN_LIST
Ersetzen Sie Folgendes:
YOUR_GROUP_NAME: Ihr Gruppenname. Ein Gruppenname darf nur Kleinbuchstaben (a–z) und Bindestriche (-) enthalten.REGION: Die Region, in der die Zielgruppe erstellt werden soll, z. B.us-central1.IP_RANGE_LIST: optional. Die Liste der IP-Bereiche besteht aus kommagetrennten Bereichen in CIDR-Notation, z. B.10.1.2.0/24,172.0.0.0/8.FQDN_LIST: optional. Die FQDN-Liste ist eine durch Kommas getrennte Liste von Hostnamen, z. B.*.internal.company.com. Wenn ein FQDN-Eintrag ein Platzhalterpräfix hat, stimmt er mit jedem Hostnamen überein, der mit der angegebenen Endung endet. Andernfalls ist eine genaue Übereinstimmung erforderlich. Wenn eine Anfrage mit einem IP-Bereich oder FQDN übereinstimmt, gilt sie als Übereinstimmung.
Wenn Sie nicht sicher sind, welche Gruppen bereits vorhanden sind, führen Sie den folgenden Befehl aus, um die Gruppen aufzulisten:
gcloud iap tcp dest-groups list \
--region=REGION
Zielgruppen für Tunnel verwalten
Sie können die Details einer Zielgruppe aufrufen, die Zielgruppe ändern und sie entfernen.
Console
Rufen Sie die Seite „IAP“ auf und klicken Sie auf den Tab „SSH- und TCP-Ressourcen“.
Klicken Sie auf den Namen der Zielgruppe, um die Details einer Zielgruppe aufzurufen.
Wenn Sie eine Zielgruppe ändern möchten, wählen Sie sie aus und klicken Sie dann auf das Stiftsymbol, um den Bereich Zielgruppe bearbeiten zu öffnen. In diesem Bereich können Sie die Zielgruppe auch löschen.
Wenn Sie eine Zielgruppe entfernen möchten, wählen Sie sie aus und klicken Sie dann auf das Papierkorbsymbol.
gcloud
Weitere Informationen zum Verwalten von Zielgruppen mit der gcloud CLI finden Sie unter gcloud-Befehle für Zielgruppen.
Tunnelberechtigungen konfigurieren
Zum Erstellen eines Tunnels benötigen Sie die Berechtigung iap.tunnelDestGroups.accessViaIAP für die entsprechende Zielgruppe. Sie können die Berechtigung über die Rolle iap.tunnelResourceAccessor erteilen.
Zum Konfigurieren von Berechtigungen für Zielgruppen benötigen Sie die Berechtigung iap.tunnelDestGroups.setIamPolicy, die Sie über die Rolle iap.admin erteilen können.
Console
Rufen Sie die Seite „IAP“ auf.
Wählen Sie auf dem Tab SSH- und TCP-Ressourcen die Zielgruppe aus, für die Sie Berechtigungen konfigurieren möchten.
Klicken Sie im daraufhin geöffneten Bereich auf Prinzipal hinzufügen und geben Sie eine E-Mail-Adresse für den Nutzer ein.
Wählen Sie im Bereich Rollen zuweisen eine Rolle aus, die dem Prinzipal zugewiesen werden soll.
Klicken Sie auf Speichern.
gcloud
gcloud iap tcp dest-groups add-iam-policy-binding \ --member=MEMBER \ --role=ROLE \ --dest-group=GROUP_NAME \ --region=REGION
Ersetzen Sie Folgendes:
MEMBER: Die E-Mail-Adresse des Nutzers, z. B.
user:exampleuser@company.com.ROLE: Die erforderliche IAP-Rolle,
roles/iap.tunnelResourceAccessor.GROUP_NAME: Der Name der Zielgruppe.
REGION: Der Name der Region, z. B.
us-central1.
Tunnelnutzung
Es gibt drei gcloud CLI-Befehle, die Sie bei der Arbeit mit IAP-TCP verwenden können: start-iap-tunnel, ssh und scp.
Die IAP-TCP-Befehle wurden aktualisiert, um IP- und FQDN-basiertes Tunneling zu unterstützen. So wechseln Sie bei der Verwendung der Befehle zu einer IP-Adresse oder einem FQDN:
- Geben Sie eine IP-Adresse oder einen FQDN anstelle des Instanznamens an.
- Verwenden Sie
--regionanstelle von--zone. - Verwenden Sie
--dest-group, um die zu verwendende Zielgruppe anzugeben. - Verwenden Sie
--network, um den Namen des zu verwendenden VPC-Netzwerk anzugeben.
Die angegebene IP-Adresse muss die private IP-Adresse des Ziels sein.
Sie können IAP-TCP nicht mit öffentlichen IP-Adressen verwenden. Wenn Sie einen FQDN verwenden, muss er in die private IP-Adresse des Ziels aufgelöst werden. Beachten Sie, dass die Namensauflösung innerhalb des von Ihnen angegebenen VPC-Netzwerk und nicht über das Netzwerk des Clients erfolgt. Wenn Sie beispielsweise versuchen, einen Tunnel zu vm.corp.company.com zu erstellen, erfolgt der Schritt, bei dem vm.corp.company.com in eine IP-Adresse umgewandelt wird, im Kontext des VPC-Netzwerk.
Die angegebene Region muss mit der Region der Zielgruppe übereinstimmen.
Das angegebene Netzwerk muss mit dem Namen des VPC-Netzwerk übereinstimmen, das Zugriff auf das Ziel hat. Ein typischer Netzwerkname ist default. Sie können die Liste der Netzwerk
namen in der Google Cloud Console auf der Seite VPC-Netzwerke aufrufen oder
die Liste der Netzwerknamen mit dem folgenden Befehl abrufen:
gcloud compute networks list --format='value(name)'
Beispiele
In den folgenden Beispielen wird die Beispiel-IP-Adresse 172.16.1.2 verwendet. Für jeden Befehl
kann anstelle der IP-Adresse auch ein FQDN (z. B. example.internal.company.com) verwendet werden.
SSH-Beispiel
Führen Sie den folgenden Befehl aus, um eine SSH-Sitzung zu 172.16.1.2 zu starten:
gcloud compute ssh 172.16.1.2 \
--region=us-central1 \
--dest-group=DESTINATION_GROUP_NAME \
--network=default \
--tunnel-through-iap
Ersetzen Sie DESTINATION_GROUP_NAME durch den Namen der Zielgruppe.
Da --plain impliziert ist, werden SSH-Schlüssel bei Verwendung einer IP-Adresse nicht automatisch verwaltet und übertragen.
Wenn Sie die Fehlermeldung Permission denied (publickey) erhalten, konnte der Befehl die Datei mit den SSH-Schlüsseln nicht finden. Um dieses Problem zu beheben, fügen Sie den Pfad zur Datei mit den privaten SSH-Schlüsseln als Parameter für den SSH-Befehl hinzu, wie im folgenden Beispiel gezeigt:
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
Ersetzen Sie DESTINATION_GROUP_NAME durch den Namen der Zielgruppe.
Wenn Sie sich als bestimmter Nutzer anmelden möchten, verwenden Sie das Format USER@IP, anstatt nur die IP-Adresse anzugeben:
gcloud compute ssh user@172.16.1.2 \
--region=us-central1 \
--dest-group=DESTINATION_GROUP_NAME \
--network=default \
--tunnel-through-iap
Wenn das Konto passwortgeschützt ist, müssen Sie ein Passwort eingeben. Wenn das Konto durch ein privates oder öffentliches SSH-Schlüsselpaar geschützt ist, müssen Sie es mit dem Flag -- -i angeben, wie oben beschrieben.
Tunnelbeispiel
Verwenden Sie den Befehl start-iap-tunnel, um einen Tunnel zu einem anderen TCP-Port herzustellen.
Führen Sie den folgenden Befehl aus, um einen Tunnel von localhost:8022 zu Port 172.16.1.2:8085 zu erstellen:
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
Beachten Sie, dass der Zielcomputer in diesem Beispiel auf Port 8085 lauschen muss.
Nachdem Sie einen Tunnel eingerichtet haben, können Sie mit einem beliebigen Tool wie PuTTY eine Verbindung herstellen.
SCP-Beispiel
Führen Sie den folgenden Befehl aus, um eine Datei mit SCP nach 172.16.1.2 zu kopieren:
gcloud compute scp file.txt 172.16.1.2:~/ \
--region=us-central1 \
--dest-group=DESTINATION_GROUP_NAME \
--network=default \
--tunnel-through-iap
Da --plain impliziert ist, werden SSH-Schlüssel bei Verwendung einer IP-Adresse nicht automatisch verwaltet und übertragen.
SSH-ProxyCommand-Beispiel
Wenn Sie den Befehl als ProxyCommand verwenden möchten, der immer einen Tunnel zu 172.16.1.2 herstellt, fügen Sie Ihrer Konfiguration ~/.ssh/config oder einer entsprechenden Konfiguration einen Eintrag hinzu, wie im folgenden Beispiel gezeigt:
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
Der ProxyCommand wird wirksam, wenn Sie den folgenden Befehl ausführen: ssh example
Sie können den ProxyCommand auch so einrichten, dass er viele Hostnamen verarbeitet, wie im folgenden Beispiel gezeigt:
Host *.internal.company.com
ProxyCommand gcloud compute start-iap-tunnel '%h' '%p' --region=us-central1 --dest-group=DESTINATION_GROUP_NAME --network=default --verbosity=warning
Der ProxyCommand wird wirksam, wenn Sie den folgenden Befehl ausführen: ssh example.internal.company.com