gpt4 book ai didi

c# - 如何通过 powershell 或 C# 使用本地 IP 远程更新 azure webapp 防火墙

转载 作者:行者123 更新时间:2023-11-30 20:17:03 26 4
gpt4 key购买 nike

如何使用本地 PC IP 地址远程更新我的 azure webapp 防火墙,以便通过 powershell 或 C# 进行管理。

我已经查看了文档,但我只能从实际服务器本身找到如何做到这一点,而不能远程了解。

我可以让 Visual Studio 弹出并询问我是否要随机将 IP 地址添加到防火墙,但大多数时候它只是失败并且不会询问我,所以我正在寻找手动日志记录之外的解决方案每当我的 IP 地址发生变化时,都会进入 Azure 门户。

寻找示例或文档链接来显示要使用的库。

更新:我尝试了 Tom Sun 的回答,但是我们使用的是 Web 应用程序而不是 SQL 服务器,因此它不起作用。

azure.WebApps.GetByResourceGroup("resourcegroup","webapp")

返回网络应用程序,但我无法找到以编程方式访问该网络应用程序的网络下找到的“访问限制”的方法。

我也只能访问此 Web 应用程序的主部署槽。我需要为每个部署槽单独设置防火墙(可以通过 azure Web 界面完成)。

我尝试通过以下名称访问第二个部署槽,全部返回 null。假设 Web 应用程序名为“webapp”,部署槽名为“slo1”

webapp-slot1webapp_slot1网络应用程序/slot1

我也尝试过 GetByID 而不是 GetByResourceGroup,但是我找不到任何关于他的 ID 是什么以及在哪里可以找到它的示例。我已经尝试了几乎所有可以在 Azure Web UI 上找到的 ID。

最后,Tom Sun 的答案要求将硬编码凭据存储在驱动器上。这远非最佳。我更喜欢一个弹出式 UI,提示用户输入用户名和密码,这在旧版本的 API 中曾经是可能的,但我能找到的所有内容都表明它不再是了。我可能不得不求助于 powershell。

最佳答案

我们可以用 Microsoft.Azure.Management.Fluent 来做到这一点和 Microsoft.Azure.Management.ResourceManager.Fluent ,有关库的更多详细信息,请参阅packages.config。我们还可以获得更多demo code来自github 。在编码之前我们需要注册一个Azure AD应用程序并为其分配相应的角色,更多详细信息请参阅document 。然后我们可以从Azure AD应用程序中获取clientId、 key ( key )和租户。之后我们可以创建Auth file格式如下

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/

演示代码:

 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();

packages.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>

关于c# - 如何通过 powershell 或 C# 使用本地 IP 远程更新 azure webapp 防火墙,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46616782/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com