Configuración de las cadenas de conexión de Azure StorageConfigure Azure Storage connection strings

Una cadena de conexión incluye la información de autenticación que requiere una aplicación para acceder a los datos de una cuenta de Azure Storage en tiempo de ejecución.A connection string includes the authentication information required for your application to access data in an Azure Storage account at runtime. Las cadenas de conexión se pueden configurar para:You can configure connection strings to:

  • Conectarse al emulador de Azure Storage.Connect to the Azure storage emulator.
  • Acceder a la cuenta de Azure Storage.Access a storage account in Azure.
  • Acceder a recursos especificados en Azure a través de una firma de acceso compartido (SAS).Access specified resources in Azure via a shared access signature (SAS).

Importante

La clave de la cuenta de almacenamiento es similar a la contraseña raíz de la cuenta de almacenamiento.Your storage account key is similar to the root password for your storage account. Siempre debe proteger la clave de la cuenta.Always be careful to protect your account key. Evite distribuirla a otros usuarios, codificarla de forma rígida o guardarla en un archivo de texto al que puedan acceder otros usuarios.Avoid distributing it to other users, hard-coding it, or saving it anywhere in plaintext that is accessible to others. Vuelva a generar la clave de la cuenta mediante el Azure Portal si cree que puede verse comprometida.Regenerate your account key using the Azure portal if you believe it may have been compromised.

Los tokens de SAS (Firma de acceso compartido) son fundamentales para proteger, al igual que las claves de acceso de la cuenta.SAS (Shared Access Signature) tokens are critical to protect just like the account access keys. A la vez que proporciona granularidad, SAS concede a los clientes acceso a los recursos de la cuenta de almacenamiento, por lo que no debe compartirse públicamente.While providing granularity SAS grants clients access to the resources in your storage account and should not be shared publicly. Cuando sea necesario compartirla para solucionar problemas, considere la posibilidad de usar una versión censurada de los archivos de registro o eliminar los tokens de SAS (si existen) de dichos archivos, y asegúrese de que las capturas de pantalla tampoco incluyan información de SAS.When sharing is required for troubleshooting reasons consider using a redacted version of any log files or deleting the SAS tokens (if present) from the log files, and make sure the screenshots don't contain the SAS information either.

Microsoft recomienda usar la autenticación de Azure Active Directory (Azure AD) para las aplicaciones de Blob Storage y Queue Storage (versión preliminar) cuando sea posible para mejorar la seguridad.Microsoft recommends using Azure Active Directory (Azure AD) authentication for your Blob and Queue storage applications (preview) when possible for enhanced security. Para obtener más información, consulte Autenticación del acceso a blobs y colas de Azure con Azure Active Directory (versión preliminar).For more information, see Authenticate access to Azure blobs and queues using Azure Active Directory (preview).

Almacenamiento de la cadena de conexiónStoring your connection string

La aplicación necesita acceder a la cadena de conexión en tiempo de ejecución para autorizar las solicitudes realizadas a Azure Storage.Your application needs to access the connection string at runtime to authorize requests made to Azure Storage. Tiene varias opciones para almacenar una cadena de conexión:You have several options for storing your connection string:

  • Una aplicación que se ejecuta en el escritorio o en un dispositivo puede almacenar la cadena de conexión en un archivo app.config o web.config.An application running on the desktop or on a device can store the connection string in an app.config or web.config file. Agregue la cadena de conexión a la sección AppSettings en estos archivos.Add the connection string to the AppSettings section in these files.
  • Una aplicación que se ejecuta en un servicio en la nube de Azure puede almacenar la cadena de conexión en el archivo de esquema de configuración de servicio de Azure (.cscfg).An application running in an Azure cloud service can store the connection string in the Azure service configuration schema (.cscfg) file. Agregue la cadena de conexión a la sección ConfigurationSettings del archivo de configuración del servicio.Add the connection string to the ConfigurationSettings section of the service configuration file.
  • La cadena de conexión se puede usar directamente en el código.You can use your connection string directly in your code. Sin embargo, es aconsejable que en la mayoría de los escenarios se recomienda almacenar la cadena de configuración en un archivo de configuración.However, we recommend that you store your connection string in a configuration file in most scenarios.

