Exportar (0) Imprimir
Expandir todo
Este tema aún no ha recibido ninguna valoración - Valorar este tema

Enumerar reglas de firewall de nivel de servidor

La operación Obtener reglas de firewall de servidor recupera una lista de todas las reglas de firewall de nivel de servidor de un servidor Base de datos SQL perteneciente a una suscripción.

Solicitud

La solicitud Obtener reglas de firewall de servidor debe especificarse como se indica a continuación. Reemplace <idDeSuscripción> por su identificador de suscripción y <nombreDeServidor> por el nombre del servidor que habrá devuelto su lista de reglas de firewall de nivel de servidor.

 

Método URI de solicitud Versión de HTTP

GET

https://management.database.windows.net:8443/<idDeSuscripción>/servers/<nombreDeServidor>/firewallrules

HTTP/1.1

Parámetros de URL

No se utilizan parámetros de URL con esta operación.

Encabezados de solicitud

En la tabla siguiente se describen los encabezados de solicitud requeridos y opcionales.

 

Encabezado de solicitud Descripción

x-ms-version

Requerido Especifica la versión de la operación que se utiliza para esta solicitud. Este encabezado debe establecerse en 1.0.

Cuerpo de solicitud

La operación Obtener reglas de firewall de servidor no utiliza un cuerpo de solicitud.

Respuesta

La respuesta incluye un código de estado HTTP, un conjunto de encabezados de respuesta y un cuerpo de respuesta.

Código de estado

Una operación Obtener reglas de firewall de servidor correcta devolverá el código de estado HTTP 200 (Correcto).

Entre los posibles errores de esta operación se incluyen los que se enumeran en la tabla siguiente.

 

Código de error Código de estado HTTP Mensaje de usuario

40638

Solicitud incorrecta (400)

Identificador de suscripción <idDeSuscripción> no válido. La suscripción no existe.

40640

Error interno del servidor (500)

El servidor encontró una excepción inesperada.

40642

Servicio no disponible (503)

El servidor está actualmente demasiado ocupado. Vuelva a intentarlo más tarde.

40643

Solicitud incorrecta (400)

El valor de encabezado x-ms-version especificado no es válido.

40644

Prohibido (403)

No se pudo autorizar el acceso a la suscripción especificada.

40645

Solicitud incorrecta (400)

El nombre del servidor <nombreDeServidor> no puede estar vacío ni ser nulo. Solo puede estar formado por letras en minúscula "a" a "z", números de 0 a 9 y el guion. El guion no puede estar al principio o al final del nombre.

40646

Solicitud incorrecta (400)

El identificador de suscripción no puede estar vacío.

40647

Solicitud incorrecta (400)

La suscripción <idDeSuscripción> no tiene servidor <nombreDeServidor>.

40648

Servicio no disponible (503)

Se han realizado demasiadas solicitudes. Vuelva a intentarlo más tarde.


Para obtener más información acerca de los códigos de estado para la API de administración de Base de datos SQL, vea Códigos de estado y de error.

Encabezados de respuesta

La respuesta para esta operación incluye los encabezados siguientes. La respuesta también puede incluir otros encabezados HTTP estándar. Todos los encabezados estándar son conformes a la especificación del protocolo HTTP/1.1.

 

Encabezado de respuesta Descripción

x-ms-request-id

Valor que identifica de forma exclusiva una solicitud realizada ante el servicio de administración de bases de datos. Este identificador de solicitud se utiliza para el seguimiento de solicitudes. Si se produce un error que requiere que el usuario establezca contacto con el servicio de soporte técnico de Microsoft, debe proporcionarse a Microsoft el identificador de solicitud para recibir asistencia acerca del seguimiento y resolución del error de la solicitud.

La API de administración de Base de datos SQL no admite llamadas asincrónicas.

Cuerpo de respuesta

El formato del cuerpo de respuesta es el siguiente:

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

Respuesta de ejemplo

A continuación se muestra un cuerpo de respuesta de ejemplo:

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

Ejemplo de código

El código siguiente proporciona un ejemplo sencillo de llamada a esta operación desde una aplicación de consola de C#. En este código se utilizan las clases System.Net.HttpWebRequest y System.Security.Cryptography.X509Certificate2 para enviar la solicitud utilizando el certificado de clave privada.

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");
            }
        }

    }
}


Crear el código de ejemplo

El código de ejemplo se puede agregar a un proyecto de aplicación de consola e integrar en el entorno de desarrollo integrado (IDE) de Visual Studio, o bien puede compilar desde la línea de comandos de un símbolo del sistema utilizando el compilador de Visual C# que también se incluye con .NET Framework.

En esta compilación que se muestra más abajo, el código se copió en un nuevo archivo de texto denominado GetServerFirewallRules.cs y se compiló desde la línea de comandos. Esta compilación también genera información de depuración.

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

Ejecutar el código de ejemplo

En el ejemplo siguiente se ejecuta el código de ejemplo utilizando el certificado de clave privada MyCert.pfx para la autenticación. El certificado de clave pública (MyCert.cer) ya se ha agregado a la suscripción. Para obtener más información acerca de la autenticación, vea Autenticar solicitudes de API de administración de Base de datos SQL de Windows Azure.

El identificador único global 2eae7c21-ffd1-49e4-ac22-39095e0b9f02 es un identificador de suscripción de ejemplo de Windows Azure. Esta suscripción ya tiene aprovisionado el servidor Base de datos SQL, l1ej7qgrem. La línea de comandos que se muestra más abajo envía la solicitud para devolver todas las reglas de firewall de nivel de servidor que controlan el acceso a ese servidor. El XML mostrado es la respuesta que contiene una regla de firewall de nivel de servidor denominada 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>

Vea también

¿Te ha resultado útil?
(Caracteres restantes: 1500)
Gracias por sus comentarios

Adiciones de comunidad

Mostrar:
© 2014 Microsoft. Reservados todos los derechos.