rol*_*lls 4 c# powershell firewall azure azure-sql-database
如何使用我的本地 PC IP 地址远程更新我的 azure webapp 防火墙,以便通过 powershell 或 C# 进行管理。
我已经查看了文档,但我只能从实际服务器本身而不是远程找出如何做到这一点。
我可以让 Visual Studio 弹出并询问我是否想将我的 IP 地址随机添加到防火墙,但大多数时候它只是失败并且不问我所以我正在寻找除手动登录到 azure 之外的解决方案每当我的 IP 地址更改时,门户网站。
查找示例或指向文档的链接,以显示要使用的库。
更新:我尝试了 Tom Suns 的回答,但是我们使用的是 web 应用程序而不是 sql server,所以它不起作用。
azure.WebApps.GetByResourceGroup("resourcegroup","webapp")
返回网络应用程序,但无论如何我都找不到以编程方式访问此网络应用程序的网络下找到的“访问限制”。
我也只能访问此 Web 应用程序的主要部署槽。我需要为每个部署槽单独设置防火墙(可以通过 azure Web 界面完成)。
我尝试通过以下名称访问第二个部署槽,均返回 null。这是假设 Web 应用程序名为“webapp”,部署槽名为“slo1”
webapp-slot1 webapp_slot1 webapp/slot1
我也尝试过 GetByID 而不是 GetByResourceGroup 但是我找不到任何关于他的 ID 是什么以及在哪里可以找到的例子。我已经尝试了几乎所有可以在 azure Web UI 上找到的 ID。
最后,Tom Sun 的回答要求将硬编码凭据存储在驱动器上。这远非最佳。我更喜欢提示用户输入用户名和密码的弹出式 UI,这在旧版本的 API 中是可能的,但是我能找到的一切都表明它不再存在。我可能不得不求助于powershell。
我们可以使用Microsoft.Azure.Management.Fluent和Microsoft.Azure.Management.ResourceManager.Fluent来做到这一点,有关库的更多详细信息,请参阅 packages.config。我们还可以从github获得更多演示代码。在编码之前,我们需要注册一个 Azure AD 应用程序并为其分配相应的角色,更多详细信息请参阅文档。然后我们可以从 Azure AD 应用程序中获取 clientId、key(secret key) 和租户。之后,我们可以创建具有以下格式的Auth 文件
subscription=########-####-####-####-############
client=########-####-####-####-############
tenant=########-####-####-####-############
key=XXXXXXXXXXXXXXXX
managementURI=https\://management.core.windows.net/
baseURL=https\://management.azure.com/
authURL=https\://login.windows.net/
graphURL=https\://graph.windows.net/
Run Code Online (Sandbox Code Playgroud)
演示代码:
var credFile = @"File Path"; // example: c:\tom\auth.txt
var resourceGroup = "resource group";
var azureSQLServer = "Azure sql server name"; //just name of the Azure sql server such as tomdemo
var firewallRull = "firewall rull name";//such as myFirewallRull
var firewallRuleIPAddress = "x.x.x.x";//your Ip address
var credentials = SdkContext.AzureCredentialsFactory.FromFile(credFile);
var azure = Azure
.Configure()
.WithLogLevel(HttpLoggingDelegatingHandler.Level.Basic)
.Authenticate(credentials)
.WithDefaultSubscription();
var sqlServer = azure.SqlServers.GetByResourceGroup(resourceGroup, azureSQLServer);
var newFirewallRule = sqlServer.FirewallRules.Define(firewallRull)
.WithIPAddress(firewallRuleIPAddress)
.Create();
Run Code Online (Sandbox Code Playgroud)
包.config
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="Microsoft.Azure.KeyVault.Core" version="1.0.0" targetFramework="net461" />
<package id="Microsoft.Azure.Management.AppService.Fluent" version="1.3.0" targetFramework="net461" />
<package id="Microsoft.Azure.Management.Batch.Fluent" version="1.3.0" targetFramework="net461" />
<package id="Microsoft.Azure.Management.Cdn.Fluent" version="1.3.0" targetFramework="net461" />
<package id="Microsoft.Azure.Management.Compute.Fluent" version="1.3.0" targetFramework="net461" />
<package id="Microsoft.Azure.Management.ContainerInstance.Fluent" version="1.3.0" targetFramework="net461" />
<package id="Microsoft.Azure.Management.ContainerRegistry.Fluent" version="1.3.0" targetFramework="net461" />
<package id="Microsoft.Azure.Management.CosmosDB.Fluent" version="1.3.0" targetFramework="net461" />
<package id="Microsoft.Azure.Management.Dns.Fluent" version="1.3.0" targetFramework="net461" />
<package id="Microsoft.Azure.Management.Fluent" version="1.3.0" targetFramework="net461" />
<package id="Microsoft.Azure.Management.Graph.RBAC.Fluent" version="1.3.0" targetFramework="net461" />
<package id="Microsoft.Azure.Management.KeyVault.Fluent" version="1.3.0" targetFramework="net461" />
<package id="Microsoft.Azure.Management.Network.Fluent" version="1.3.0" targetFramework="net461" />
<package id="Microsoft.Azure.Management.Redis.Fluent" version="1.3.0" targetFramework="net461" />
<package id="Microsoft.Azure.Management.ResourceManager.Fluent" version="1.3.0" targetFramework="net461" />
<package id="Microsoft.Azure.Management.Search.Fluent" version="1.3.0" targetFramework="net461" />
<package id="Microsoft.Azure.Management.ServiceBus.Fluent" version="1.3.0" targetFramework="net461" />
<package id="Microsoft.Azure.Management.Sql.Fluent" version="1.3.0" targetFramework="net461" />
<package id="Microsoft.Azure.Management.Storage.Fluent" version="1.3.0" targetFramework="net461" />
<package id="Microsoft.Azure.Management.TrafficManager.Fluent" version="1.3.0" targetFramework="net461" />
<package id="Microsoft.Data.Edm" version="5.8.2" targetFramework="net461" />
<package id="Microsoft.Data.OData" version="5.8.2" targetFramework="net461" />
<package id="Microsoft.Data.Services.Client" version="5.8.2" targetFramework="net461" />
<package id="Microsoft.IdentityModel.Clients.ActiveDirectory" version="2.28.3" targetFramework="net461" />
<package id="Microsoft.Rest.ClientRuntime" version="2.3.9" targetFramework="net461" />
<package id="Microsoft.Rest.ClientRuntime.Azure" version="3.3.10" targetFramework="net461" />
<package id="Microsoft.Rest.ClientRuntime.Azure.Authentication" version="2.3.1" targetFramework="net461" />
<package id="Newtonsoft.Json" version="6.0.8" targetFramework="net461" />
<package id="System.ComponentModel.EventBasedAsync" version="4.0.11" targetFramework="net461" />
<package id="System.Dynamic.Runtime" version="4.0.0" targetFramework="net461" />
<package id="System.Linq.Queryable" version="4.0.0" targetFramework="net461" />
<package id="System.Net.Requests" version="4.0.11" targetFramework="net461" />
<package id="System.Spatial" version="5.8.2" targetFramework="net461" />
<package id="WindowsAzure.Storage" version="8.1.4" targetFramework="net461" />
</packages>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1657 次 |
| 最近记录: |