Sie können einen privaten Endpunkt für HTTP-Aufrufe aus Ihrer Workflowausführung festlegen, indem Sie Service Directory-Dienstregistrierung mit Workflows verwenden. Durch das Erstellen eines privaten Endpunkts in einem VPC-Netzwerk (Virtual Private Cloud) kann der Endpunkt VPC Service Controls-konform sein.
VPC Service Controls bietet eine zusätzliche Sicherheitsebene, unabhängig von Identity and Access Management (IAM). Während IAM detaillierte identitätsbasierte Zugriffssteuerung ermöglicht, ermöglicht VPC Service Controls umfassendere kontextbasierte Perimetersicherheit, einschließlich der Kontrolle des ausgehenden Datenverkehrs im gesamten des Perimeters.
Service Directory ist ein Dienstregistrierung, die Informationen zu registrierten Netzwerkdiensten, einschließlich ihrer Namen, Orte und Attribute. Unabhängig von ihrem können Sie Dienste automatisch registrieren und Details. So können Sie Dienste in großem Umfang ermitteln, veröffentlichen und verbinden, all Ihre Dienstendpunkte.
Ein VPC-Netzwerk ermöglicht die Verbindung Ihren VM-Instanzen und ermöglicht das Erstellen privater Endpunkte innerhalb Ihres VPC-Netzwerk über interne IP-Adressen. HTTP Aufrufe einer VPC-Netzwerkressource werden über ein privates Netzwerk gesendet. und IAM und VPC Service Controls erzwingen.
VPC Service Controls ist ein Google Cloud-Feature, mit dem Sie einen Dienstperimeter einrichten und einer Datenübertragungsgrenze. Sie können VPC Service Controls mit Workflows zum Schutz Ihrer Dienste und zur Risikoreduzierung der Daten-Exfiltration.
In diesem Dokument erfahren Sie, wie Sie eine VM in einem VPC-Netzwerk registrieren als Service Directory-Endpunkt senden. So können Sie in Ihrem Workflow durch einen Service Directory-Dienstnamen. Ihr bei der Workflowausführung die aus der Dienstregistrierung abgerufenen Informationen, die entsprechende HTTP-Anfrage ohne ausgehenden Traffic an ein öffentliches Netzwerk senden.
Dieses Diagramm bietet einen Überblick:
Hier ist eine allgemeine Liste der erforderlichen Aufgaben:
- Cloud Workflows-Dienst-Agent Berechtigungen gewähren damit der Dienst-Agent Service Directory-Ressourcen ansehen kann und über Service Directory auf VPC-Netzwerke zugreifen.
- Erstellen Sie ein VPC-Netzwerk, Netzwerkfunktionalität.
- Erstellen Sie eine VPC-Firewallregel, damit Sie kann Traffic zu oder von VM-Instanzen in Ihrer VPC zulassen oder ablehnen Netzwerk.
- Erstellen Sie eine VM-Instanz im VPC-Netzwerk. A Die Compute Engine-VM-Instanz ist eine virtuelle Maschine, die auf die Infrastruktur von Google. Die Begriffe Compute Engine-Instanz, VM-Instanz und VM sind synonym und werden synonym verwendet.
- Anwendung auf der VM bereitstellen Sie können eine App auf Ihrem VM-Instanz und bestätigen Sie, dass der Traffic wie erwartet bereitgestellt wird.
- Service Directory konfigurieren damit Ihre Workflowausführung ein Service Directory aufrufen kann Endpunkt.
- Workflow erstellen und bereitstellen Die
Der
private_service_name
-Wert in Ihrem Workflow gibt den Wert Service Directory-Endpunkt, den Sie im vorherigen Schritt registriert haben Schritt.
Cloud Workflows-Dienst-Agent Berechtigungen gewähren
Einige Google Cloud-Dienste haben Dienst-Agenten damit Dienste auf Ihre Ressourcen zugreifen können. Wenn eine API einen Dienst-Agent erfordert, erstellt Google den Dienst-Agent, nachdem Sie die API aktiviert und verwendet haben.
Gehen Sie bei der ersten Bereitstellung eines Workflows so vor: wird der Cloud Workflows-Dienst-Agent automatisch mit im folgenden Format:
service-PROJECT_NUMBER@gcp-sa-workflows.iam.gserviceaccount.com
Sie können das Dienstkonto manuell in einem Projekt erstellen, ohne mit diesem Befehl:
gcloud beta services identity create \ --service=workflows.googleapis.com \ --project=PROJECT_ID
Ersetzen Sie
PROJECT_ID
durch die Google Cloud-Projekt-ID.Um Service Directory-Ressourcen anzusehen, gewähren Sie den Rolle „Service Directory Viewer“ (
servicedirectory.viewer
) für das Projekt an die Workflows Dienst-Agent:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-workflows.iam.gserviceaccount.com \ --role=roles/servicedirectory.viewer
Ersetzen Sie
PROJECT_NUMBER
durch Ihre Google Cloud-Projektnummer. Sie finden Ihre Projektnummer auf der Willkommensseite der Google Cloud Console oder durch Ausführen des folgenden Befehls:gcloud projects describe PROJECT_ID --format='value(projectNumber)'
Für den Zugriff auf VPC-Netzwerke über Service Directory gewähren Rolle „Autorisierter Private Service Connect-Dienst“ (
roles/servicedirectory.pscAuthorizedService
) für das Projekt an die Workflows-Dienst-Agent:gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-workflows.iam.gserviceaccount.com \ --role=roles/servicedirectory.pscAuthorizedService
VPC-Netzwerk erstellen
Ein VPC-Netzwerk ist eine virtuelle Version eines physischen Netzwerks, die innerhalb des Produktionsnetzwerks von Google implementiert wurde. Sie ermöglicht eine Verbindung für Ihre Compute Engine-VM-Instanzen.
Sie können ein VPC im automatischen oder benutzerdefinierten Modus Netzwerk. Jedes neu erstellte Netzwerk muss innerhalb des Projekt arbeiten.
Mit dem folgenden Befehl wird beispielsweise eine VPC im automatischen Modus erstellt. Netzwerk:
gcloud compute networks create NETWORK_NAME \ --subnet-mode=auto
Ersetzen Sie NETWORK_NAME
durch einen Namen für das VPC-Netzwerk.
Weitere Informationen finden Sie unter VPC-Netzwerke erstellen und verwalten.
VPC-Firewallregel erstellen
Mit VPC-Firewallregeln können Sie Traffic zur oder von einer VM zulassen oder ablehnen in einem VPC-Netzwerk basierend auf Portnummer, Tag oder Protokoll.
VPC-Firewallregeln werden auf Netzwerkebene definiert und gelten nur für das Netzwerk, in dem sie erstellt werden. Der Name für jede Regel muss jedoch für das Projekt eindeutig sein.
Mit dem folgenden Befehl wird beispielsweise eine Firewallregel für eine bestimmte
VPC-Netzwerk und lässt eingehenden Traffic
von jeder IPv4-Adresse zu,
0.0.0.0/0
Mit dem Flag-Wert --rules
von all
wird die Regel auf alle
Protokollen und allen Zielports.
gcloud compute firewall-rules create RULE_NAME \ --network=projects/PROJECT_ID/global/networks/NETWORK_NAME \ --direction=INGRESS \ --action=ALLOW \ --source-ranges=0.0.0.0/0 \ --rules=all
Ersetzen Sie RULE_NAME
durch einen Namen für die Firewallregel.
Weitere Informationen finden Sie unter VPC-Firewallregeln verwenden.
VM-Instanz im VPC-Netzwerk erstellen
VM-Instanzen umfassen GKE-Cluster (Google Kubernetes Engine) und App Engine. flexiblen Umgebungsinstanzen und anderen Google Cloud-Produkten, Compute Engine-VMs Zur Unterstützung privaten Netzwerkzugriff kann eine VPC-Netzwerkressource eine VM-Instanz sein, Cloud Interconnect-IP-Adresse oder ein interner Layer-4-Load-Balancer.
Compute Engine-Instanzen können öffentliche Images für Linux und Windows ausführen Server von Google sowie private benutzerdefinierte Images, die Sie bestehende Systeme zu erstellen oder aus bestehenden Systemen zu importieren. Sie können auch Docker bereitstellen. Container.
Sie können die Maschinenattribute Ihrer Instanzen auswählen, z. B. die Anzahl virtueller CPUs und die Speicherkapazität unter Nutzung vordefinierter Maschinen oder eigene benutzerdefinierte Maschinentypen erstellen.
Mit dem folgenden Befehl wird beispielsweise eine Linux-VM-Instanz aus einer öffentlichen Bild mit einer Netzwerkschnittstelle, die mit dem VPC-Netzwerk verbunden ist, die zuvor erstellt wurden.
Erstellen und starten Sie eine VM-Instanz:
gcloud compute instances create VM_NAME \ --image-family=debian-11 \ --image-project=debian-cloud \ --machine-type=e2-micro \ --network-interface network=projects/PROJECT_ID/global/networks/NETWORK_NAME
Ersetzen Sie
VM_NAME
durch einen Namen für die VM.Wenn Sie aufgefordert werden, die Zone für die Instanz zu bestätigen, geben Sie
y
ein.Nachdem Sie die VM-Instanz erstellt haben, notieren Sie sich die
INTERNAL_IP
-Adresse. der zurückgegeben wird.Rufen Sie in der Google Cloud Console die Seite VM-Instanzen auf.
Klicken Sie in der Spalte Name auf den Namen der entsprechenden VM-Instanz.
Wenn die VM ausgeführt wird, klicken Sie auf
Beenden.Klicken Sie zum Bearbeiten der VM auf
Bearbeiten.Unter Netzwerk > Firewalls können Sie HTTP- oder HTTPS-Traffic zur VM verwenden möchten, wählen Sie HTTP-Traffic zulassen oder HTTPS-Traffic zulassen
Klicken Sie für dieses Beispiel das Kästchen HTTP-Traffic zulassen an.
Compute Engine fügt Ihrer VM ein Netzwerk-Tag hinzu, das den die Firewallregel mit der VM. Anschließend wird die entsprechende Firewall für eingehenden Traffic erstellt. die den gesamten eingehenden Traffic über
tcp:80
(HTTP) odertcp:443
(HTTPS) zulässt.Um die Änderungen zu speichern, klicken Sie auf Speichern.
Klicken Sie auf Starten/Fortsetzen, um die VM neu zu starten.
Weitere Informationen finden Sie unter VM-Instanz erstellen und starten.
Anwendung auf der VM bereitstellen
Um die Netzwerkkonfiguration zu testen und zu überprüfen, ob Traffic bereitgestellt wird als können Sie auf Ihrer VM eine einfache Anwendung bereitstellen, die einen Port überwacht.
Mit den folgenden Befehlen wird beispielsweise ein Node.js-Webdienst erstellt, der Daten überwacht, Port 3000.
SSH-Verbindung zur VM herstellen Instanz.
Aktualisieren Sie die Paket-Repositorys:
sudo apt update
Installieren Sie NVM, Node.js und npm.
Weitere Informationen finden Sie unter Node.js-Entwicklungsumgebung einrichten.
Erstellen Sie interaktiv eine
package.json
-Datei:npm init
Beispiel:
{ "name": "test", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "hello" }, "author": "", "license": "ISC" }
Die Webanwendung Express installieren Framework für Node.js:
npm install express
Schreiben Sie den Code für die Test-App:
vim app.js
Im folgenden Beispiel wird eine Anwendung erstellt, die auf
GET
-Anfragen an den Stammpfad (/
) mit dem Text „Hello, world!“Notieren Sie sich den Port, den die App überwacht. Es muss dieselbe Portnummer verwendet werden beim Konfigurieren des Endpunkts für Service Directory .
Prüfen Sie, ob die App Port 3000 überwacht:
node app.js
Compute Engine bietet eine Reihe von Bereitstellungsoptionen. Weitere Informationen finden Sie unter Compute Engine-Bereitstellungsstrategie für Arbeitslast auswählen
Service Directory konfigurieren
Damit das Aufrufen eines privaten Endpunkts aus einer Workflowausführung unterstützt wird, müssen Sie Folgendes festlegen: Service Directory-Namespace erstellen, einen Dienst im Namespace und fügen dem Dienst einen Endpunkt hinzu.
Die folgenden Befehle erstellen beispielsweise einen Namespace, einen Dienst und einen Endpunkt, der das VPC-Netzwerk und die interne IP-Adresse angibt Adresse Ihrer VM-Instanz.
Erstellen Sie einen Namespace:
gcloud service-directory namespaces create NAMESPACE \ --location=REGION
Ersetzen Sie Folgendes:
NAMESPACE
: die ID des Namespace oder vollständig Qualifizierte Kennung für den Namespace.REGION
: die Google Cloud-Region, die enthält den Namespace; z. B.us-central1
.
Dienst erstellen:
gcloud service-directory services create SERVICE \ --namespace=NAMESPACE \ --location=REGION
Ersetzen Sie
SERVICE
durch den Namen des Dienstes, den Sie erstellen.Konfigurieren Sie einen Endpunkt.
gcloud service-directory endpoints create ENDPOINT \ --namespace=NAMESPACE \ --service=SERVICE \ --network=projects/PROJECT_NUMBER/locations/global/networks/NETWORK_NAME \ --port=PORT_NUMBER \ --address=IP_ADDRESS \ --location=REGION
Ersetzen Sie Folgendes:
ENDPOINT
: der Name Ihres Endpunkts erstellen.PORT_NUMBER
: der Port, mit dem der Endpunkt ausgeführt wird aktiviert; z. B.3000
.IP_ADDRESS
: die IPv6- oder IPv4-Adresse des Endpunkts. ist dies die interne IP-Adresse, die Sie zuvor notiert haben.
Weitere Informationen finden Sie unter Service Directory konfigurieren und Zugriff auf private Netzwerke konfigurieren.
Workflow erstellen und bereitstellen
Das Aufrufen oder Aufrufen eines privaten Endpunkts aus Workflows ist abgeschlossen
über eine HTTP-Anfrage senden. Die gängigsten HTTP-Anfragemethoden haben einen Aufruf
(z. B. http.get und
http.post), Sie können aber
Typ der HTTP-Anfrage, indem Sie das Feld call
auf http.request
setzen und
Sie geben den Anfragetyp im Feld method
an. Weitere Informationen
Siehe HTTP-Anfrage stellen.
Erstellen Sie eine Quellcodedatei für Ihren Workflow:
touch call-private-endpoint.JSON_OR_YAML
Ersetzen Sie „
JSON_OR_YAML
“ durch „yaml
“ oder „json
“ je nach Format des Workflows.Kopieren Sie den folgenden Workflow in einem Texteditor (in diesem Fall wird ein HTTP-Protokoll für den Wert
url
) in Ihre Quellcodedatei zu:YAML
main: steps: - checkHttp: call: http.get args: url: http://IP_ADDRESS private_service_name: "projects/PROJECT_ID/locations/REGION/namespaces/NAMESPACE/services/SERVICE" result: res - ret: return: ${res}
JSON
{ "main": { "steps": [ { "checkHttp": { "call": "http.get", "args": { "url": "http://IP_ADDRESS", "private_service_name": "projects/PROJECT_ID/locations/REGION/namespaces/NAMESPACE/services/SERVICE" }, "result": "res" } }, { "ret": { "return": "${res}" } } ] } }
Der Wert
private_service_name
muss ein String sein, der ein registrierter Service Directory-Dienstname mit der folgendes Format:projects/PROJECT_ID/locations/LOCATION/namespaces/NAMESPACE_NAME/services/SERVICE_NAME
Stellen Sie den Workflow bereit. Zu Testzwecken können Sie die Compute Engine Standarddienstkonto zum Workflow hinzufügen, um seine Identität darzustellen:
gcloud workflows deploy call-private-endpoint \ --source=call-private-endpoint.JSON_OR_YAML \ --location=REGION \ --service-account=PROJECT_NUMBER-compute@developer.gserviceaccount.com
Führen Sie den Workflow aus:
gcloud workflows run call-private-endpoint \ --location=REGION
Das Ergebnis sollte in etwa so aussehen:
argument: 'null' duration: 0.650784403s endTime: '2023-06-09T18:19:52.570690079Z' name: projects/968807934019/locations/us-central1/workflows/call-private-endpoint/executions/4aac88d3-0b54-419b-b364-b6eb973cc932 result: '{"body":"Hello, world!","code":200,"headers":{"Connection":"keep-alive","Content-Length":"21","Content-Type":"text/html; charset=utf-8","Date":"Fri, 09 Jun 2023 18:19:52 GMT","Etag":"W/\"15-NFaeBgdti+9S7zm5kAdSuGJQm6Q\"","Keep-Alive":"timeout=5","X-Powered-By":"Express"}}' startTime: '2023-06-09T18:19:51.919905676Z' state: SUCCEEDED
Nächste Schritte
- Weitere Informationen zu Private Service Connect
- Dienstperimeter mit VPC Service Controls einrichten
- Aktivieren Sie IAP, um einen privaten lokalen Endpunkt, die Compute Engine, die GKE oder einen anderen Endpunkt aufzurufen.