El almacenamiento de la cadena de conexión en un archivo de configuración facilita la actualización de la cadena de conexión para que alterne entre el emulador de Storage y una cuenta de Azure Storage en la nube.Storing your connection string in a configuration file makes it easy to update the connection string to switch between the storage emulator and an Azure storage account in the cloud. Solo necesitará editar la cadena de conexión para apuntar al entorno de destino.You only need to edit the connection string to point to your target environment.

Puede usar el Administrador de configuración de Microsoft Azure para acceder a la cadena de conexión en tiempo de ejecución independientemente de dónde se ejecute la aplicación.You can use the Microsoft Azure Configuration Manager to access your connection string at runtime regardless of where your application is running.

Creación de una cadena de conexión para el emulador de StorageCreate a connection string for the storage emulator

El emulador de almacenamiento es compatible con una sola cuenta fija y una clave de autenticación ya conocida para autenticación de clave compartida.The storage emulator supports a single fixed account and a well-known authentication key for Shared Key authentication. Esta cuenta y clave son las únicas credenciales de clave compartida que se admiten para su uso con el emulador de almacenamiento.This account and key are the only Shared Key credentials permitted for use with the storage emulator. Son las siguientes:They are:

Account name: devstoreaccount1
Account key: Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==

Nota

La clave de autenticación admitida por el emulador de almacenamiento está pensada para comprobar únicamente la funcionalidad de su código de autenticación de cliente.The authentication key supported by the storage emulator is intended only for testing the functionality of your client authentication code. No responde a ningún propósito de seguridad.It does not serve any security purpose. A parte, no puede utilizar la cuenta de almacenamiento y la clave de producción con el emulador.You cannot use your production storage account and key with the storage emulator. Se debe tener en cuenta que no se puede utilizar la cuenta de desarrollo con datos de producción.You should not use the development account with production data.

El emulador de almacenamiento admite solo la conexión a través de HTTP.The storage emulator supports connection via HTTP only. Sin embargo, HTTPS es el protocolo recomendado para obtener acceso a recursos en una cuenta de producción de Azure Storage.However, HTTPS is the recommended protocol for accessing resources in a production Azure storage account.

Conexión a la cuenta del emulador mediante un acceso directoConnect to the emulator account using a shortcut

La manera más fácil de conectarse al emulador de almacenamiento desde su aplicación consiste en configurar, dentro del archivo de configuración de la aplicación, una cadena de conexión que haga referencia al método abreviado UseDevelopmentStorage=true.The easiest way to connect to the storage emulator from your application is to configure a connection string in your application's configuration file that references the shortcut UseDevelopmentStorage=true. Este es un ejemplo de una cadena de conexión al emulador de almacenamiento en un archivo app.config:Here's an example of a connection string to the storage emulator in an app.config file:

<appSettings>
  <add key="StorageConnectionString" value="UseDevelopmentStorage=true" />
</appSettings>

Conexión a la cuenta del emulador con el nombre de cuenta y la clave conocidosConnect to the emulator account using the well-known account name and key

Para crear una cadena de conexión que hace referencia al nombre de la cuenta del emulador y la clave, debe especificar los puntos de conexión para cada uno de los servicios que desea usar desde el emulador en la cadena de conexión.To create a connection string that references the emulator account name and key, you must specify the endpoints for each of the services you wish to use from the emulator in the connection string. Esto es necesario para que la cadena de conexión haga referencia a los extremos del emulador, que son diferentes de los de una cuenta de almacenamiento de producción.This is necessary so that the connection string will reference the emulator endpoints, which are different than those for a production storage account. Por ejemplo, el valor de la cadena de conexión será similar al siguiente:For example, the value of your connection string will look like this:

DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;
AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;
BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;
TableEndpoint=http://127.0.0.1:10002/devstoreaccount1;
QueueEndpoint=http://127.0.0.1:10001/devstoreaccount1;

Este valor es idéntico al acceso directo mostrado anteriormente, UseDevelopmentStorage=true.This value is identical to the shortcut shown above, UseDevelopmentStorage=true.

Especificación de un servidor proxy HTTPSpecify an HTTP proxy

