2017-10-07 6 views
1

Comment puis-je mettre à jour mon pare-feu SQL Azur avec l'adresse IP de mon PC local pour l'administration via PowerShell ou C#.Comment mettre à jour à distance azur SQL pare-feu avec IP local via powershell ou C#

J'ai jeté un coup d'oeil sur la documentation mais je ne peux que découvrir comment le faire à partir du serveur lui-même, pas à distance.

Je peux faire apparaître Visual Studio et me demander si je veux ajouter mon adresse IP au pare-feu de manière aléatoire, mais la plupart du temps il échoue simplement et ne me demande pas donc je cherche une solution autre que manuellement se connecter au portail azure chaque fois que mon adresse IP change.

Recherche d'un exemple ou d'un lien vers une documentation indiquant les bibliothèques à utiliser.

+0

Avez-vous une mise à jour sur ce fil? Si c'est utile, veuillez le marquer afin d'aider plus de communautés ayant le même problème à chercher facilement. –

Répondre

1

Pour PowerShell, vous devez utiliser New-AzureRmSqlServerFirewallRule.

De cette link:

Nouvelle-AzureRmSqlServerFirewallRule -ResourceGroupName "myResourceGroup" -ServerName $servername -FirewallRuleName "AllowSome" -StartIpAddress "0.0.0.0" -EndIpAddress "0.0.0.0"

+0

Comment m'authentifier? Comment sait-il connaître mon nom d'utilisateur et mon mot de passe d'abonnement Azur? – rolls

+0

Vous allez commencer par 'Login-AzureRmAccount' pour vous authentifier. –

3

Nous pouvons le faire avec Microsoft.Azure.Management.Fluent et Microsoft.Azure.Management.ResourceManager.Fluent, plus d'informations détaillées sur la bibliothèque, s'il vous plaît se référer à packages.config. Nous pourrions également obtenir plus demo code du github. Avant de coder, nous devons enregistrer une application Azure AD et lui assigner un rôle correspondant. Pour plus de détails, veuillez vous reporter au document. Ensuite, nous pouvons obtenir le clientId, la clé (clé secrète) et le locataire de l'application Azure AD. Après cela, nous pourrions créer le format suivant Auth file avec

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/ 

Code de démonstration:

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

Le fichier credfile est-il un autre nom pour le fichier auth? – rolls

+0

'credfile' est le chemin du fichier auth incluant le nom du fichier auth. –