Azure SQL Database Firewall

Recentemente eu assisti uma palestra do Roberto Cavalcanti (twitter) no Pass – Global Portuguese (http://globalportuguese.pass.org) sobre Azure SQL Database e me fez pensar que eu deveria me aprofundar mais no assunto e comecei meus estudos.

A minha intenção nesse post não é demostrar como criar um database, mas sim como fazer com que as conexões dos clientes sejam permitidas a acessar esse database. Assim como no mundo on-premise o firewall deve permitir conexões em seu servidor no mundo cloud existe a mesma funcionalidade com algumas adaptações.
Para você criar um database siga esse documento (https://docs.microsoft.com/en-us/azure/sql-database/sql-database-get-started-portal)

No Azure SQL Database existem dois níveis de firewall: server-level e database-level

Server-Level Firewall Rules: podemos dizer que é igual ao mundo on-premise onde você libera a porta de acesso para o servidor como um todo, ou seja, o cliente é permitido a se conectar a instancia SQL Server e se tiver permissões suficientes pode acessar todos os databases.

Database-Level Firewall Rules: Esse novo modelo de segurança é interessante pois você define as regras de acesso diretamente a um único database. Esse tipo de regra era possível ser criado no mundo on-premise através de ferramentas de terceiros como por exemplos: Imperva SecureSphere for Data ou Oracle Audit Vault and Database Firewall.

Primeiramente é verificado se sua conexão é a nível de database, ou seja, Database-level Firewall Rules. Uma vez que sua conexão seja permitida você terá acesso ao database, caso sua conexão seja negada uma nova verificação é realizada a nível de servidor, ou seja, Server-level Firewall Rules e se agora sua conexão for permitida você terá acesso ao database especifico ou a qualquer outro database no servidor. Por último se seu acesso for negado uma exceção será mostrada e sua conexão irá falhar.

A recomendação é sempre utilizar Database-level Firewall Rules pela simples questão de que quanto mais granular for a sua regra de acesso menos exposto você estará.
Existem várias formas de criar uma regra a nível de servidor, eu vou mostrar algumas, porem existe apenas uma forma (até o momento) de criar uma regra a nível de database que é através de T-SQL.

Server-level Firewall Rules

Vou mostrar 3 formas (existem mais) diferentes: Portal Azure, Powershell e T-SQL para configurar server-level firewall.

  • Portal Azure:

Encontre o servidor que você irá aplicar a regra e procure pela opção Firewall
Acesse a opção e adicione a nova regra! O portal mostra para você qual seu IP e isso facilita a criação da regra para que a sua máquina possa se conectar.

Você deve especificar um IP inicial e um final, ou seja, é possível trabalhar com um range de IP. Caso não queira trabalhar com um range especifique o mesmo IP nos dois campos.

  • Powershell

Para iniciar você deve ter o modulo do AzureRM instalado e importado em sua máquina para que depois você possa fazer login com sua conta e começar a usar os comandos.

Uma vez que você já tenha o modulo pronto para utilizar podemos executar os seguintes comandos:

Get-AzureRmSqlServerFirewallRule Lista todas as regras existem
New-AzureRmSqlServerFirewallRule Cria uma nova regra
Set-AzureRmSqlServerFirewallRule Atualiza uma regra
Remove-AzureRmSqlServerFirewallRule Remove uma regra

Um exemplo de como utilizar cada um desses comando

Para validar se sua regra foi criada com sucesso basta ir no portal na opção de firewall citada acima ou utilizar o comando Get-AzureRmSqlServerFirewallRule

A regra com IP 0.0.0.0 é criada pelo próprio Azure para permitir conexoes de IPs do Windows Azure.

  • T-SQL

Uma vez que você tenha acesso permitido para o seu IP é possível se conectar via SSMS e executar comando T-SQL para criar regras de firewall.

sp_set_firewall_rule Cria ou atualiza a regra
sp_delete_firewall_rule Exclui a regra

Database-level Firewall Rules

Esse nível de permissão é apenas criado através de T-SQL até esse momento. Novamente você pode especificar um unico IP ou um range de IP.

sp_set_database_firewall_rule Cria ou atualiza a regra a nível de database
sp_delete_database_firewall_rule Exclui a regra a nível de database

Para mais informações acessem: https://docs.microsoft.com/en-us/azure/sql-database/sql-database-firewall-configure

Maníaco, entusiasta, fascinado, fanático por SQL Server e nas horas vagas um DBA que adora o que faz! Também possui certificações como: MCT, MCSE - Data Management and Analystics, MCSE - Data Plataform e MCSA - SQL Server 2016/2014/2012

Responda