También puede especificar que se use un proxy HTTP cuando se está probando el servicio con el emulador de almacenamiento.You can also specify an HTTP proxy to use when you're testing your service against the storage emulator. Esto puede ser útil para observar solicitudes y respuestas HTTP mientras está depurando operaciones con los servicios de almacenamiento.This can be useful for observing HTTP requests and responses while you're debugging operations against the storage services. Para especificar un proxy, agregue la opción DevelopmentStorageProxyUri a la cadena de conexión y establezca su valor en el URI del proxy.To specify a proxy, add the DevelopmentStorageProxyUri option to the connection string, and set its value to the proxy URI. Por ejemplo, esta es una cadena de conexión que apunta al emulador de almacenamiento y configura un proxy HTTP:For example, here is a connection string that points to the storage emulator and configures an HTTP proxy:

UseDevelopmentStorage=true;DevelopmentStorageProxyUri=http://myProxyUri

Para más información acerca del emulador de Storage, consulte Uso del emulador de Azure Storage para desarrollo y pruebas.For more information about the storage emulator, see Use the Azure storage emulator for development and testing.

Creación de una cadena de conexión para una cuenta de Azure StorageCreate a connection string for an Azure storage account

Para crear una cadena de conexión para una cuenta de Azure Storage, use el siguiente formato.To create a connection string for your Azure storage account, use the following format. Indique si desea conectarse a la cuenta de almacenamiento a través de HTTPS (recomendado) o HTTP, reemplace myAccountName por el nombre de la cuenta de almacenamiento y reemplace myAccountKey por la clave de acceso a la cuenta:Indicate whether you want to connect to the storage account through HTTPS (recommended) or HTTP, replace myAccountName with the name of your storage account, and replace myAccountKey with your account access key:

DefaultEndpointsProtocol=[http|https];AccountName=myAccountName;AccountKey=myAccountKey

Por ejemplo, la cadena de conexión podría ser similar a la siguiente:For example, your connection string might look similar to:

DefaultEndpointsProtocol=https;AccountName=storagesample;AccountKey=<account-key>

Aunque Azure Storage admite HTTP y HTTPS en una cadena de conexión, se recomienda encarecidamente utilizar HTTPS.Although Azure Storage supports both HTTP and HTTPS in a connection string, HTTPS is highly recommended.

Sugerencia

Las cadenas de conexión de la cuenta de almacenamiento se pueden encontrar en Azure Portal.You can find your storage account's connection strings in the Azure portal. Navegue a CONFIGURACIÓN > Claves de acceso en la hoja del menú de la cuenta de almacenamiento para ver las cadenas de conexión de las claves de acceso principal y secundaria.Navigate to SETTINGS > Access keys in your storage account's menu blade to see connection strings for both primary and secondary access keys.

Creación de una cadena de conexión con una firma de acceso compartidoCreate a connection string using a shared access signature

Si posee una dirección URL de firma de acceso compartido (SAS) que le concede acceso a los recursos de una cuenta de almacenamiento, puede utilizar la SAS en una cadena de conexión.If you possess a shared access signature (SAS) URL that grants you access to resources in a storage account, you can use the SAS in a connection string. Dado que SAS incluye la información necesaria para autenticar la solicitud, una cadena de conexión con un SAS proporciona el protocolo, el punto de conexión de servicio y las credenciales necesarias para acceder al recurso.Because the SAS contains the information required to authenticate the request, a connection string with a SAS provides the protocol, the service endpoint, and the necessary credentials to access the resource.

Para crear una cadena de conexión que incluya una firma de acceso compartido, especifique la cadena con el siguiente formato:To create a connection string that includes a shared access signature, specify the string in the following format:

BlobEndpoint=myBlobEndpoint;
QueueEndpoint=myQueueEndpoint;
TableEndpoint=myTableEndpoint;
FileEndpoint=myFileEndpoint;
SharedAccessSignature=sasToken

Cada punto de conexión de servicio es opcional, aunque la cadena de conexión debe contener al menos uno.Each service endpoint is optional, although the connection string must contain at least one.

Nota

Se recomienda usar HTTPS con SAS.Using HTTPS with a SAS is recommended as a best practice.

Si está especificando SAS en una cadena de conexión en un archivo de configuración, debe codificar caracteres especiales en la dirección URL.If you are specifying a SAS in a connection string in a configuration file, you may need to encode special characters in the URL.

Ejemplo de SAS de servicioService SAS example

Este es un ejemplo de una cadena de conexión que incluye un SAS de servicio para el almacenamiento de blobs:Here's an example of a connection string that includes a service SAS for Blob storage:

BlobEndpoint=https://storagesample.blob.core.windows.net;
SharedAccessSignature=sv=2015-04-05&sr=b&si=tutorial-policy-635959936145100803&sig=9aCzs76n0E7y5BpEi2GvsSv433BZa22leDOZXX%2BXXIU%3D

Aquí se muestra un ejemplo de la misma cadena de conexión con codificación de caracteres especiales:And here's an example of the same connection string with encoding of special characters:

BlobEndpoint=https://storagesample.blob.core.windows.net;
SharedAccessSignature=sv=2015-04-05&amp;sr=b&amp;si=tutorial-policy-635959936145100803&amp;sig=9aCzs76n0E7y5BpEi2GvsSv433BZa22leDOZXX%2BXXIU%3D

Ejemplo de SAS de cuentaAccount SAS example

Este es un ejemplo de una cadena de conexión que incluye un SAS de cuenta para el almacenamiento de blobs y archivos:Here's an example of a connection string that includes an account SAS for Blob and File storage. Tenga en cuenta que se especifican los puntos de conexión para ambos servicios:Note that endpoints for both services are specified:

BlobEndpoint=https://storagesample.blob.core.windows.net;
FileEndpoint=https://storagesample.file.core.windows.net;
SharedAccessSignature=sv=2015-07-08&sig=iCvQmdZngZNW%2F4vw43j6%2BVz6fndHF5LI639QJba4r8o%3D&spr=https&st=2016-04-12T03%3A24%3A31Z&se=2016-04-13T03%3A29%3A31Z&srt=s&ss=bf&sp=rwl

Aquí se muestra un ejemplo de la misma cadena de conexión con codificación de dirección URL:And here's an example of the same connection string with URL encoding:

BlobEndpoint=https://storagesample.blob.core.windows.net;
FileEndpoint=https://storagesample.file.core.windows.net;
SharedAccessSignature=sv=2015-07-08&amp;sig=iCvQmdZngZNW%2F4vw43j6%2BVz6fndHF5LI639QJba4r8o%3D&amp;spr=https&amp;st=2016-04-12T03%3A24%3A31Z&amp;se=2016-04-13T03%3A29%3A31Z&amp;srt=s&amp;ss=bf&amp;sp=rwl

Creación de una cadena de conexión para un punto de conexión de Storage explícitoCreate a connection string for an explicit storage endpoint

En una cadena de conexión se pueden especificar puntos de conexión de servicio explícitos, en lugar de usar los predeterminados.You can specify explicit service endpoints in your connection string instead of using the default endpoints. Para crear una cadena de conexión que especifique un punto de conexión explícito, especifique el punto de conexión de servicio completo para cada servicio, incluida la especificación de protocolo (HTTPS (recomendado) o HTTP) con el formato siguiente:To create a connection string that specifies an explicit endpoint, specify the complete service endpoint for each service, including the protocol specification (HTTPS (recommended) or HTTP), in the following format:

DefaultEndpointsProtocol=[http|https];
BlobEndpoint=myBlobEndpoint;
FileEndpoint=myFileEndpoint;
QueueEndpoint=myQueueEndpoint;
TableEndpoint=myTableEndpoint;
AccountName=myAccountName;
AccountKey=myAccountKey

Un escenario en el que puede desear especificar un punto de conexión explícito es cuando ha asignado un punto de conexión de Blob Storage a un dominio personalizado.One scenario where you might wish to specify an explicit endpoint is when you've mapped your Blob storage endpoint to a custom domain. En ese caso, puede especificar un punto de conexión personalizado para Blob Storage en la cadena de conexión.In that case, you can specify your custom endpoint for Blob storage in your connection string. También puede especificar los puntos de conexión predeterminados para los demás servicios, en caso de que la aplicación los use.You can optionally specify the default endpoints for the other services if your application uses them.

Este es un ejemplo de una cadena de conexión que especifica un punto de conexión explícito para Blob service:Here is an example of a connection string that specifies an explicit endpoint for the Blob service:

# Blob endpoint only
DefaultEndpointsProtocol=https;
BlobEndpoint=http://www.mydomain.com;
AccountName=storagesample;
AccountKey=<account-key>

Este ejemplo especifica puntos de conexión explícitos para todos los servicios, lo que incluye un dominio personalizado para Blob service:This example specifies explicit endpoints for all services, including a custom domain for the Blob service:

