2017-10-07 9 views
1

powershell 또는 C#을 통해 로컬 PC IP 주소로 내 Azure SQL 방화벽을 원격으로 업데이트하려면 어떻게해야합니까?powershell 또는 C#을 통해 Azure SQL 방화벽을 로컬 IP로 원격으로 업데이트하는 방법

설명서를 살펴 보았지만 원격 서버가 아닌 실제 서버에서 수행하는 방법을 찾을 수 있습니다.

방화벽에 무작위로 IP 주소를 추가 할 것인지 묻는 비주얼 스튜디오를 얻을 수 있지만 대부분의 경우 단순히 실패하고 나에게 묻지 않습니다. 그래서 수동으로 해결 방법을 찾고 있습니다. 내 IP 주소가 변경 될 때마다 하늘빛 포털에 로그인합니다.

사용할 라이브러리를 보여주는 문서의 예나 링크를 찾고 있습니다.

+0

이 스레드에 대한 업데이 트를해야합니까? 유용 할 경우 동일한 문제가있는 커뮤니티를 쉽게 검색 할 수 있도록 표시하십시오. –

답변

1

PowerShell의 경우 New-AzureRmSqlServerFirewallRule을 사용해야합니다.

새로운-AzureRmSqlServerFirewallRule -ResourceGroupName "myResourceGroup" -ServerName $servername -FirewallRuleName "AllowSome"-StartIpAddress "0.0.0.0"-EndIpAddress "0.0.0.0"

+0

어떻게 인증합니까? 나의 푸른 구독 사용자 이름과 암호를 어떻게 알 수 있습니까? – rolls

+0

자신을 인증하려면'Login-AzureRmAccount'로 시작하십시오. –

3

link에서

우리는 Microsoft.Azure.Management.FluentMicrosoft.Azure.Management.ResourceManager.Fluent으로 할 수 있습니다. 라이브러리에 대한 자세한 정보는 packages.config를 참조하십시오. 우리는 github에서 demo code을 더 얻을 수 있습니다. 코딩하기 전에 Azure AD Application을 등록하고 해당 역할을 할당해야합니다. 자세한 내용은 document을 참조하십시오. 그런 다음 Azure AD App에서 clientId, 키 (비밀 키) 및 임차인을 얻을 수 있습니다. 그 후 우리는 형식을

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/ 

데모 코드를 다음과 Auth file을 만들 수 있습니다

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> 
+0

credfile은 인증 파일의 다른 이름입니까? – rolls

+0

'credfile'은 인증 파일 이름을 포함하는 인증 파일의 경로입니다. –