
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
Tiago Balabuch
Related Posts

Azure SQL Database – Transparent Data Encryption with bring your own key
Transparent Data Encryption (TDE) vem por padrão habilitado quando você cria um novo database no Azure SQL...

Transparent Data Encryption and its tricks
Transparent Data Encryption - TDE não é mais uma novidade, mas...