Azure.ResourceManager.Sql を使って、Azure SQL Server のファイアウォール規則を操作できた。
using Azure; using Azure.Identity; using Azure.ResourceManager; using Azure.ResourceManager.Sql; const string SubscriptionId = "<サブスクリプション ID>"; const string ResourceGroupName = "<リソースグループ名>"; const string ServerName = "<サーバー名>"; const string TestIPAddress = "<テスト ID アドレス>"; var armClient = new ArmClient(new DefaultAzureCredential()); var id = SqlServerResource.CreateResourceIdentifier( subscriptionId: SubscriptionId, resourceGroupName: ResourceGroupName, serverName: ServerName); var sqlServerResourceResponse = await armClient.GetSqlServerResource(id).GetAsync(); var sqlServerResource = sqlServerResourceResponse.Value; Console.WriteLine($"PublicNetworkAccess: {sqlServerResource.Data.PublicNetworkAccess}"); // ファイアウォールルールの列挙 var sqlFirewallRules = sqlServerResource.GetSqlFirewallRules(); var sqlFirewallRuleResources = sqlFirewallRules.GetAllAsync(); await foreach (var rule in sqlFirewallRuleResources) { Console.WriteLine(rule.Data.Name); Console.WriteLine(rule.Data.StartIPAddress); Console.WriteLine(rule.Data.EndIPAddress); Console.WriteLine(); } // ファイアウォールルールの追加 var createOperation = await sqlFirewallRules.CreateOrUpdateAsync( waitUntil: WaitUntil.Completed, firewallRuleName: "Test", data: new SqlFirewallRuleData { StartIPAddress = TestIPAddress, EndIPAddress = TestIPAddress, }); Console.WriteLine(createOperation.Value.Data.Name); Console.WriteLine(createOperation.Value.Data.StartIPAddress); Console.WriteLine(createOperation.Value.Data.EndIPAddress); Console.WriteLine(); // ファイアウォールルールの更新 var updateData = createOperation.Value.Data; updateData.StartIPAddress = "127.0.0.1"; updateData.EndIPAddress = "127.0.0.1"; var updateOperation = await sqlFirewallRules.CreateOrUpdateAsync( waitUntil: WaitUntil.Completed, firewallRuleName: updateData.Name, data: updateData); Console.WriteLine(updateOperation.Value.Data.Name); Console.WriteLine(updateOperation.Value.Data.StartIPAddress); Console.WriteLine(updateOperation.Value.Data.EndIPAddress); Console.WriteLine(); // ファイアウォールルールの削除 await armClient.GetSqlFirewallRuleResource(updateData.Id) .DeleteAsync(WaitUntil.Completed); Console.WriteLine(); Console.WriteLine("Enter で終了"); Console.ReadLine();