为了运行我的验收测试,我需要在SQL Azure上运行的数据库上定义一个已知的良好状态。我在本地运行测试,并设置连接字符串以更新我在Azure PaaS上的SQL实例。在使用VSTS部署数据库之后,将运行测试。为了使部署过程能够运行我的接受测试,我需要运行Visual Studio团队系统测试的过程来访问数据库。 VSTS显然在美国东部的Azure区域运行。鉴于我可能需要将数百个IP地址列入白名单,是否有更安全的方法来执行此操作,获取部署过程的IP地址,然后允许此IP地址作为部署的一部分访问数据库?
答案 0 :(得分:2)
您可以致电New-AzureRmSqlServerFirewallRule和Remove-AzureRmSqlServerFirewallRule powershell command来添加和删除防火墙规则。
在构建/发布期间,请参阅以下这些主题:Deploy Dacpac packages via power shell script to Azure SQL Server
首先,您需要添加防火墙规则才能连接到Azure SQL 服务器
1.编辑您的构建定义
2.选择“选项”选项卡,然后选中“允许脚本访问OAuth令牌”
3.添加Azure PowerShell步骤(参数:-RestAddress https://[account].vsdtl.visualstudio.com/DefaultCollection/_apis/vslabs/ipaddress -Token $(System.AccessToken)-RG [resource group] -Server [server name] -ruleName $(Build.BuildNumber)
代码:
param ( [string]$RestAddress, [string]$Token, [string]$RG, [string]$Server ) $basicAuth = ("{0}:{1}" -f 'test',$Token) $basicAuth = [System.Text.Encoding]::UTF8.GetBytes($basicAuth) $basicAuth = [System.Convert]::ToBase64String($basicAuth) $headers = @{Authorization=("Basic {0}" -f $basicAuth)} $result = Invoke-RestMethod -Uri $RestAddress -headers $headers -Method Get Write-Host $result.value New-AzureRmSqlServerFirewallRule -ResourceGroupName $RG -ServerName $Server -FirewallRuleName "UnitTestRule" -StartIpAddress "$($result.value)" -EndIpAddress "$($result.value)"
更新
允许脚本访问OAuth令牌以进行发布: