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.
Nota:
Las conexiones sin contraseña son una característica independiente del lenguaje que abarca varios servicios de Azure. Aunque la documentación actual se centra en unos pocos idiomas y servicios, actualmente estamos en el proceso de producir documentación adicional para otros idiomas y servicios.
En este artículo se describen los desafíos de seguridad con las contraseñas y se presentan las conexiones sin contraseña para los servicios de Azure.
Desafíos de seguridad con contraseñas y secretos
Las contraseñas y las claves secretas deben usarse con precaución, y los desarrolladores nunca deben colocarlas en una ubicación no segura. Muchas aplicaciones se conectan a servicios de bases de datos de back-end, caché, mensajería y eventos mediante nombres de usuario, contraseñas y claves de acceso. Si se expone, estas credenciales podrían usarse para obtener acceso no autorizado a información confidencial, como un catálogo de ventas que creó para una próxima campaña o datos de clientes que deben ser privados.
La inserción de contraseñas en una propia aplicación presenta un riesgo de seguridad enorme por muchas razones, incluida la detección a través de un repositorio de código. Muchos desarrolladores externalizan estas contraseñas mediante variables de entorno para que las aplicaciones puedan cargarlas desde diferentes entornos. Sin embargo, esto solo cambia el riesgo del propio código a un entorno de ejecución. Cualquier persona que obtenga acceso al entorno puede robar contraseñas, lo que a su vez aumenta el riesgo de filtración de datos.
En el ejemplo de código siguiente se muestra cómo conectarse a Azure Storage mediante una clave de cuenta de almacenamiento. Muchos desarrolladores gravitan hacia esta solución porque se siente familiar a las opciones con las que han trabajado en el pasado, aunque no sea una solución ideal. Si la aplicación usa actualmente claves de acceso, considere la posibilidad de migrar a conexiones sin contraseña.
// Connection using secret access keys
BlobServiceClient blobServiceClient = new(
new Uri("https://<storage-account-name>.blob.core.windows.net"),
new StorageSharedKeyCredential("<storage-account-name>", "<your-access-key>"));
Los desarrolladores deben ser diligentes para no exponer nunca este tipo de claves o secretos en una ubicación no segura. Muchas empresas tienen requisitos de seguridad estrictos para conectarse a los servicios de Azure sin exponer las contraseñas a desarrolladores, operadores o cualquier otra persona. A menudo usan una bóveda para almacenar y cargar contraseñas en las aplicaciones, y reducen aún más el riesgo al agregar requisitos y procedimientos de rotación de contraseñas. Este enfoque, a su vez, aumenta la complejidad operativa y, a veces, provoca interrupciones de la conexión de las aplicaciones.
Conexiones sin contraseña y Zero Trust
Ahora puede usar conexiones sin contraseña en sus aplicaciones para conectarse a servicios basados en Azure sin necesidad de rotar las contraseñas. En algunos casos, todo lo que necesita es la configuración, no se requiere ningún código nuevo. Zero Trust utiliza el principio de "nunca confiar, siempre verificar y sin credenciales". Esto significa proteger todas las comunicaciones de las máquinas o usuarios de confianza solo después de verificar la identidad y antes de otorgarles acceso a los servicios de backend.
La opción de autenticación recomendada para conexiones seguras y sin contraseña es usar identidades administradas y el control de acceso basado en rol (RBAC) de Azure en combinación. Con este enfoque, no es necesario realizar un seguimiento y administrar manualmente muchos secretos diferentes para las identidades administradas, ya que Azure controla estas tareas internamente de forma segura.
Puede configurar conexiones sin contraseña a servicios Azure usando Service Connector o puede configurarlas manualmente. El conector de servicio permite identidades administradas en servicios de hospedaje de aplicaciones como Azure Spring Apps, Azure App Service y Azure Container Apps. Service Connector también configura los servicios back-end con conexiones sin contraseña mediante identidades administradas y RBAC de Azure, e hidrata las aplicaciones con la información de conexión necesaria.
Si inspecciona el entorno de ejecución de una aplicación configurada para conexiones sin contraseña, puede ver la cadena de conexión completa. La cadena de conexión contiene, por ejemplo, una dirección de servidor de base de datos, un nombre de base de datos y una instrucción para delegar la autenticación a un complemento de autenticación de Azure, pero no contiene contraseñas ni secretos.
En el siguiente vídeo se muestran las conexiones sin contraseña de las aplicaciones a los servicios de Azure, utilizando las aplicaciones Java como ejemplo. Próximamente se publicará una cobertura similar para otros idiomas.
Presentación de DefaultAzureCredential
Las conexiones sin contraseña a los servicios de Azure a través de Microsoft Entra ID y el control de acceso basado en roles (RBAC) se pueden implementar desde DefaultAzureCredential
las bibliotecas cliente de Azure Identity.
Importante
Algunos lenguajes deben implementar DefaultAzureCredential
en su código de manera explícita, mientras que otros usan DefaultAzureCredential
internamente a través de complementos o controladores subyacentes.
DefaultAzureCredential
admite varios métodos de autenticación y determina automáticamente qué se debe usar en tiempo de ejecución. Este enfoque permite que la aplicación use diferentes métodos de autenticación en distintos entornos (desarrollo local frente a producción) sin implementar código específico del entorno.
El orden y las ubicaciones en las que DefaultAzureCredential
se realizan las búsquedas de credenciales varían según el idioma:
Por ejemplo, cuando se trabaja en modo local con .NET, DefaultAzureCredential
se autentica normalmente con la cuenta que el desarrollador ha usado para iniciar sesión en Visual Studio, la CLI de Azure o Azure PowerShell. Cuando la aplicación se implemente en Azure, DefaultAzureCredential
detecta y usa automáticamente la identidad administrada del servicio de hospedaje asociado, como Azure App Service. No se necesitan cambios de código para esta transición.
Nota:
Una identidad administrada proporciona una identidad de seguridad para representar una aplicación o servicio. La identidad se administra mediante la plataforma Azure y no requiere el aprovisionamiento ni la rotación de secretos. Puede obtener más información sobre las identidades administradas en la documentación de información general.
El siguiente ejemplo de código muestra cómo conectarse a Service Bus usando conexiones sin contraseña. En otra documentación, se describe con más detalle cómo migrar a esta configuración para un servicio específico. Una aplicación .NET puede pasar una instancia de DefaultAzureCredential
al constructor de una clase de cliente de servicio.
DefaultAzureCredential
detectará automáticamente las credenciales que estén disponibles en ese entorno.
ServiceBusClient serviceBusClient = new(
new Uri("https://<your-service-bus-namespace>.blob.core.windows.net"),
new DefaultAzureCredential());
Consulte también
Para obtener una explicación más detallada de las conexiones sin contraseña, consulte la guía para desarrolladores Configuración de conexiones sin contraseña entre varias aplicaciones y servicios de Azure.