Esporta (0) Stampa
Espandi tutto
Questo argomento non è stato ancora valutato - Valuta questo argomento

Enumerazione delle regole firewall di livello server

L'operazione di recupero regole firewall del server (Get Server Firewall Rules) consente di recuperare un elenco di tutte le regole firewall di livello server per un server Database SQL che appartiene a una sottoscrizione.

Richiesta

La richiesta di recupero regole firewall del server deve essere specificata come indicato di seguito. Sostituire <id-sottoscrizione> con l'ID sottoscrizione e <nomeserver> con il nome del server per il quale verrà restituito il relativo elenco di regole firewall di livello server.

 

Metodo URI della richiesta Versione HTTP

GET

https://management.database.windows.net:8443/<id-sottoscrizione>/servers/<nomeserver>/firewallrules

HTTP/1.1

Parametri URL

Non è stato utilizzato alcun parametro URL con questa operazione.

Intestazioni della richiesta

Nella tabella seguente vengono descritte le intestazioni obbligatorie e facoltative della richiesta.

 

Intestazione della richiesta Descrizione

x-ms-version

Obbligatoria. Specifica la versione dell'operazione da utilizzare per questa richiesta. Questa intestazione deve essere impostata su 1.0.

Corpo della richiesta

Per l'operazione di recupero regole firewall del server non viene utilizzato il corpo di una richiesta.

Risposta

Nella risposta sono inclusi un codice di stato HTTP, un set di intestazioni per la risposta e il corpo di una risposta.

Codice di stato

Quando un'operazione di recupero regole firewall del server viene completata correttamente, viene restituito un codice di stato HTTP 200 (Operazione completata).

Nella tabella seguente sono elencati alcuni potenziali errori relativi a questa operazione.

 

Codice di errore Codice di stato HTTP Messaggio utente

40638

Richiesta non valida (400)

ID sottoscrizione non valido <id-sottoscrizione>. La sottoscrizione non esiste.

40640

Errore interno del server (500)

Eccezione imprevista rilevata dal server.

40642

Servizio non disponibile (503)

Server attualmente troppo occupato. Riprovare più tardi.

40643

Richiesta non valida (400)

Valore dell'intestazione x-ms-version specificato non valido.

40644

Accesso negato (403)

Impossibile autorizzare l'accesso alla sottoscrizione specificata.

40645

Richiesta non valida (400)

Il nomeserver <nomeserver> non può essere vuoto o Null. Può essere costituito solo da lettere in minuscolo comprese tra a e z, numeri da 0 a 9 e dal segno meno (-) che non può essere la parte iniziale o finale del nome.

40646

Richiesta non valida (400)

L'ID sottoscrizione non può essere vuoto.

40647

Richiesta non valida (400)

Server <nomeserver> non disponibile per la sottoscrizione <id-sottoscrizione>.

40648

Servizio non disponibile (503)

Esecuzione di un numero eccessivo di richieste. Riprovare più tardi.


Per ulteriori informazioni sui codici di stato per l'API di gestione di Database SQL, vedere Codici ed errori di stato.

Intestazioni della risposta

Nella risposta per questa operazione sono incluse le intestazioni riportate di seguito; inoltre, possono essere incluse intestazioni HTTP standard aggiuntive. Tutte le intestazioni standard sono conformi alla specifica del protocollo HTTP/1.1.

 

Intestazione della risposta Descrizione

x-ms-request-id

Valore che consente di identificare in modo univoco una richiesta nel servizio di gestione di database. Questo ID richiesta viene utilizzato per la traccia della richiesta. Se si verifica un errore per il quale è necessario contattare il Supporto tecnico Microsoft, sarà necessario fornire l'ID richiesta per la traccia e la risoluzione dell'errore pertinente la richiesta.

L'API di gestione di Database SQL non supporta chiamate asincrone.

Corpo della risposta

Il formato del corpo della risposta è il seguente:

<FirewallRules xmlns="http://schemas.microsoft.com/sqlazure/2010/12/">
  <FirewallRule>
    <Name>Firewall Rule Name</Name>
    <StartIpAddress>Start IP Addesss Range</StartIpAddress>
    <EndIpAddress>End IP address Range</EndIpAddress>
  </FirewallRule>
</FirewallRules>

Risposta di esempio

Di seguito è riportato il corpo di una risposta di esempio:

<FirewallRules xmlns="http://schemas.microsoft.com/sqlazure/2010/12/">
  <FirewallRule>
    <Name>Test_Firewall_Rule</Name>
    <StartIpAddress>10.20.30.0</StartIpAddress>
    <EndIpAddress>10.20.30.100</EndIpAddress>
  </FirewallRule>
</FirewallRules>

Esempio di codice

Di seguito è riportato un semplice esempio di codice per la chiamata a questa operazione da un'applicazione console C#. Nel codice vengono utilizzate le classi System.Net.HttpWebRequest e System.Security.Cryptography.X509Certificate2 per l'invio della richiesta tramite il certificato di chiave privata.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Security.Cryptography.X509Certificates;
using System.IO;
using System.Xml;

namespace SQLAzureDatabaseManagement
{
    class Program
    {

        static void Main(string[] args)
        {
            string certFile;
            string certPassword;
            string subscriptionId;
            string ServerName;

            if (args.Length != 4)
            {
                Console.WriteLine("\nInsufficient Arguments.\n");
                Console.WriteLine("Expected CertfilePath, CertfilePassword, SubscriptionID, and ServerName.\n");
                return;
            }
            else
            {
                certFile = args[0];
                certPassword = args[1];
                subscriptionId = args[2];
                ServerName = args[3];
            }



            //=========================================================================//
            //=== Execute SQL Database Server and Firewall Rules Management Operations ===//
            //=========================================================================//

            // List the Server-Level Firewall rules for a server
            GetServerFirewallRules(certFile, certPassword, subscriptionId, ServerName);
        }


        //===============================================================================================================//
        //===                                                                                                         ===//
        //=== GetServerFirewallRules                                                                                  ===//
        //===                                                                                                         ===//
        //=== This function returns a list of all the server-level firewall rules for the specified SQL Database server.              ===//        
        //===                                                                                                         ===//
        //=== Input Parameters:                                                                                       ===//
        //===                                                                                                         ===//
        //===   string certFilename : Full path to the Personal Information Exchange (.pfx) file which holds the      ===//
        //===                         private key for the certificate. The public key file must already be associated ===//
        //===                         to the subscription.                                                            ===//
        //===                                                                                                         ===//
        //===   string certPassword : The password on the Personal Information Exchange (.pfx) file.                  ===//
        //===                                                                                                         ===//
        //===   string subscriptionId : This is the subscription id GUID in its string form.                          ===//
        //===                                                                                                         ===//
        //===   string Server : The SQL Database server that will have its server-level firewall rules returned.                      ===//
        //===                                                                                                         ===//
        //=== Output:                                                                                                 ===//
        //===                                                                                                         ===//
        //===   The output of this function is written to the console. The output includes:                           ===//
        //===                                                                                                         ===//
        //===     The subscription id passed to this function.                                                        ===//
        //===                                                                                                         ===//
        //===     The server name passed to this function.                                                            ===//
        //===                                                                                                         ===//
        //===     The x-ms-request-id header returned from the REST API call.                                         ===//
        //===                                                                                                         ===//
        //===     The HTTP Status code returned from the REST API call.                                               ===//
        //===                                                                                                         ===//
        //===     The response body returned from the REST API call that contains the server-level firewall rule list.             ===//
        //===                                                                                                         ===//
        //===============================================================================================================//

        static void GetServerFirewallRules(string certFilename, string certPassword, string subscriptionId, string Server)
        {
            Console.WriteLine("\n======================================");
            Console.WriteLine("=== GetServerFirewallRules Request ===");
            Console.WriteLine("======================================\n");
            Console.WriteLine("Subscription : {0}", subscriptionId);
            Console.WriteLine("Server : {0}\n", Server);

            try
            {
                string url = string.Format("https://management.database.windows.net:8443/{0}/servers/{1}/firewallrules", subscriptionId, Server);
                HttpWebRequest webRequest = HttpWebRequest.Create(url) as HttpWebRequest;

                webRequest.ClientCertificates.Add(new X509Certificate2(certFilename, certPassword));
                webRequest.Headers["x-ms-version"] = "1.0";
                webRequest.Method = "GET";

                //=== No Request Payload needed to return server-level firewall rule list ===//

                using (WebResponse webResponse = webRequest.GetResponse())
                {
                    //=== x-ms-request-id is useful for troubleshooting request failures with Microsoft ===//
                    Console.WriteLine("Response x-ms-request-id : {0}", webResponse.Headers["x-ms-request-id"]);
                    Console.WriteLine("HttpStatusCode = {0}\n", (int)((HttpWebResponse)webResponse).StatusCode);

                    using (Stream stream = webResponse.GetResponseStream())
                    {
                        using (StreamReader sr = new StreamReader(stream))
                        {
                            Console.WriteLine(sr.ReadToEnd());
                        }
                    }
                }
            }


            //====================================================================================//
            //=== Catch WebExceptions. The SQL Database Management Service will          ===//
            //=== provide detailed error information in the response stream for WebExceptions. ===//
            //====================================================================================//

            catch (WebException webEx)
            {
                HttpWebResponse errorResponse = (HttpWebResponse)webEx.Response;
                Console.WriteLine(string.Format("HttpStatusCode = {0}", (int)errorResponse.StatusCode));

                try
                {
                    using (Stream errorResponseStream = errorResponse.GetResponseStream())
                    {
                        using (StreamReader sr = new StreamReader(errorResponseStream))
                        {
                            Console.WriteLine(sr.ReadToEnd());
                        }
                    }
                }
                catch (Exception innerEx)
                {
                    Console.WriteLine(innerEx.ToString());
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString() + "\n");
            }
        }

    }
}


Compilazione del codice di esempio

Il codice di esempio può essere aggiunto a un progetto di applicazione console ed essere compilato nell'ambiente di sviluppo integrato (IDE, Integrated Development Environment) di Visual Studio. In alternativa, è possibile eseguire la compilazione dalla riga di comando di un prompt dei comandi utilizzando il compilatore Visual C# disponibile anche in .NET Framework.

Nella compilazione mostrata di seguito, il codice è stato copiato in un nuovo file di testo denominato GetServerFirewallRules.cs e compilato dalla riga di comando. Questa compilazione, inoltre, consente di generare informazioni sul debug.

C:\Test>C:\Windows\Microsoft.NET\Framework64\v4.0.30319\csc /debug /out:GetServerFirewallRules.exe GetServerFirewallRules.cs

Microsoft (R) Visual C# 2010 Compiler version 4.0.30319.1
Copyright (C) Microsoft Corporation. All rights reserved.


C:\Test>dir
 Volume in drive C has no label.
 Volume Serial Number is 5471-ED89

 Directory of C:\Test

02/15/2011  07:00 PM    <DIR>          .
02/15/2011  07:00 PM    <DIR>          ..
02/15/2011  07:00 PM             6,656 GetServerFirewallRules.exe
02/15/2011  07:00 PM            13,824 GetServerFirewallRules.pdb

Esecuzione del codice di esempio

Nell'esempio seguente viene eseguito il codice di esempio tramite il certificato di chiave privata MyCert.pfx per l'autenticazione. Il certificato di chiave pubblica (MyCert.cer) è già stato aggiunto alla sottoscrizione. Per ulteriori informazioni sull'autenticazione, vedere Autenticazione delle richieste API di gestione di database SQL di Windows Azure.

L'identificatore univoco globale 2eae7c21-ffd1-49e4-ac22-39095e0b9f02 è un ID sottoscrizione di Windows Azure di esempio. Il provisioning del server Database SQL, l1ej7qgrem, è già stato eseguito per questa sottoscrizione. La richiesta di restituzione di tutte le regole firewall di livello server che controllano l'accesso a tale server viene inviata dalla riga di comando mostrata di seguito. Nell'XML mostrato viene indicata la risposta contenente una regola firewall di livello server denominata TestFirewallRule.

C:\Test>GetServerFirewallRules C:\SecureStore\MyCert.pfx MyCertPassword 2eae7c21-ffd1-49e4-ac22-39095e0b9f02 l1ej7qgrem

======================================
=== GetServerFirewallRules Request ===
======================================

Subscription : 2eae7c21-ffd1-49e4-ac22-39095e0b9f02
Server : l1ej7qgrem

Response x-ms-request-id : 29e68b38-ed6f-4a59-b10e-de4e14068c26
HttpStatusCode = 200

<FirewallRules xmlns="http://schemas.microsoft.com/sqlazure/2010/12/">
  <FirewallRule>
    <Name>TestFirewallRule</Name>
    <StartIpAddress>10.20.30.0</StartIpAddress>
    <EndIpAddress>10.20.30.255</EndIpAddress>
  </FirewallRule>
</FirewallRules>

Vedere anche

Il documento è risultato utile?
(1500 caratteri rimanenti)
Grazie per i commenti inviati.

Aggiunte alla community

Microsoft sta conducendo un sondaggio in linea per comprendere l'opinione degli utenti in merito al sito Web di MSDN. Se si sceglie di partecipare, quando si lascia il sito Web di MSDN verrà visualizzato il sondaggio in linea.

Si desidera partecipare?
Mostra:
© 2014 Microsoft. Tutti i diritti riservati.