使Azure防火墙规则自动过期

时间:2016-04-16 11:23:14

标签: sql-server powershell azure firewall

警告: 好的,所以这可能没有必要,但我的标准安全心态是尽可能地使事情变得更加困难,然后根据需要进行简化。 / p>

目前,我是Azure(SQL Server和移动服务)基础软件系统的唯一开发人员。

虽然整个系统旨在使用Azure移动服务API访问其SQL Server数据库,但我在开发和测试期间使用SSMS管理数据库,并且我必须创建防火墙规则允许此访问权限。如果这个项目扩展(看起来可能在接下来的几个月内),我需要让其他数据库管理员/开发人员访问一些相同的资源。这没关系,但考虑到我们将要处理的一些数据的敏感性,我想在一天结束时自动使这些Azure SQL Server防火墙规则无效。我意识到这需要在每个工作日开始时重新创建。 我很满意。

根据我的阅读,似乎有3种不同的方式以编程方式管理Azure SQL Server防火墙规则:

  1. T-SQL(sp_delete_firewall_rule
  2. REST API(DELETEhttps://management.core...
  3. Azure Powershell(Remove-AzureSqlDatabaseServerFirewallRule
  4. 我真的不关心它是如何完成的,但我已经使用移动服务调度程序作业来使密码重置令牌失效(完全与当前任务无关),所以我想我会给技术一枪。

    这是尝试:

    function ClearSqlServerFirewalls() {
        var sql = 'Exec sp_delete_firewall_rule ?';
        mssql.query(sql, ['name'], {
            success: function (results) {  
                console.log(results); 
            }
        });
    }
    

    在一个非常令人惊讶的结果中,我收到了以下错误:

    User must be in the master database.
    

    好的,这是有道理的,因为这是一个系统范围的效果,而不是特定于数据库的效果。 Azure显然为每个数据库创建一个特定的SQL用户,并通过该用户运行所有移动服务代码。由于该用户没有数据库范围的访问权限,因此没有骰子。

    所以,以下是我目前对此的看法:

    1. SQL Azure显然不存在SQL代理,因此SQL Server中的T-SQL脚本自动化似乎已经完成。
    2. 我还不知道如何从Azure内部自动执行REST API调用
    3. 我不熟悉Azure中的Powershell。
    4. 有什么办法可以做我想做的事吗?让Azure用户访问master数据库(如果可能的话)似乎是一个糟糕的解决方案。

      是的,我意识到这看起来有点矫枉过正,但如果我拥有正确的凭据,我可以为任何地方添加IP规则。说我在工作午餐,需要访问。我添加规则并开始工作。但是说我忘了这个规则,它可能只是坐在那里作为对那些进入同一网络的人的公开邀请。我意识到这是 稍微 偏执,但我认为防火墙规则可以带有内置过期也是合乎逻辑的。我错过了什么吗?

1 个答案:

答案 0 :(得分:1)

我认为这样做的好方法是使用Azure Automation for PowerShell命令行开关 - 例如,可以每天安排一次,并且可以构建完整的Powershell管理管道。 https://azure.microsoft.com/en-us/documentation/articles/sql-database-firewall-configure/

看看基于云的图形工具: https://blogs.endjin.com/2016/03/using-azure-automation-to-run-vms-during-office-hours-only-using-graphical-runbooks/ 基本上,您需要将主要部分更改为SQL Azure命令行开关。

如果这是有用的答案,请将其标记为有用或作为答案。谢谢!