Auf dieser Seite wird beschrieben, wie Sie die TCP-Weiterleitung von Identity-Aware Proxy (IAP) mit einer IP-Adresse oder einem Hostnamenfeature einrichten und verwenden.
Wenn Sie die TCP-Weiterleitung von IAP mit einer IP-Adresse oder einem Hostnamenfeature verwenden möchten, benötigen Sie eine BeyondCorp Enterprise-Lizenz.
Überblick
Sie können die Google Cloud CLI verwenden, um Tunnel zu Ressourcen mithilfe der privaten IP-Adresse oder des Hostnamens der Ressource zu erstellen. Wenn externe Ressourcen außerhalb von Google Cloud über Cloud Interconnect oder ein VPN mit Google Cloud verbunden sind, können Sie die TCP-Weiterleitung von IAP mit diesen Ressourcen verwenden.
Hinweise
Wenn Sie ein Tunneling zu Ressourcen außerhalb von Google Cloud ausführen müssen, muss eine Hybridkonnektivität konfiguriert sein. Hybridkonnektivität ist erforderlich, um externe Nicht-Google Cloud-Ressourcen mit Google Cloud zu verbinden. Weitere Informationen finden Sie in der Dokumentation zu Cloud Interconnect oder Cloud VPN.
Ihr Cloud Router muss den IAP-TCP-IP-Bereich 35.235.240.0/20
anbieten, damit die Ziele den Antworttraffic über Cloud VPN oder Cloud Interconnect und nicht über das Internet zurücksenden. Ohne diese Konfiguration können Sie keine Tunnel zu Ressourcen außerhalb Ihres Google Cloud-Projekts erstellen.
Folgen Sie der Anleitung unter Benutzerdefinierte IP-Bereiche bewerben, um Ihren Cloud Router so zu konfigurieren, dass er den IAP-TCP-IP-Bereich 35.235.240.0/20
anbietet.
Die folgenden Verfahren enthalten gcloud-Beispiele zum Ausführen der Aufgaben. Informationen zur Interaktion mit Zielgruppen über die APIs finden Sie unter REST-Ressource: projects.iap_tunnel.locations.destGroups
Tunnelzielgruppe erstellen
Wenn Sie einen Tunnel konfigurieren, geben Sie eine Zielgruppe für Berechtigungsprüfungen an. Tunnelzielgruppen stellen Ressourcen mit denselben Tunnelzugriffsbeschränkungen dar. Sie können eine beliebige Anzahl von Zielgruppen mit jeweils einer beliebigen Anzahl übereinstimmender IP-Bereiche oder eines FQDN erstellen. Für mehr Flexibilität können sich Zielgruppen überschneiden.
Beim Erstellen einer Zielgruppe müssen Sie eine Region angeben. Die besten Ergebnisse erzielen Sie, wenn die angegebene Region mit dem Standort der Zielressourcen übereinstimmt. Wenn die Ressourcen beispielsweise über ein VPN verbunden sind, sollten 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
gewähren können. Informationen zum Zuweisen einer einzelnen Rolle finden Sie in der IAM-Dokumentation unter Eine 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 den Gruppennamen ein. Der Gruppenname darf nur Kleinbuchstaben (a–z) und Bindestriche (-) enthalten.
Wählen Sie aus der Drop-down-Liste die Region aus, in der die Zielgruppe erstellt werden soll.
Klicken Sie im Abschnitt IP-Adresse auf Zeile hinzufügen und geben Sie die IP-Adressen oder Fully Qualified Domain Names (FQDN) von 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-CLI
gcloud iap tcp dest-groups create YOUR_GROUP_NAME \ --region=REGION \ --ip-range-list=IP_RANGE_LIST \ --fqdn-list=FQDN_LIST
Ersetzen Sie Folgendes:
- YOUR_GROUP_NAME: der Name Ihrer Gruppe. 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, die aus kommagetrennten Bereichen in CIDR-Notation wie
10.1.2.0/24,172.0.0.0/8
besteht. - 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, wird er mit jedem Hostnamen mit der angegebenen Endung abgeglichen. Andernfalls ist eine genaue Übereinstimmung erforderlich. Wenn eine Anfrage mit einem IP-Bereich oder FQDN übereinstimmt, wird sie als Übereinstimmung betrachtet.
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
Tunnelzielgruppen verwalten
Sie können die Details einer Zielgruppe aufrufen sowie die Zielgruppe ändern oder entfernen.
Console
Rufen Sie die Seite "IAP" auf und klicken Sie auf den Tab SSH- und TCP-Ressourcen.
Wenn Sie die Details einer Zielgruppe aufrufen möchten, klicken Sie auf den Namen der Zielgruppe.
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. Sie können die Zielgruppe auch aus diesem Bereich löschen.
Wenn Sie eine Zielgruppe entfernen möchten, wählen Sie sie aus und klicken Sie dann auf das Papierkorbsymbol.
gcloud-CLI
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
gewähren.
Zum Konfigurieren von Berechtigungen für Zielgruppen benötigen Sie die Berechtigung iap.tunnelDestGroups.setIamPolicy
, die Sie über die Rolle iap.admin
gewähren 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 angezeigten Bereich auf Hauptkonto 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 Hauptkonto zugewiesen werden soll.
Klicken Sie auf Speichern.
gcloud-CLI
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 verstehen
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. Gehen Sie bei Verwendung der Befehle so vor, um zur IP-Adresse oder dem FQDN zu wechseln:
- Geben Sie eine IP-Adresse oder einen FQDN anstelle des Instanznamens an.
- Verwenden Sie
--region
anstelle 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 von Ihnen angegebene IP-Adresse muss die private IP-Adresse des Ziels sein.
Sie können IAP-TCP nicht mit öffentlichen IP-Adressen verwenden. Wenn Sie FQDN verwenden, muss er in die private IP-Adresse des Ziels aufgelöst werden. Beachten Sie, dass die Namensauflösung über das von Ihnen angegebene VPC-Netzwerk erfolgt, nicht über das Clientnetzwerk. Wenn Sie beispielsweise versuchen, einen Tunnel zu vm.corp.company.com
zu erstellen, erfolgt der Schritt zum Konvertieren von vm.corp.company.com
in eine IP-Adresse 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 Netzwerknamen in der Google Cloud Console auf der Seite „VPC-Netzwerke“ aufrufen oder mit dem folgenden Befehl abrufen:
gcloud compute networks list --format='value(name)'
Beispiele
In den folgenden Beispielen wird die IP-Adresse 172.16.1.2
als Beispiel verwendet. Jeder Befehl kann auch einen FQDN (z. B. example.internal.company.com
) anstelle der IP-Adresse annehmen.
SSH-Beispiel
Führen Sie den folgenden Befehl aus, um eine SSH-Sitzung bei 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.
Beachten Sie, dass --plain
impliziert ist. Es wird also nicht versucht, SSH-Schlüssel bei Verwendung einer IP-Adresse automatisch zu verwalten und zu übertragen.
Wenn Sie den Fehler Permission denied (publickey)
erhalten, wurde die Datei mit den SSH-Schlüsseln mit dem Befehl nicht gefunden. Um dieses Problem zu beheben, fügen Sie den Pfad zu der 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 ein 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 wie oben angegeben mit dem Flag -- -i
angeben.
Beispiel für einen Tunnel
Verwenden Sie den Befehl start-iap-tunnel
, um einen Tunnel zu einem anderen TCP-Port einzurichten.
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
Die Zielmaschine muss in diesem Beispiel Port 8085
überwachen.
Nachdem Sie einen Tunnel eingerichtet haben, können Sie ein Tool wie PuTTy verwenden, um eine Verbindung herzustellen.
Beispiel für SCP
Führen Sie den folgenden Befehl aus, um eine Datei per SCP an 172.16.1.2
zu senden:
gcloud compute scp file.txt 172.16.1.2:~/ \ --region=us-central1 \ --dest-group=destination-group-name \ --network=default \ --tunnel-through-iap
Beachten Sie, dass --plain
impliziert ist. Es wird also nicht versucht, SSH-Schlüssel bei Verwendung einer IP-Adresse automatisch zu verwalten und zu übertragen.
SSH-ProxyCommand-Beispiel
Wenn Sie den Befehl als ProxyCommand verwenden möchten, der immer über 172.16.1.2
erfolgt, fügen Sie Ihrer ~/.ssh/config
-Konfiguration oder einem entsprechenden Eintrag einen Eintrag hinzu, wie im folgenden Beispiel gezeigt:
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 wird wirksam, wenn Sie den folgenden Befehl ausführen: ssh example
Sie können ProxyCommand auch so einrichten, dass viele Hostnamen verarbeitet werden, wie im folgenden Beispiel gezeigt:
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 wird wirksam, wenn Sie den folgenden Befehl ausführen: ssh example.internal.company.com