# All service endpoints
DefaultEndpointsProtocol=https;
BlobEndpoint=http://www.mydomain.com;
FileEndpoint=https://myaccount.file.core.windows.net;
QueueEndpoint=https://myaccount.queue.core.windows.net;
TableEndpoint=https://myaccount.table.core.windows.net;
AccountName=storagesample;
AccountKey=<account-key>

Los valores del punto de conexión de una cadena de conexión se usan para construir los identificadores URI de solicitud para los servicios de Storage e indicar el formato de los identificadores URI que se devuelven al código.The endpoint values in a connection string are used to construct the request URIs to the storage services, and dictate the form of any URIs that are returned to your code.

Si ha asignado un punto de conexión de Storage a un dominio personalizado y omite dicho punto en una cadena de conexión, no podrá usarla para acceder a los datos de dicho servicio desde el código.If you've mapped a storage endpoint to a custom domain and omit that endpoint from a connection string, then you will not be able to use that connection string to access data in that service from your code.

Importante

Los valores del punto de conexión de servicio de las cadenas de conexión deben ser identificadores URI con el formato correcto, entre los que se incluyen https:// (recomendado) o http://.Service endpoint values in your connection strings must be well-formed URIs, including https:// (recommended) or http://. Dado que Azure Storage aún no admite HTTPS en dominios personalizados, debe especificar http:// para los identificadores URI de todos los puntos de conexión que apunten a un dominio personalizado.Because Azure Storage does not yet support HTTPS for custom domains, you must specify http:// for any endpoint URI that points to a custom domain.

Creación de una cadena de conexión con el sufijo de un punto de conexiónCreate a connection string with an endpoint suffix

Para crear una cadena de conexión para un servicio de Storage en regiones o instancias con sufijos de punto de conexión diferentes, como Azure China o Azure Government, utilice el siguiente formato de cadena de conexión.To create a connection string for a storage service in regions or instances with different endpoint suffixes, such as for Azure China or Azure Government, use the following connection string format. Indique si desea conectarse a la cuenta de almacenamiento a través de HTTP (recomendado) o HTTPS, reemplace myAccountName por el nombre de la cuenta de almacenamiento, reemplace myAccountKey por la clave de acceso a la cuenta y reemplace mySuffix por el sufijo del identificador URI:Indicate whether you want to connect to the storage account through HTTPS (recommended) or HTTP, replace myAccountName with the name of your storage account, replace myAccountKey with your account access key, and replace mySuffix with the URI suffix:

DefaultEndpointsProtocol=[http|https];
AccountName=myAccountName;
AccountKey=myAccountKey;
EndpointSuffix=mySuffix;

Este es un ejemplo de cadena de conexión para los servicios de Storage en Azure China:Here's an example connection string for storage services in Azure China:

DefaultEndpointsProtocol=https;
AccountName=storagesample;
AccountKey=<account-key>;
EndpointSuffix=core.chinacloudapi.cn;

Análisis de una cadena de conexiónParsing a connection string

La biblioteca del Administrador de configuración de Microsoft Azure para .NET proporciona una clase para analizar una cadena de conexión desde un archivo de configuración.The Microsoft Azure Configuration Manager Library for .NET provides a class for parsing a connection string from a configuration file. La clase CloudConfigurationManager analiza las opciones de configuración con independencia de si la aplicación cliente se ejecuta en el equipo de escritorio, en un dispositivo móvil, en una máquina virtual de Azure o en un servicio en la nube de Azure.The CloudConfigurationManager class parses configuration settings regardless of whether the client application is running on the desktop, on a mobile device, in an Azure virtual machine, or in an Azure cloud service.

Para hacer referencia al paquete CloudConfigurationManager, agregue la siguiente directiva using:To reference the CloudConfigurationManager package, add the following using directive:

using Microsoft.Azure; //Namespace for CloudConfigurationManager
using Microsoft.WindowsAzure.Storage;

Este es un ejemplo que muestra cómo recuperar una cadena de conexión de un archivo de configuración:Here's an example that shows how to retrieve a connection string from a configuration file:

// Parse the connection string and return a reference to the storage account.
CloudStorageAccount storageAccount = CloudStorageAccount.Parse(
    CloudConfigurationManager.GetSetting("StorageConnectionString"));

El uso del Administrador de configuración de Azure es opcional.Using the Azure Configuration Manager is optional. También se puede usar una API, como la clase ConfigurationManager de .NET Framework.You can also use an API like the .NET Framework's ConfigurationManager class.

Pasos siguientesNext steps