Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Un cadena de conexión incluye la información de autorización necesaria para que la aplicación acceda a los datos de una cuenta de Azure Storage en tiempo de ejecución mediante la autorización de clave compartida. Las cadenas de conexión se pueden configurar para:
- Conectarse al emulador de almacenamiento Azurite.
- Acceda a una cuenta de almacenamiento en Azure.
- Acceda a los recursos especificados en Azure a través de una firma de acceso compartido (SAS).
Para obtener información sobre cómo ver las claves de acceso de la cuenta y copiar un cadena de conexión, consulte Administrar claves de acceso de la cuenta de almacenamiento.
Importante
Para obtener una seguridad óptima, Microsoft recomienda usar Microsoft Entra ID con identidades administradas para autorizar solicitudes en datos de blobs, colas y tablas, siempre que sea posible. La autorización con Microsoft Entra ID e identidades administradas proporciona mayor seguridad y facilidad de uso a través de la autorización de clave compartida. Para más información sobre las identidades administradas, consulte ¿Qué son las identidades administradas para los recursos de Azure. Para obtener un ejemplo de cómo habilitar y usar una identidad administrada para una aplicación de .NET, consulte Authenticating Azure-hosted apps to Azure resources with .NET.
En el caso de los recursos hospedados fuera de Azure, como las aplicaciones locales, puede usar identidades administradas a través de Azure Arc. Por ejemplo, las aplicaciones que se ejecutan en servidores habilitados para Azure Arc pueden usar identidades administradas para conectarse a servicios Azure. Para obtener más información, consulte Autentíquese en los recursos de Azure con servidores habilitados para Azure Arc.
En escenarios en los que se usan firmas de acceso compartido (SAS), Microsoft recomienda usar una SAS de delegación de usuarios. Una SAS de delegación de usuarios está protegida con credenciales de Microsoft Entra en lugar de la clave de cuenta. Para obtener información sobre las firmas de acceso compartido, consulte Conceder acceso limitado a los datos con firmas de acceso compartido. Para obtener un ejemplo de cómo crear y usar una SAS de delegación de usuarios con .NET, consulte Crear una SAS de delegación de usuarios para un blob con .NET.
Protección de las claves de acceso
Las claves de acceso de la cuenta de almacenamiento proporcionan acceso completo a los datos de la cuenta de almacenamiento y la capacidad de generar tokens de SAS. Siempre tenga cuidado de proteger sus claves de acceso. Use Azure Key Vault para administrar y rotar las claves de forma segura. El acceso a la clave compartida concede a un usuario acceso completo a los datos de una cuenta de almacenamiento. El acceso a las claves compartidas debe estar cuidadosamente limitado y supervisado. Use tokens SAS de delegación de usuario con un ámbito de acceso limitado en escenarios en los que no se puede usar la autorización basada en Microsoft Entra ID. Evite codificar de forma rígida las claves de acceso o guardarlas en cualquier lugar en texto sin formato que sea accesible a otras personas. Rote sus claves si cree que se han podido comprometer.
Importante
Para evitar que los usuarios accedan a los datos de la cuenta de almacenamiento con una clave compartida, puede impedir la autorización con clave compartida para la cuenta de almacenamiento. Se recomienda un acceso granular a los datos con privilegios mínimos necesarios como procedimiento recomendado de seguridad. La autorización basada en Microsoft Entra ID usando identidades administradas debería usarse para escenarios que admitan OAuth. Kerberos debe usarse para Azure Files a través de SMB. Para Azure Files a través de REST, se pueden usar tokens de SAS. El acceso a la clave compartida debe deshabilitarse si no es necesario para evitar su uso accidental. Para obtener más información, consulte Prevenir la autorización por clave compartida para una cuenta de Azure Storage.
Para proteger una cuenta de Azure Storage con directivas de Acceso condicional de Microsoft Entra, debe denegar la autorización de clave compartida para la cuenta de almacenamiento.
Si ha deshabilitado el acceso con claves compartidas y está viendo la autorización de clave compartida notificada en los registros de diagnóstico, esto indica que se usa el acceso de confianza para acceder al almacenamiento. Para obtener más información, consulte Acceso confiable a los recursos registrados en su inquilino de Microsoft Entra.
Almacenar una cadena de conexión
La aplicación debe acceder al cadena de conexión en tiempo de ejecución para autorizar las solicitudes realizadas a Azure Storage. Tiene varias opciones para almacenar sus claves de acceso de la cuenta o cadena de conexión.
- Microsoft recomienda usar Microsoft Entra ID para autorizar el acceso a Azure Storage en lugar de las claves de cuenta. Si debe usar claves de cuenta, almacénelas de forma segura en Azure Key Vault. Para obtener más información, consulte Autorización de acceso a datos en Azure Storage.
- Puede almacenar la cadena de conexión en una variable de entorno.
- Una aplicación puede almacenar el cadena de conexión en un archivo app.config o web.config. Agregue el cadena de conexión a la sección AppSettings de estos archivos.
Advertencia
Almacenar las claves de acceso de la cuenta o cadena de conexión en texto no cifrado presenta un riesgo de seguridad y no se recomienda. Almacene las claves de cuenta en un formato cifrado o migre las aplicaciones para que utilicen la autorización de Microsoft Entra para acceder a la cuenta de almacenamiento.
Configuración de un cadena de conexión para Azurite
El emulador es compatible con una sola cuenta fija y una clave de autenticación ya conocida para la autenticación de clave compartida. Esta cuenta y clave son las únicas credenciales de clave compartida que se admiten para su uso con el emulador. Son las siguientes:
Account name: devstoreaccount1
Account key: Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==
Nota:
La clave de autenticación admitida por el emulador está pensada para comprobar únicamente la funcionalidad de su código de autenticación de cliente. No responde a ningún propósito de seguridad. No puede utilizar su cuenta de almacenamiento de producción y su clave con el emulador. Se debe tener en cuenta que no se puede utilizar la cuenta de desarrollo con datos de producción.
El emulador admite solo la conexión a través de HTTP. Sin embargo, HTTPS es el protocolo recomendado para acceder a los recursos de una cuenta de almacenamiento de Azure de producción.
Conéctate a la cuenta del emulador usando el acceso directo
La manera más fácil de conectarse al emulador desde la aplicación es configurar un cadena de conexión en el archivo de configuración de la aplicación que hace referencia al acceso directo UseDevelopmentStorage=true. El atajo es equivalente a la cadena de conexión del emulador, que especifica el nombre de cuenta, la clave de cuenta y los puntos de conexión del emulador para cada uno de los servicios de Azure Storage.
DefaultEndpointsProtocol=http;AccountName=devstoreaccount1;
AccountKey=Eby8vdM02xNOcqFlqUwJPLlmEtlCDXJ1OUzFT50uSRZ6IFsuFq2UVErCz4I6tq/K1SZFPTOtr/KBHBeksoGMGw==;
BlobEndpoint=http://127.0.0.1:10000/devstoreaccount1;
QueueEndpoint=http://127.0.0.1:10001/devstoreaccount1;
TableEndpoint=http://127.0.0.1:10002/devstoreaccount1;
El siguiente fragmento de código .NET muestra cómo puede utilizar el acceso directo de un método que acepta una cadena de conexión. Por ejemplo, el constructor BlobContainerClient(String, String) toma un cadena de conexión.
BlobContainerClient blobContainerClient = new BlobContainerClient("UseDevelopmentStorage=true", "sample-container");
blobContainerClient.CreateIfNotExists();
Asegúrese de que el emulador esté en ejecución antes de llamar al fragmento de código.
Para obtener más información sobre Azurite, consulte Utilice el emulador Azurite para el desarrollo local de Azure Storage.
Configuración de un cadena de conexión para una cuenta de almacenamiento de Azure
Para crear un cadena de conexión para la cuenta de almacenamiento de Azure, use el formato siguiente. 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:
DefaultEndpointsProtocol=[http|https];AccountName=myAccountName;AccountKey=myAccountKey
Por ejemplo, el cadena de conexión podría tener un aspecto similar al siguiente:
DefaultEndpointsProtocol=https;AccountName=storagesample;AccountKey=<account-key>
Aunque Azure Storage admite HTTP y HTTPS en un cadena de conexión, se recomienda encarecidamente HTTPS.
Sugerencia
Puede encontrar las cadenas de conexión de la cuenta de almacenamiento en el portal Azure. Vaya a Seguridad y redes>Claves de acceso en la configuración de la cuenta de almacenamiento para ver las cadenas de conexión de las claves de acceso principal y secundaria.
Creación de un cadena de conexión mediante una firma de acceso compartido
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 usar SAS en una cadena de conexión. Dado que el SAS contiene la información necesaria para autenticar la solicitud, una cadena de conexión con un SAS proporciona el protocolo, el punto de conexión del servicio y las credenciales necesarias para acceder al recurso.
Para crear un cadena de conexión que incluya una firma de acceso compartido, especifique la cadena con el formato siguiente:
BlobEndpoint=myBlobEndpoint;
QueueEndpoint=myQueueEndpoint;
TableEndpoint=myTableEndpoint;
FileEndpoint=myFileEndpoint;
SharedAccessSignature=sasToken
Cada punto de conexión de servicio es opcional, aunque el cadena de conexión debe contener al menos uno.
Nota:
Se recomienda usar HTTPS con SAS.
Si va a especificar una SAS en una cadena de conexión en un archivo de configuración, es posible que tenga que codificar caracteres especiales en la URL.
Ejemplo de SAS de servicio
Este es un ejemplo de un cadena de conexión que incluye una SAS de servicio para Blob Storage:
BlobEndpoint=https://storagesample.blob.core.windows.net;
SharedAccessSignature=sv=2015-04-05&sr=b&si=tutorial-policy-635959936145100803&sig=9aCzs76n0E7y5BpEi2GvsSv433BZa22leDOZXX%2BXXIU%3D
Y este es un ejemplo de la misma cadena de conexión con codificación URL:
BlobEndpoint=https://storagesample.blob.core.windows.net;
SharedAccessSignature=sv=2015-04-05&sr=b&si=tutorial-policy-635959936145100803&sig=9aCzs76n0E7y5BpEi2GvsSv433BZa22leDOZXX%2BXXIU%3D
Ejemplo de cuenta SAS
Este es un ejemplo de una cadena de conexión que incluye una SAS (firma de acceso compartido) de cuenta para almacenamiento de blobs y archivos. Tenga en cuenta que se especifican los puntos de conexión para ambos servicios:
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
Y este es un ejemplo de la misma cadena de conexión con codificación URL:
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
Crea una cadena de conexión para un punto de conexión de almacenamiento explícito
Puede especificar puntos de conexión de servicio explícitos en la cadena de conexión en lugar de usar los puntos de conexión predeterminados. Para crear un 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 del protocolo (HTTPS (recomendado) o HTTP), en el siguiente formato:
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. En ese caso, puede especificar su punto de conexión personalizado para el almacenamiento de Blobs en su cadena de conexión. También puede especificar los puntos de conexión predeterminados para los demás servicios, en caso de que la aplicación los use.
Este es un ejemplo de un cadena de conexión que especifica un punto de conexión explícito para 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:
# 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 de los extremos de un cadena de conexión se usan para construir los URIs de solicitud a los servicios de almacenamiento y determinan la forma de los URIs que tu código recibe.
Si ha asignado un punto de conexión de almacenamiento a un dominio personalizado y ha omitido ese punto de conexión de una cadena de conexión, no podrá usar esa cadena de conexión para acceder a los datos de ese servicio desde su código.
Para obtener más información sobre cómo configurar un dominio personalizado para Azure Storage, consulte Asignar un dominio personalizado a un punto de conexión de Azure Blob Storage.
Importante
Los valores del punto de servicio en las cadenas de conexión deben ser URI bien formados, los cuales incluyen https:// (recomendado) o http://.
Crear una cadena de conexión con un sufijo de punto de conexión
Para crear una cadena de conexión para un servicio de almacenamiento en regiones o instancias con diferentes sufijos de puntos de conexión, como para Microsoft Azure operado por 21Vianet o Azure Government, use el siguiente formato de cadena de conexión. 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:
DefaultEndpointsProtocol=[http|https];
AccountName=myAccountName;
AccountKey=myAccountKey;
EndpointSuffix=mySuffix;
Este es un ejemplo cadena de conexión para los servicios de almacenamiento en Azure operado por 21Vianet:
DefaultEndpointsProtocol=https;
AccountName=storagesample;
AccountKey=<account-key>;
EndpointSuffix=core.chinacloudapi.cn;
Autorización del acceso con una clave compartida
Para obtener información sobre cómo autorizar el acceso a Azure Storage con la clave de cuenta o con una cadena de conexión, consulte uno de los siguientes artículos:
- Autorizar acceso y conectar a Blob Storage con .NET
- Autorizar el acceso y conectar con el Almacenamiento de Blobs utilizando Java
- Autorizar el acceso y conectarse a Blob Storage con JavaScript
- Autorizar el acceso y conectar con el almacenamiento de blobs usando Python