Impedir la autorización con clave compartida para una cuenta de Azure Storage
Cada solicitud segura a una cuenta de Azure Storage debe estar autorizada. De forma predeterminada, las solicitudes se pueden autorizar con credenciales de Microsoft Entra o mediante la clave de acceso de la cuenta para la autorización con clave compartida. De estos dos tipos de autorización, Microsoft Entra ID proporciona mayor seguridad y facilidad de uso a través de la clave compartida y es el que Microsoft recomienda. Para exigir que los clientes usen Microsoft Entra ID para autorizar las solicitudes, puede denegar las solicitudes a la cuenta de almacenamiento que estén autorizadas con clave compartida.
Cuando se impide la autorización con clave compartida para una cuenta de almacenamiento, Azure Storage rechaza todas las solicitudes posteriores a esa cuenta autorizadas con las claves de acceso de la cuenta. Solo se tramitarán correctamente las solicitudes protegidas que estén autorizadas con Microsoft Entra ID. Para más información sobre el uso de Microsoft Entra ID, consulte Autorización del acceso a datos en Azure Storage.
La propiedad AllowSharedKeyAccess de una cuenta de almacenamiento no se establece de forma predeterminada y no devuelve ningún valor hasta que se establece de forma explícita. La cuenta de almacenamiento permite solicitudes que están autorizadas con clave compartida cuando el valor de la propiedad es null o true.
En este artículo se describe cómo usar un marco de tipo DRAG (detección-corrección-auditoría-gobernanza) para administrar continuamente la autorización con clave compartida para su cuenta de almacenamiento.
Prerrequisitos
Antes de no permitir el acceso con clave compartida en cualquiera de sus cuentas de almacenamiento:
- Descripción de cómo la denegación de la clave compartida afecta a los tokens de SAS
- Consideración de la compatibilidad con otras herramientas y servicios
- Considere la necesidad de no permitir la autorización con clave compartida para usar el acceso condicional de Microsoft Entra.
- Autorización del acceso a datos de archivos o transición de cargas de trabajo de Azure Files
Descripción de cómo la denegación de la clave compartida afecta a los tokens de SAS
Cuando el acceso con clave compartida se deniega para la cuenta de almacenamiento, Azure Storage controla los tokens de SAS según el tipo de SAS y el servicio al que se destina la solicitud. En la tabla siguiente se muestra cómo se autoriza cada tipo de SAS y cómo Azure Storage controlará esa SAS cuando la propiedad AllowSharedKeyAccess de la cuenta de almacenamiento sea false.
Tipo de SAS | Tipo de autorización | Comportamiento cuando AllowSharedKeyAccess es false |
---|---|---|
SAS de delegación de usuarios (solo para Blob Storage) | Microsoft Entra ID | La solicitud se permite. Microsoft recomienda el uso de una SAS de delegación de usuario siempre que sea posible para mayor seguridad. |
SAS de servicio | Clave compartida | La solicitud se deniega para todos los servicios de Azure Storage. |
SAS de cuenta | Clave compartida | La solicitud se deniega para todos los servicios de Azure Storage. |
Las métricas y el registro de Azure en Azure Monitor no distinguen entre los distintos tipos de firmas de acceso compartido. El filtro SAS en el Explorador de métricas de Azure y el campo SAS en el registro de Azure Storage en Azure Monitor informan de las solicitudes que están autorizadas con cualquier tipo de SAS. Sin embargo, los distintos tipos de firmas de acceso compartido se autorizan de manera diferente y se comportan de manera distinta cuando se deniega el acceso con clave compartida:
- Un token de SAS de servicio o un token de SAS de cuenta está autorizado con clave compartida y no se permitirá en una solicitud a Blob Storage cuando la propiedad AllowSharedKeyAccess esté establecida en false.
- Una SAS de delegación de usuarios está autorizada con Microsoft Entra ID y se permitirá en una solicitud a Blob Storage cuando la propiedad AllowSharedKeyAccess esté establecida en false.
Cuando evalúe el tráfico a la cuenta de almacenamiento, tenga en cuenta que las métricas y los registros tal y como se describen en Detección del tipo de autorización que usan las aplicaciones cliente pueden incluir solicitudes realizadas con una SAS de delegación de usuario.
Para obtener más información sobre las firmas de acceso compartido, consulte Otorgar acceso limitado a recursos de Azure Storage con firmas de acceso compartido (SAS).
Consideración de la compatibilidad con otras herramientas y servicios
Varios servicios de Azure usan la autorización con clave compartida para comunicarse con Azure Storage. Si deniega la autorización con clave compartida para una cuenta de almacenamiento, estos servicios no podrán acceder a los datos de esa cuenta y las aplicaciones pueden verse negativamente afectadas.
Algunas herramientas de Azure ofrecen la opción de usar la autorización Microsoft Entra para acceder a Azure Storage. En la tabla siguiente se enumeran algunas herramientas conocidas de Azure y se indica si pueden usar Microsoft Entra ID para autorizar solicitudes a Azure Storage.
Herramienta de Azure | Autorización de Microsoft Entra para Azure Storage |
---|---|
Azure portal | Compatible. Para información sobre cómo realizar la autorización con su cuenta de Microsoft Entra desde Azure Portal, consulte Elección de la forma de autorizar el acceso a los datos de blob en Azure Portal. |
AzCopy | Compatible con el Blob Storage. Para obtener información sobre cómo autorizar operaciones de AzCopy, consulte Elija cómo autorizar el acceso a los datos de blob o de cola en Azure Portal en la documentación de AzCopy. |
Explorador de Azure Storage | Compatible con Blob Storage, Queue Storage, Table Storage y Azure Data Lake Storage. El acceso con Microsoft Entra ID a File Storage no se admite. Asegúrese de seleccionar el inquilino de Microsoft Entra correcto. Para más información, consulte Introducción al Explorador de Storage. |
Azure PowerShell | Compatible. Para información sobre la forma de autorizar comandos de PowerShell para las operaciones de blobs o colas con Microsoft Entra ID, consulte los artículos Ejecución de comandos de PowerShell con credenciales de Microsoft Entra para acceder a datos de blob o Ejecución de comandos de PowerShell con credenciales de Microsoft Entra para acceder a los datos de cola. |
CLI de Azure | Compatible. Para información sobre cómo autorizar comandos de la CLI de Azure con Microsoft Entra ID para el acceso a los datos de blobs y colas, consulte Ejecución de comandos de la CLI de Azure con credenciales de Microsoft Entra para acceder a datos de blobs o colas. |
Azure IoT Hub | Compatible. Para más información, consulte Compatibilidad de IoT Hub con redes virtuales mediante Private Link e identidad administrada. |
Azure Cloud Shell | Azure Cloud Shell es un shell integrado en Azure Portal. Azure Cloud Shell hospeda archivos para la persistencia en un recurso compartido de archivos de Azure en una cuenta de almacenamiento. Estos archivos dejarán de estar accesibles si la autorización con clave compartida se deniega para esa cuenta de almacenamiento. Para obtener más información, consulte Persistencia de archivos en Azure Cloud Shell. Para ejecutar comandos en Azure Cloud Shell a fin de administrar cuentas de almacenamiento para las que se deniega el acceso con clave compartida, primero debe asegurarse de que se le han concedido los permisos necesarios para estas cuentas mediante RBAC de Azure. Para más información, consulte ¿Qué es el control de acceso basado en rol de Azure (RBAC)? |
No permitir la autorización con clave compartida para usar el acceso condicional de Microsoft Entra
Para proteger una cuenta de Azure Storage con las directivas de acceso condicional de Microsoft Entra, no debe permitir la autorización con clave compartida para la cuenta de almacenamiento.
Autorización del acceso a datos de archivos o transición de cargas de trabajo de Azure Files
Azure Storage solo admite la autorización con Microsoft Entra de solicitudes a Azure Files, Blob Storage, Queue Storage y Table Storage. Sin embargo, de forma predeterminada, Azure Portal usa la autorización de clave compartida para acceder a los recursos compartidos de archivos de Azure. Si no permite la autorización de clave compartida para una cuenta de almacenamiento que no esté configurada con las asignaciones de RBAC adecuadas, se producirá un error en las solicitudes a Azure Files y no podrá acceder a los recursos compartidos de archivos de Azure en Azure Portal.
Para mitigar esto, se recomienda adoptar uno de los tres enfoques:
- Siga estos pasos para autorizar el acceso a los datos de archivo mediante su cuenta de Microsoft Entra o
- Migre los datos de Azure Files a una cuenta de almacenamiento independiente antes de no permitir el acceso a una cuenta a través de la clave compartida o
- No aplique esta configuración a las cuentas de almacenamiento que admiten cargas de trabajo de Azure Files.
Identificación de cuentas de almacenamiento que permiten el acceso con clave compartida
Hay dos formas de identificar las cuentas de almacenamiento que permiten el acceso con clave compartida:
- Comprobación de la configuración de acceso con clave compartida para varias cuentas
- Configuración de una directiva de Azure Policy para el acceso con clave compartida en el modo de auditoría
Comprobación de la configuración de acceso con clave compartida para varias cuentas
Para comprobar la configuración de acceso con clave compartida en un conjunto de cuentas de almacenamiento con un rendimiento óptimo, puede usar Azure Resource Graph Explorer en Azure Portal. Para más información sobre el uso de Resource Graph Explorer, consulte Inicio rápido: Ejecución de la primera consulta de Resource Graph mediante Azure Resource Graph Explorer.
Si la siguiente consulta se ejecuta en el explorador de Resource Graph, este devuelve una lista de cuentas de almacenamiento y muestra la configuración de acceso con clave compartida de cada cuenta:
resources
| where type =~ 'Microsoft.Storage/storageAccounts'
| extend allowSharedKeyAccess = parse_json(properties).allowSharedKeyAccess
| project subscriptionId, resourceGroup, name, allowSharedKeyAccess
Configuración de una directiva de Azure Policy para el acceso con clave compartida en el modo de auditoría
La directiva de Azure Policy Las cuentas de almacenamiento deben evitar el acceso a claves compartidas impide que los usuarios con los permisos adecuados configuren cuentas de almacenamiento nuevas o que ya existían para permitir la autorización con clave compartida. Configure esta directiva en el modo de auditoría para identificar las cuentas de almacenamiento en las que se permite la autorización con clave compartida. Después de haber cambiado las aplicaciones para usar Microsoft Entra en lugar de la clave compartida para la autorización, puede actualizar la directiva para impedir que se permita el acceso con clave compartida.
Para obtener más información sobre la directiva integrada, vea Las cuentas de almacenamiento deben evitar el acceso a claves compartidas en Definiciones de directiva integradas de Azure Policy.
Asignación de la directiva integrada para un ámbito de recursos
Siga estos pasos para asignar la directiva integrada al ámbito adecuado en Azure Portal:
En Azure Portal, busque Directiva para mostrar el panel Azure Policy.
Seleccione Asignaciones en la sección Creación.
Seleccione Asignar directiva.
En la pestaña Conceptos básicos de la página Asignar directiva, en la sección Ámbito, especifique el ámbito de la asignación de directivas. Seleccione el botón Más (...) para elegir la suscripción y el grupo de recursos (opcional).
Para el campo Definición de directiva, seleccione el botón Más (...) y escriba acceso con clave compartida en el campo Buscar. Seleccione la definición de directiva denominada Las cuentas de almacenamiento debe evitar el acceso a claves compartidas.
Seleccione Revisar + crear.
En la pestaña Revisar y crear, revise la asignación de directiva y seleccione Crear para asignar la definición de directiva al ámbito especificado.
Supervisión del cumplimiento de la directiva
Para supervisar si las cuentas de almacenamiento cumplen la directiva de acceso con clave compartida, siga estos pasos:
En el panel Azure Policy, en Creación, seleccione Asignaciones.
Busque y seleccione la asignación de directiva que creó en la sección anterior.
Seleccione la pestaña Ver compatibilidad.
Las cuentas de almacenamiento dentro del ámbito de la asignación de directiva que no cumplen los requisitos de la directiva aparecen en el informe de cumplimiento.
Para obtener más información sobre por qué una cuenta de almacenamiento no cumple la directiva, seleccione Detalles en Motivo de cumplimiento.
Detección del tipo de autorización que usan las aplicaciones cliente
Para comprender cómo la denegación de la autorización con clave compartida puede afectar a las aplicaciones cliente antes de efectuar este cambio, habilite el registro y las métricas para la cuenta de almacenamiento. A continuación, puede analizar los patrones de las solicitudes a su cuenta durante un período de tiempo para determinar cómo se autorizan las solicitudes.
Use métricas para determinar el número de solicitudes que la cuenta de almacenamiento está recibiendo y que están autorizadas con una clave compartida o una firma de acceso compartido (SAS). Use los registros para determinar qué clientes envían esas solicitudes.
Se puede autorizar una SAS con una clave compartida o con Microsoft Entra ID. Para más información sobre cómo interpretar las solicitudes realizadas con una firma de acceso compartido, consulte Descripción de cómo la denegación de la clave compartida afecta a los tokens de SAS.
Determinación del número y la frecuencia de las solicitudes autorizadas con clave compartida
Para realizar el seguimiento de cómo se autorizan las solicitudes a una cuenta de almacenamiento, use el Explorador de métricas de Azure situado en Azure Portal. Para más información sobre el Explorador de métricas, consulte Análisis de métricas con el Explorador de métricas de Azure Monitor.
Siga estos pasos para crear una métrica que realice el seguimiento de las solicitudes llevadas a cabo con clave compartida o SAS:
Vaya a la cuenta de almacenamiento en Azure Portal. En la sección Supervisión, seleccione Métricas.
Debería aparecer el cuadro de la nueva métrica:
Si no aparece, seleccione Agregar métrica.
En el cuadro de diálogo Métrica, especifique los valores siguientes:
- Deje el campo Ámbito establecido en el nombre de la cuenta de almacenamiento.
- Establezca Espacio de nombres de métricas en Cuenta. Esta métrica informará de todas las solicitudes realizadas a la cuenta de almacenamiento.
- Establezca el campo Métrica en Transacciones.
- Establezca el campo Agregación en Suma.
La nueva métrica mostrará la suma del número de transacciones en la cuenta de almacenamiento a lo largo de un intervalo de tiempo determinado. La métrica resultante aparece como se muestra en la siguiente imagen:
A continuación, seleccione el botón Agregar filtro para crear un filtro en la métrica para el tipo de autorización.
En el cuadro de diálogo Filtro, especifique los valores siguientes:
- Establezca el valor Propiedad en Autenticación.
- Establezca el campo Operador en el signo igual (=).
- En el campo Valores, seleccione Clave de cuenta y SAS.
En la esquina superior derecha, seleccione el intervalo de tiempo del que desea ver la métrica. También puede indicar lo pormenorizada que debe ser la agregación de las solicitudes, especificando intervalos en cualquier punto entre 1 minuto y 1 mes. Por ejemplo, establezca Intervalo de tiempo en 30 días y Granularidad de tiempo en 1 día para ver las solicitudes agregadas por día durante los últimos 30 días.
Una vez configurada la métrica, las solicitudes a la cuenta de almacenamiento comenzarán a aparecer en el gráfico. En la imagen siguiente se muestran las solicitudes que se autorizaron con la clave compartida o que se realizaron con un token de SAS. Las solicitudes se agregan por día durante los últimos treinta días.
También puede configurar una regla de alerta para recibir una notificación cuando se realice un determinado número de solicitudes autorizadas con clave compartida en la cuenta de almacenamiento. Para más información, vea Creación, visualización y administración de alertas de métricas mediante Azure Monitor.
Análisis de registros para identificar los clientes que están autorizando solicitudes con clave compartida o SAS
Los registros de Azure Storage capturan detalles sobre las solicitudes realizadas a la cuenta de almacenamiento, como el modo en que se autorizó una solicitud. Puede analizar los registros para determinar qué clientes están autorizando solicitudes con clave compartida o token de SAS.
Para registrar las solicitudes a su cuenta de Azure Storage con el fin de evaluar cómo se autorizan, puede usar el registro de Azure Storage en Azure Monitor. Para más información, consulte Supervisión de Azure Storage.
El registro de Azure Storage en Azure Monitor admite el uso de consultas de registro para analizar los datos de registro. Para consultar los registros, puede usar un área de trabajo de Azure Log Analytics. Para más información sobre las consultas de registro, consulte el Tutorial: Introducción a las consultas de Log Analytics.
Creación de una configuración de diagnóstico en Azure Portal
Para registrar datos de Azure Storage con Azure Monitor y analizarlos con Azure Log Analytics, primero debe crear una configuración de diagnóstico que indique qué tipos de solicitudes y para qué servicios de almacenamiento quiere registrar los datos. Después de configurar el registro de la cuenta de almacenamiento, los registros están disponibles en el área de trabajo de Log Analytics. Para crear un área de trabajo, consulte Creación de un área de trabajo de Log Analytics en Azure Portal.
Para obtener información sobre cómo crear una configuración de diagnóstico en Azure Portal, consulte Creación de una configuración de diagnóstico en Azure Monitor.
En el artículo Registros de recursos encontrará una referencia sobre los campos disponibles en los registros de Azure Storage en Azure Monitor.
Registros de consultas para las solicitudes realizadas con clave compartida o SAS
Los registros de Azure Storage en Azure Monitor incluyen el tipo de autorización que se usó para hacer una solicitud a una cuenta de almacenamiento. Para recuperar los registros de las solicitudes realizadas en los últimos siete días que se autorizaron con la clave compartida o SAS, abra el área de trabajo de Log Analytics. Luego, pegue la siguiente consulta en una nueva consulta de registro y ejecútela. Esta consulta muestra las diez direcciones IP que enviaron solicitudes con mayor frecuencia que se autorizaron con clave compartida o SAS:
StorageBlobLogs
| where AuthenticationType in ("AccountKey", "SAS") and TimeGenerated > ago(7d)
| summarize count() by CallerIpAddress, UserAgentHeader, AccountName
| top 10 by count_ desc
También puede configurar una regla de alerta basada en esta consulta para que le informe sobre las solicitudes autorizadas con clave compartida o SAS. Para más información, consulte Creación, visualización y administración de alertas de registro mediante Azure Monitor.
Corrección de la autorización mediante clave compartida
Después de haber analizado cómo se autorizan las solicitudes a la cuenta de almacenamiento, puede tomar medidas para evitar el acceso a través de una clave compartida. Pero antes, debe actualizar las aplicaciones que usan la autorización con clave compartida para que usen Microsoft Entra ID en su lugar. Puede supervisar los registros y las métricas tal y como se describe en Detección del tipo de autorización que usan las aplicaciones cliente para realizar el seguimiento de la transición. Para más información sobre el uso de Microsoft Entra ID para acceder a los datos de una cuenta de almacenamiento, consulte Autorización del acceso a datos en Azure Storage.
Cuando esté seguro de que puede rechazar de forma segura las solicitudes que están autorizadas con la clave compartida, puede establecer la propiedad AllowSharedKeyAccess de la cuenta de almacenamiento en false.
Advertencia
Si algún cliente está accediendo actualmente a los datos de la cuenta de almacenamiento con una clave compartida, Microsoft recomienda migrar esos clientes a Microsoft Entra ID antes de denegar el acceso con clave compartida a la cuenta de almacenamiento.
Permisos para admitir o denegar el acceso con clave compartida
Para establecer la propiedad AllowSharedKeyAccess para la cuenta de almacenamiento, un usuario debe tener permisos para crear y administrar cuentas de almacenamiento. Los roles de control de acceso basado en rol de Azure (Azure RBAC) que proporcionan estos permisos incluyen la acción Microsoft.Storage/storageAccounts/write o Microsoft.Storage/storageAccounts/*. Los roles integrados con esta acción incluyen:
- El rol Propietario de Azure Resource Manager
- El rol Colaborador de Azure Resource Manager
- El rol Colaborador de la cuenta de almacenamiento
Estos roles no proporcionan acceso a los datos de una cuenta de almacenamiento a través de Microsoft Entra ID. Sin embargo, incluyen Microsoft.Storage/storageAccounts/listkeys/action, que concede acceso a las claves de acceso de la cuenta. Con este permiso, un usuario puede usar las claves de acceso de la cuenta para acceder a todos los datos de una cuenta de almacenamiento.
Las asignaciones de roles deben tener el ámbito del nivel de la cuenta de almacenamiento o superior para permitir que un usuario permita o deniegue el acceso con clave compartida para la cuenta de almacenamiento. Para obtener más información sobre el ámbito de los roles, vea Comprensión del ámbito para RBAC de Azure.
Tenga cuidado de restringir la asignación de estos roles solo a aquellos usuarios que requieran la capacidad de crear una cuenta de almacenamiento o actualizar sus propiedades. Use el principio de privilegios mínimos para asegurarse de que los usuarios tienen los permisos mínimos que necesitan para realizar sus tareas. Para más información sobre la administración del acceso con RBAC de Azure, consulte Procedimientos recomendados para RBAC de Azure.
Nota
Los roles clásicos de administrador de suscripciones Administrador del servicio y Coadministrador equivalen al rol Propietario de Azure Resource Manager. El rol Propietario incluye todas las acciones, por lo que un usuario con uno de estos roles administrativos también puede crear y administrar cuentas de almacenamiento. Para obtener más información, consulte Roles de Azure, roles de Microsoft Entra y roles de administrador de suscripción clásicos .
Deshabilitar la autorización con clave compartida
Con una cuenta que tenga los permisos necesarios, deshabilite la autorización con clave compartida en Azure Portal, PowerShell o la CLI de Azure.
Para denegar la autorización con clave compartida para una cuenta de almacenamiento en Azure Portal, siga estos pasos:
Después de denegar la autorización con clave compartida, la solicitud a la cuenta de almacenamiento con autorización con clave compartida no se podrá realizar y dará un error con el código de error 403 (prohibido). Azure Storage devuelve un error que indica que la autorización basada en clave no se permite en la cuenta de almacenamiento.
La propiedad AllowSharedKeyAccess se admite en cuentas de almacenamiento que usan únicamente el modelo de implementación de Azure Resource Manager. Para información sobre qué cuentas de almacenamiento usan el modelo de implementación de Azure Resource Manager, consulte Tipos de cuentas de almacenamiento.
Verificación de que el acceso a la clave compartida no se permite
Para comprobar si la autorización de clave compartida ya no está permitida, puede consultar la configuración de la cuenta de Azure Storage con el comando siguiente. Reemplace los valores del marcador de posición entre corchetes por los suyos propios.
az storage account show \
--name <storage-account-name> \
--resource-group <resource-group-name> \
--query "allowSharedKeyAccess"
Si la autorización de clave compartida no está permitida para la cuenta de almacenamiento, el comando devolverá el valor false.
Nota:
Las solicitudes anónimas no están autorizadas y se seguirán procesando si ha configurado la cuenta de almacenamiento y el contenedor para el acceso de lectura anónimo. Para más información, consulte Configuración del acceso de lectura anónimo a contenedores y blobs.
Supervisión del cumplimiento de la directiva de Azure Policy
Después de no permitir el acceso con clave compartida en las cuentas de almacenamiento deseadas, siga supervisando la directiva que creó antes para ver si se cumple. En función de los resultados de la supervisión, tome las medidas necesarias, incluido el cambio de ámbito de la directiva, para impedir el acceso con clave compartida en más cuentas o permitirlo en cuentas en las que se necesita más tiempo para corregirlo.
Actualización de la directiva de Azure Policy para impedir que se permita el acceso con clave compartida
Para empezar a aplicar la asignación de directiva de Azure Policy que creó antes para la directiva Las cuentas de almacenamiento deben evitar el acceso a la clave compartida, cambie el Efecto de la asignación de directiva a Denegar con el fin de impedir que los usuarios autorizados permitan el acceso con clave compartida en las cuentas de almacenamiento. Para cambiar el efecto de la directiva, siga estos pasos:
En el panel Azure Policy, busque y seleccione la asignación de directiva que creó antes.
Seleccione Editar asignación.
Vaya a la pestaña Parámetros.
Desactive la casilla Mostrar solo los parámetros que requieran entrada o revisión.
En la lista desplegable Efecto, cambie Auditoría a Denegar y seleccione Revisar y guardar.
En la pestaña Revisar y guardar, revise los cambios y seleccione Guardar.
Nota
El cambio de directiva puede tardar hasta 30 minutos en surtir efecto.