PowerBI access to Azure SQL Database(PaaS) - azure

I have an Azure SQL Database as PaaS Solution. I have some network access rules in the Firewall of Azure SQL Database. I want to connect PowerBI to Azure SQL Database securely. I had checked the option of Allow access to Azure Services in Firewall. However, it also makes the database visible to any component deployed within Azure, such as a virtual machine.
Are there any methods to use Azure SQL Database(Paas) securely from PowerBI?

If you don't want to set Allow access to Azure Services in Azure SQL database firewall, you could add the current client IP address to the firewall.
It will only allow your current client/computer to access the Azure SQL.
Then you could access the Azure SQL database from PowerBI securely.

Related

Azure Function to use Windows Authentication for On-Premises SQL DB

We already have an express route configured between azure and our local domain. Local AD is also synced with Azure AD. Azure Function is under a VNet which can access on-premises resources.
The problem is when Azure Function tries to access on-premises SQL using Windows Authentication, it gets the error "Logon Failed" (which proves that the server is accessible but the user doesn't have permission). Event Log shows DWASSVC as the account trying to access DB.
Is there a way we can change the context of Azure Function to run under a specific user which has access to on-Premises SQL DB and any call from Azure Function is generated under that account?
Windows Authentication is not possible on Azure App service platform ( Azure web app, Azure Function).
To access on-prem SQL server, you can use Hybrid connection manager
https://learn.microsoft.com/en-us/azure/app-service/app-service-hybrid-connections
Or Put Azure Function in VNET ( ASE) and then make site to site connection.

How to enable the access to Azure services in my AZURE SQL database server?

I'm trying to create a "Integration Runtime" (AZURE-SSIS type) in my data factory. (To run my SSIS packages in cloud) I already have a virtual machine (Azure SQL data base server Up and running).
While during the IR creation process I'm not able to link my AZURE SQL database SSISDB catalog to "Catalog database server endpoint" (OR) the server is not showing up in the drop down box.
In the MSDN blog it says
"Confirm that the **Allow access to Azure services** setting is enabled for the database server. This is not applicable when you use Azure SQL Database with virtual network service endpoints/Managed Instance to host SSISDB."
Could anyone know how to enable this feature ? I hope by enabling this feature I can link my server in the IR and run the packages in the cloud.
Thanks
To allow applications from Azure to connect to your Azure SQL server,
Azure connections must be enabled. When an application from Azure
attempts to connect to your database server, the firewall verifies
that Azure connections are allowed. A firewall setting with starting
and ending address equal to 0.0.0.0 indicates Azure connections are
allowed. If the connection attempt is not allowed, the request does
not reach the Azure SQL Database server.
you can do it any way, powershell, az cli, arm templates. if you go to the portal to the firewall blade, there would be a button to do that.
https://learn.microsoft.com/en-us/azure/sql-database/sql-database-firewall-configure
Please take a look where is located on below image.
On this documentation you will have instructions how to reach that screen.

Harden the security between Azure Web Apps and Azure SQL Database

For security concerns I'm planning to not allow Azure services to communicate with Azure services but the services it is only working with.
For example, I've some web apps that uses Azure SQL Databases. Should I only add the outbound IP addresses of Azure Web Apps in the Azure SQL server firewall?
or I need to do something else?
This is not as easy as it should be. SQL Azure is not designed to be virtual network friendly so your only options are "Allow all Azure services" or hard-coded IPs. Unless your web apps have static IPs however, this won't be possible without writing a custom updater for the database which picks up IP address changes.
You could install a SQL server onto a VM and use virtual private networks, otherwise, make sure the login credentials are secure and accept the fact that an Azure client from anyone could attempt to connect to your database server.
The best way to lock down your SQL Database is with AAD Integration, and Managed Service Identities. Azure will provision an AAD identity for your application, and only code running in that application will be able to generate an Access Token for that Identity. Then you can provision it as an AAD user in your SQL Server.
This has the (large) added benefit of removing the secrets from the application, so you don't have to configure your application with a Client Secret, or a SQL Login/Password.
You can also run your App on a VNet, and configure your SQL firewall to only permit access from that VNet using Virtual Network service Endpoints For Azure SQL Database.
Or use the newer and much better Private Link for Azure SQL Database.
Some of the ways to secure the connection to the sql database that could be considered in this case are -
As you mentioned you are already thinking of configuring a firewall to whitelist the allowed IP addresses. The firewall could be configured both on the sql server level and the database level(we can use SSMS to configure the firewall at the database level).
We can encrypt data. Of course this would be encryption at rest. And the good news is the application connecting to the database need not change to query encrypted data.
The third way would be the traditional way(even if we were not using azure db) we would prevent unauthorized access by creating users/roles/permissions.
A very nice feature I found Azure db provides is the Threat Detection Capability. If you turned that on we would be notified of the possible vulnerabilities of the current db/server setup. And also where can we make improvements to fix those issues.
Connect your Azure function with your SQL DB using private endpoints and VNET integration. Your app service will need to be standard or premium. Even Premium function plan will do. This LINK talks about it.
Authenticate your azure function on your SQL DB using managed identities. See this link for info on how to do that. Managed identities
In short yes.
You can possibly make this more secure by creating vnet connection from the web app and creating a service endpoint for SQL. I'm not sure that will work, but worth a try.

How to connect Azure SQL database from on-premise SSMS in hybrid environment without Azure Data Gateway

I am trying to connect to Azure SQL database through on-premise SSMS and SSIS (its a requirement to push data on premise to Azure cloud). But my organization's firewall is blocking the connection to Azure database, although the Azure subscription is with same org. I tried pulling data with Azure Data Factory but it requires installation of Data Gateway and firewall is also blocking installation/registration of this gateway. Is there any alternate way to bypass this. Raising firewall exception for Data Gateway is not an option in this case. Thanks
Are sure your firewall blocks the installation of Data Management Gateway? I don't really know how a firewall achieves this. Maybe you meant Group Policy?
Using Data Management Gateway to move data to Azure SQL database is only requiring outgoing port 443, which is allowed by default in most firewalls.
If the Group Policy blocks installation of Data Management Gateway, you could try to upload data to a Azure Blob at first (also require outgoing port 443), and then using Data Factory to copy data from Azure Blob to Azure SQL database (gateway is not needed in that case).
Azure SQL works on Port 1433. You are unable to access Azure SQL probably because your organization's firewall is blocking this port. If you can get port 1433 enabled with your network admin then it should work.

Connect Azure app service to SQL Server VM using Windows auth?

Is there a way to connect from a web app (azure app service) to a SQL Server VM in Azure using Windows authentication? I'm not exactly sure if I need to impersonate or if the app needs to run under the identity that has access to the DB on the SQL Server.
I believe that you can do this - but you will need to share a Active Directory between the two - or have then in a private network together so that they are in the same broadcast subnet.
If you need to use your own Active Directory the create a network and a VPN to your site.
If you don't need to use Active Directory then use SQL Auth.
Looks like it is not possible, although it may be with Azure SQL. But not a VM running MSSQL. Ref links below.
SQL Server Integrated Security from an Azure Web Site
https://azure.microsoft.com/en-us/documentation/articles/sql-database-aad-authentication/

Resources