Ich möchte ein virtuelles Netzwerk verwenden, um den Zugriff auf Azure-Datenbank nur von meinem App-Dienst aus zu beschränken, damit ich in den Firewall-Einstellungen die Option "Zugriff auf App-Dienste zulassen" deaktivieren kann
Ich kann jetzt den Microsoft.Sql-Dienstendpunkt in meinem VNET sehen:
Ich bekomme jedoch immer noch
SqlException: Der vom Login angeforderte Server 'my-sqlserver' kann nicht geöffnet werden. Client mit der IP-Adresse '52 .233 ..'darf nicht auf den Server zugreifen .:
Was vermisse ich?
Leider können Sie dieses Szenario vorerst nicht erreichen.
Warum:
Wenn Sie die VNET-Integration mit Ihrer Web-App verwenden, kann Ihre Web-App mit dem VNET wie Web App <---> VNET
kommunizieren.
Wenn Sie eine SQL-Firewall verwenden, um Triffic von einem bestimmten VNet aus zuzulassen, kann der Datenverkehr aus dem VNET-Adressraum mit Ihrem SQL wie VNet <---> SQL server
kommunizieren.
Wenn alle Konfigurationen eingerichtet sind, sollte Ihr Szenario Web App <---> VNET <---> SQL server
sein. Wichtig ist, dass der Datenverkehr von der Web-App nicht über das VNET zum SQL-Server geleitet werden kann, da die Web-App nicht im VNET ist, sondern außerhalb des VNET! Wenn Sie mit Web App versuchen, auf den SQL-Server zuzugreifen, stammt der Triffic nicht aus dem VNET.
Lösung:
Die Lösung ist, dass Sie Ihre Web-App in das VNet einbinden. Sie können also Azure ASE verwenden, um dies zu erreichen.
Referenz:
VNet-Integration gibt Ihrer Webanwendung Zugriff auf Ressourcen in Ihrem virtuellen Netzwerk, gewährt jedoch keinen privaten Zugriff auf Ihre Webanwendung aus dem virtuellen Netzwerk. Privater Site-Zugriff bezieht sich darauf, dass Ihre App nur über ein privates Netzwerk zugänglich ist, z. B. über ein virtuelles Azure-Netzwerk. Der Zugriff auf eine private Site ist nur mit einer ASE möglich, die mit einem Internal Load Balancer (ILB) konfiguriert ist. Einzelheiten zur Verwendung einer ILB-ASE finden Sie im folgenden Artikel: Erstellen und Verwenden einer ILB-ASE .
Ähnliches Beispiel: Integration von App Service VNet mit Azure Storage Service Enpoint
Eine Option, die Sie in Betracht ziehen sollten, um die Firewall-Einstellung "Zugriff auf App Services erlauben" zu entfernen, ist Hinzufügen von Firewall-Regeln für die ausgehenden IP-Adressen Ihrer spezifischen App Services .
Sie finden die aktuelle Liste im Abschnitt "Eigenschaften" des App-Dienstes oder mit PowerShell ...
$outboundIps = (Get-AzureRmResource -ResourceGroupName $rg -ResourceType Microsoft.Web/sites -ResourceName $appService).Properties.outboundIpAddresses
Ein paar wichtige Vorbehalte.
Die ausgehenden IP-Adressen können sich ändern, dies ist jedoch vorhersehbar (siehe Link unten). Ich führe PowerShell-Skripts als Teil eines VSTS-Veröffentlichungsprozesses aus, der die Firewall-Regeln aktualisiert. (Wenn Sie Ihre Ressourcen und ihre Größe auch über Ihren Veröffentlichungsprozess verwalten und nicht über das Azure-Portal, scheint dieser Ansatz zuverlässig zu sein.)
Ich konnte keine Informationen finden, die bestätigen, ob diese IP-Adressen für Ihren App Service eindeutig sind. Dies ist ein zu berücksichtigendes Risiko.
https://docs.Microsoft.com/en-us/Azure/app-service/app-service-ip-addresses