Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Zugriff auf AWS Transform Webanwendung aus einer VPC
Wenn Sie AWS PrivateLink privat von Ihrer VPC aus auf die AWS Transform API zugreifen, erfordert die Webanwendung eine zusätzliche Netzwerkkonfiguration. Sie stellt statische Inhalte (HTML JavaScript, CSS) bereit CloudFront, wofür eine Internetverbindung erforderlich ist. API-Aufrufe von der Webanwendung gehen über Ihren VPC-Endpunkt und bleiben vollständig privat.
In diesem Handbuch erfahren Sie, wie Sie den kontrollierten Internetausgang von Ihrer VPC aus so konfigurieren, dass die Webanwendung geladen werden kann, während Ihre VPC nur auf die erforderlichen Domänen beschränkt bleibt.
Funktionsweise
Die AWS Transform Webanwendung verwendet zwei Netzwerkpfade:
-
API-Aufrufe — Wenn Sie mit der Webanwendung interagieren (Jobs starten, Arbeitsbereiche anzeigen usw.), sendet der Browser API-Anfragen an
api.transform.. Wenn derregion.on.awscom.amazonaws.VPC-Endpunkt und das private DNS aktiviert sind, werden diese Anfragen zu einer privaten IP-Adresse in Ihrer VPC aufgelöst und verlassen niemals das AWS Netzwerk.region.api.transform -
Statischer Inhalt — Die HTML- und CSS-Dateien der Webanwendung werden über CloudFront bereitgestellt. JavaScript
Für das Laden dieser Dateien ist eine Internetverbindung erforderlich, da die Bereitstellung von CloudFront Inhalten nur über das öffentliche Internet möglich ist.tenant-id.transform.region.on.aws -
Authentifizierung — Es werden AWS IAM Identity Center-Anmeldeabläufe verwendet
, für die auch eine Internetverbindung erforderlich ist.region.signin.aws
Um die Webanwendung zu aktivieren und gleichzeitig die Sicherheit aufrechtzuerhalten, erstellen Sie mithilfe der AWS Network Firewall mit domänenbasierter Filterung einen kontrollierten Ausgangspfad. Auf diese Weise kann Ihre VPC nur die spezifischen Domänen erreichen, die von der Webanwendung benötigt werden, während der gesamte andere Internetverkehr blockiert wird.
Architektur
Das folgende Diagramm zeigt den Netzwerkpfad für den Datenverkehr von Webanwendungen:
EC2 Instance / Workspace (Private Subnet) | | Route: 0.0.0.0/0 → Network Firewall Endpoint v AWS Network Firewall (Firewall Subnet) | Allows: *.cloudfront.net, *.transform.<region>.on.aws, | <region>.signin.aws, SSO domains, S3 presigned URLs | Blocks: everything else (TLS SNI inspection) | | Route: 0.0.0.0/0 → NAT Gateway v NAT Gateway (Public Subnet) | | Route: 0.0.0.0/0 → Internet Gateway v Internet Gateway → CloudFront Edge Locations
Wichtig
Die Network Firewall muss beide Verkehrsrichtungen erkennen (symmetrisches Routing), um die TLS-SNI-Inspektion durchführen zu können. Sie müssen im NAT-Gateway-Subnetz eine Rückroute konfigurieren, die den für das private Subnetz bestimmten Datenverkehr durch die Firewall zurücksendet. Ohne dies funktionieren domänenbasierte Filterregeln nicht.
Voraussetzungen
Stellen Sie vor Beginn sicher, dass Sie über Folgendes verfügen:
-
Ein AWS Konto mit Berechtigungen zum Erstellen von VPC-Ressourcen, Network Firewall und NAT-Gateways.
-
Eine VPC mit einem privaten Subnetz, in dem Ihre Instances oder Workloads ausgeführt werden.
-
Ein an die VPC angeschlossenes Internet-Gateway (oder Berechtigungen zum Erstellen eines solchen).
-
Ein AWS Transform VPC-Endpunkt für
com.amazonaws.mit aktiviertem privaten DNS. Dies ist der Endpunkt, der vom Browser-Client für Webanwendungen verwendet wird. Anweisungen zum Erstellen von Endpunkten finden Sie unterAWS Transform und Schnittstellenendpunkte (AWS PrivateLink).region.api.transform
Konfiguration der VPC-Endpunktrichtlinie
Wenn Ihr com.amazonaws. VPC-Endpunkt über eine benutzerdefinierte Endpunktrichtlinie verfügt, müssen Sie eine Anweisung hinzufügen, die AWS Transform Operationen zulässt. Andernfalls kann die Webanwendung keine API-Aufrufe über den Endpunkt tätigen.region.api.transform
Fügen Sie Ihrer VPC-Endpunktrichtlinie die folgende Aussage hinzu. AWS_TRANSFORM_PROFILE_ARNErsetzen Sie es durch Ihr AWS Transform Dienstprofil ARN, das Sie in der AWS Transform Konsole auf der Seite Einstellungen finden.
{ "Statement": [ { "Sid": "AllowAWSTransform", "Effect": "Allow", "Principal": "*", "Action": "*", "Resource": "*", "Condition": { "StringEquals": { "aws:PrincipalArn": [ "AWS_TRANSFORM_PROFILE_ARN" ] } } } ] }
Anmerkung
Wenn Ihr VPC-Endpunkt die Standardrichtlinie (Vollzugriff) verwendet, sind keine Änderungen erforderlich und Sie können diesen Schritt überspringen.
Einrichtung eines kontrollierten Internetausgangs
Gehen Sie wie folgt vor, um die Network Firewall mit domänenbasierter Filterung für die AWS Transform Webanwendung zu konfigurieren.
Schritt 1: Erstellen Sie das Firewall-Subnetz
Erstellen Sie ein kleines /28-Subnetz, das dem Netzwerk-Firewall-Endpunkt gewidmet ist. Dieses Subnetz muss sich in derselben Availability Zone wie Ihr privates Subnetz befinden.
aws ec2 create-subnet \ --vpc-idyour-vpc-id\ --cidr-blockfirewall-subnet-cidr\ --availability-zoneyour-az\ --regionregion
Schritt 2: Erstellen Sie ein öffentliches Subnetz für das NAT-Gateway
aws ec2 create-subnet \ --vpc-idyour-vpc-id\ --cidr-blockpublic-subnet-cidr\ --availability-zoneyour-az\ --regionregion
Schritt 3: Konfigurieren Sie die Routing-Tabelle für öffentliche Subnetze
Erstellen Sie eine Routentabelle für das öffentliche Subnetz, das den Internetverkehr an das Internet-Gateway weiterleitet.
# Create route table PUB_RTB=$(aws ec2 create-route-table \ --vpc-idyour-vpc-id\ --regionregion\ --query 'RouteTable.RouteTableId' --output text) # Add default route to internet gateway aws ec2 create-route \ --route-table-id $PUB_RTB \ --destination-cidr-block 0.0.0.0/0 \ --gateway-idyour-igw-id\ --regionregion# Associate with public subnet aws ec2 associate-route-table \ --route-table-id $PUB_RTB \ --subnet-idpublic-subnet-id\ --regionregion
Schritt 4: Erstellen Sie das NAT-Gateway
# Allocate an Elastic IP EIP=$(aws ec2 allocate-address --domain vpc \ --regionregion--query 'AllocationId' --output text) # Create NAT Gateway in the public subnet NAT_ID=$(aws ec2 create-nat-gateway \ --subnet-idpublic-subnet-id\ --allocation-id $EIP \ --regionregion\ --query 'NatGateway.NatGatewayId' --output text) # Wait for NAT Gateway to become available (~2 minutes) aws ec2 wait nat-gateway-available \ --nat-gateway-ids $NAT_ID --regionregion
Schritt 5: Erstellen Sie die Netzwerk-Firewall-Regelgruppe
Erstellen Sie eine statusbehaftete Regelgruppe, die nur Datenverkehr zu den Domänen zulässt, die für die AWS Transform Webanwendung erforderlich sind.
aws network-firewall create-rule-group \ --rule-group-name transform-webapp-domains \ --type STATEFUL \ --capacity 100 \ --rule-group '{ "StatefulRuleOptions": { "RuleOrder": "STRICT_ORDER" }, "RulesSource": { "RulesSourceList": { "Targets": [ ".cloudfront.net", ".transform.region.on.aws", "region.signin.aws", ".s3.region.amazonaws.com", "oidc.region.amazonaws.com", "portal.sso.region.amazonaws.com", "assets.sso-portal.region.amazonaws.com", "directory-id.awsapps.com" ], "TargetTypes": ["TLS_SNI", "HTTP_HOST"], "GeneratedRulesType": "ALLOWLIST" } } }' \ --regionregion
regionErsetzen Sie es durch die AWS Region, in der Ihr AWS Transform
Profil installiert ist (z. B.us-east-1). directory-idErsetzen Sie es durch Ihre IAM Identity Center-Verzeichnis-ID (z. B.d-1234567890). Sie finden Ihre Verzeichnis-ID in der IAM Identity Center-Konsole.
In der folgenden Tabelle werden die zulässigen Domänen erklärt.
| Domain | Zweck |
|---|---|
.cloudfront.net |
CloudFront CDN — stellt statische Ressourcen (CSSJavaScript, Bilder) für Webanwendungen bereit |
.transform. |
Mandanten-URL der Webanwendung — der Browser lädt die erste Seite von dieser Domain über CloudFront |
|
Umleitungsseite für die SSO-Anmeldung |
.s3. |
Vorsignierte S3-URLs — Uploads und Downloads von Artefakten |
oidc. |
Austausch von OIDC-Tokens für die SSO-Authentifizierung |
portal.sso. |
Anmeldeseite für das SSO-Portal |
assets.sso-portal. |
Statische Ressourcen des SSO-Portals (CSS, JavaScript) |
|
IAM Identity Center-Portal für Ihre Organisation |
Anmerkung
Der .cloudfront.net Platzhalter ermöglicht den Datenverkehr zu jeder CloudFront Distribution, nicht nur zu der der AWS Transform Webanwendung. Ein schmalerer Domänenfilter ist nicht möglich, da CloudFront Edge-IPs von allen Distributionen gemeinsam genutzt werden und die TLS-SNI-Inspektion nicht zwischen einzelnen Distributionen hinter derselben Domain unterscheiden kann.
Anmerkung
API-Aufrufe müssen weitergeleitet werden api.transform. AWS PrivateLink und erfordern keinen ausgehenden Internetzugriff. Sie sind von der Firewall nicht betroffen.region.on.aws
Schritt 6: Erstellen Sie die Firewall-Richtlinie
Die Richtlinie muss die STRICT_ORDER Regelauswertung mit drop_established als Standardaktion verwenden. Dadurch wird sichergestellt, dass jeglicher Datenverkehr, der nicht der Zulassungsliste entspricht, gelöscht wird.
# Get the rule group ARN RG_ARN=$(aws network-firewall describe-rule-group \ --rule-group-name transform-webapp-domains \ --type STATEFUL --regionregion\ --query 'RuleGroupResponse.RuleGroupArn' --output text) # Create the firewall policy aws network-firewall create-firewall-policy \ --firewall-policy-name transform-webapp-policy \ --firewall-policy "{ \"StatelessDefaultActions\": [\"aws:forward_to_sfe\"], \"StatelessFragmentDefaultActions\": [\"aws:forward_to_sfe\"], \"StatefulRuleGroupReferences\": [ { \"ResourceArn\": \"$RG_ARN\", \"Priority\": 1 } ], \"StatefulEngineOptions\": { \"RuleOrder\": \"STRICT_ORDER\" }, \"StatefulDefaultActions\": [\"aws:drop_established\", \"aws:alert_established\"] }" \ --regionregion
Schritt 7: Erstellen Sie die Network Firewall
# Get the policy ARN FW_POLICY_ARN=$(aws network-firewall describe-firewall-policy \ --firewall-policy-name transform-webapp-policy \ --regionregion\ --query 'FirewallPolicyResponse.FirewallPolicyArn' --output text) # Create the firewall aws network-firewall create-firewall \ --firewall-name transform-webapp-firewall \ --firewall-policy-arn $FW_POLICY_ARN \ --vpc-idyour-vpc-id\ --subnet-mappings SubnetId=firewall-subnet-id\ --regionregion# Wait for the firewall to become READY (3-5 minutes) while true; do STATUS=$(aws network-firewall describe-firewall \ --firewall-name transform-webapp-firewall \ --regionregion\ --query 'FirewallStatus.Status' --output text) echo "Status: $STATUS" if [ "$STATUS" = "READY" ]; then break; fi sleep 15 done
Schritt 8: Holen Sie sich die Firewall-Endpunkt-ID
FW_ENDPOINT=$(aws network-firewall describe-firewall \ --firewall-name transform-webapp-firewall \ --regionregion\ --query "FirewallStatus.SyncStates.\"your-az\".Attachment.EndpointId" \ --output text) echo "Firewall endpoint: $FW_ENDPOINT"
Schritt 9: Konfigurieren Sie die Routentabelle des Firewall-Subnetzes
Leiten Sie den internetgebundenen Verkehr vom Firewall-Subnetz zum NAT-Gateway weiter.
FW_RTB=$(aws ec2 create-route-table \ --vpc-idyour-vpc-id\ --regionregion\ --query 'RouteTable.RouteTableId' --output text) aws ec2 create-route \ --route-table-id $FW_RTB \ --destination-cidr-block 0.0.0.0/0 \ --nat-gateway-id $NAT_ID \ --regionregionaws ec2 associate-route-table \ --route-table-id $FW_RTB \ --subnet-idfirewall-subnet-id\ --regionregion
Schritt 10: Aktualisieren Sie die Routentabelle für private Subnetze
Leiten Sie den gesamten internetgebundenen Verkehr vom privaten Subnetz durch die Firewall.
aws ec2 create-route \ --route-table-idprivate-subnet-route-table-id\ --destination-cidr-block 0.0.0.0/0 \ --vpc-endpoint-id $FW_ENDPOINT \ --regionregion
Wenn bereits eine Standardroute vorhanden ist, verwenden Sie anstelle vonreplace-route. create-route
Schritt 11: Fügen Sie die symmetrische Rückroute hinzu (erforderlich)
Wichtig
Dieser Schritt ist entscheidend. Die Network Firewall verwendet die TLS-SNI-Inspektion und muss beide Richtungen einer TCP-Verbindung erkennen. Fügen Sie der Routentabelle des NAT-Gateway-Subnetzes eine Route hinzu, die den für das private Subnetz bestimmten Rückverkehr durch die Firewall zurücksendet.
aws ec2 create-route \ --route-table-id $PUB_RTB \ --destination-cidr-blockprivate-subnet-cidr\ --vpc-endpoint-id $FW_ENDPOINT \ --regionregion
private-subnet-cidrErsetzen Sie ihn durch den CIDR-Block Ihres privaten Subnetzes (z. B.). 10.0.144.0/20
Ohne symmetrisches Routing erkennt die Firewall nur eine Richtung des Datenverkehrs. Die TLS Inspection Engine kann die Server Name Indication (SNI) nicht aus dem TLS-Handshake extrahieren, und alle domänenbasierten Regeln schlagen automatisch fehl.
Schritt 12: Entfernen Sie die IPv6-Standardroute (falls vorhanden)
Wenn die Routentabelle für private Subnetze eine IPv6-Standardroute (::/0) enthält, die direkt auf ein Internet-Gateway verweist, wird die Firewall für Ziele umgangen. IPv6-capable Entferne sie:
aws ec2 delete-route \ --route-table-idprivate-subnet-route-table-id\ --destination-ipv6-cidr-block ::/0 \ --regionregion
Verifizierung
Überprüfen Sie die Konfiguration von einer Instanz im privaten Subnetz aus:
# Should SUCCEED - web application content via CloudFront (allowed) curl -vL --connect-timeout 15 \ 'https://tenant-id.transform.region.on.aws' # Should SUCCEED - API via PrivateLink (does not use firewall) curl -v --connect-timeout 15 \ 'https://api.transform.region.on.aws/' # Should FAIL - non-allowlisted domain (blocked by firewall) curl -v --connect-timeout 15 'https://www.example.com' # Expected: TLS connection error (firewall drops after SNI inspection)
Fehlerbehebung
- API-Aufrufe von api.transform werden von Ihrer Firewall blockiert
-
Die Domain
api.transform.sollte über den VPC-Endpunkt zu einer privaten IP-Adresse aufgelöst werden und Ihre Internet-Firewall nicht erreichen.region.on.aws-
Stellen Sie sicher, dass Sie den
com.amazonaws.Endpunkt erstellt haben.region.api.transform -
Stellen Sie sicher, dass privates DNS auf dem Endpunkt aktiviert ist:
aws ec2 describe-vpc-endpoints \ --filters "Name=service-name,Values=com.amazonaws.region.api.transform" \ --query 'VpcEndpoints[*].[State,PrivateDnsEnabled]' \ --output tableErwartete Ausgabe:
available | True
-
- Die Webanwendung wird nicht geladen (Verbindungs-Timeout)
-
-
Stellen Sie sicher, dass die Routentabelle des privaten Subnetzes eine
0.0.0.0/0Route enthält, die auf den Firewall-Endpunkt verweist. -
Stellen Sie sicher, dass die Routentabelle des Firewall-Subnetzes eine
0.0.0.0/0Route enthält, die auf das NAT-Gateway verweist. -
Stellen Sie sicher, dass sich das NAT-Gateway in einem bestimmten
availableZustand befindet.
-
- Non-allowlisted Domänen sind nicht blockiert
-
-
Suchen Sie nach einer
::/0IPv6-Route, die auf das Internet-Gateway verweist. Dadurch wird die Firewall umgangen. Entfernen Sie es (Schritt 12). -
Stellen Sie sicher, dass symmetrisches Routing konfiguriert ist. Die NAT-Gateway-Subnetz-Routentabelle muss eine Rückroute durch die Firewall für das private Subnetz CIDR haben (Schritt 11).
-
Vergewissern Sie sich, dass die Firewall-Richtlinie die Aktionen
STRICT_ORDERmitdrop_establishedundalert_establishedals Standardaktionen verwendet.
-
Kostenüberlegungen
| Ressource | Ungefähre Kosten |
|---|---|
| Network Firewall | ~0 $. 395/hr (~$288/month) pro Availability Zone |
| NAT-Gateway | ~0 $. 045/hr (~$33/month) + Datenverarbeitungsgebühren |
| Elastic IP (öffentliches IPv4) | ~0 $. 005/hr (~3 $). 60/month) |
| Datenverarbeitung durch Network Firewall | 0$. 065/GB |
| NAT-Gateway-Datenverarbeitung | 0$. 045/GB |
Die geschätzten Grundkosten 325/month für eine einzelne Availability Zone-Bereitstellung belaufen sich auf ungefähr $. Stellen Sie für Produktionsbereitstellungen die Firewall, das NAT-Gateway und die zugehörigen Subnetze in jeder Availability Zone bereit, in der private Subnetze existieren.
Bereinigen
Um alle in diesem Handbuch erstellten Ressourcen zu entfernen, führen Sie die folgenden Befehle in umgekehrter Reihenfolge aus. Ersetzen Sie die Platzhalter durch die Ressourcen-IDs aus Ihrer Bereitstellung. Sie finden diese Werte in der AWS Management Console oder mithilfe der describe Befehle aus den Einrichtungsschritten.
# Remove return route from NAT Gateway subnet aws ec2 delete-route --route-table-idpub-rtb-id\ --destination-cidr-blockprivate-subnet-cidr\ --regionregion# Remove route from private subnet aws ec2 delete-route \ --route-table-idprivate-subnet-route-table-id\ --destination-cidr-block 0.0.0.0/0 --regionregion# Delete Network Firewall (takes ~5 minutes) aws network-firewall delete-firewall \ --firewall-name transform-webapp-firewall \ --regionregion# Delete firewall policy and rule group aws network-firewall delete-firewall-policy \ --firewall-policy-name transform-webapp-policy \ --regionregionaws network-firewall delete-rule-group \ --rule-group-name transform-webapp-domains \ --type STATEFUL --regionregion# Delete NAT Gateway (wait ~5 minutes for full deletion) aws ec2 delete-nat-gateway --nat-gateway-idnat-gateway-id\ --regionregion# Release Elastic IP aws ec2 release-address --allocation-ideip-allocation-id\ --regionregion# Delete subnets aws ec2 delete-subnet --subnet-idfirewall-subnet-id\ --regionregionaws ec2 delete-subnet --subnet-idpublic-subnet-id\ --regionregion