Aplicación de una versión mínima necesaria de Seguridad de la capa de transporte (TLS) para las solicitudes a una cuenta de almacenamiento

La comunicación entre una aplicación cliente y una cuenta de Azure Storage se cifra mediante la Seguridad de la capa de transporte (TLS). TLS es un protocolo criptográfico estándar que garantiza la privacidad y la integridad de los datos entre los clientes y los servicios a través de Internet. Para más información acerca de TLS, consulte Seguridad de la capa de transporte.

Actualmente, Azure Storage admite tres versiones del protocolo TLS: 1.0, 1.1 y 1.2. Azure Storage usa TLS 1.2 en puntos de conexión HTTP públicos. Sin embargo, TLS 1.0 y TLS 1.1 se siguen admitiendo gracias a la compatibilidad con versiones anteriores.

Las cuentas de Azure Storage permiten a los clientes enviar y recibir datos con la versión más antigua de TLS (TLS 1.0) y con las versiones posteriores. Para aplicar medidas de seguridad más estrictas, puede configurar la cuenta de almacenamiento para que los clientes deban enviar y recibir datos con una versión más reciente de TLS. Si una cuenta de almacenamiento requiere una versión mínima de TLS, se producirá un error en todas las solicitudes realizadas con una versión anterior.

En este artículo se describe cómo usar un marco de tipo DRAG (detección-corrección-auditoría-gobernanza) para administrar continuamente una Seguridad de la capa de transporte segura para las cuentas de almacenamiento.

Para obtener información acerca de cómo especificar una versión concreta de TLS al enviar una solicitud desde una aplicación cliente, consulte Configuración de la Seguridad de la capa de transporte (TLS) para una aplicación cliente.

Detección de la versión de TLS que usan las aplicaciones cliente

Cuando se aplica una versión mínima de TLS para la cuenta de almacenamiento, se corre el riesgo de rechazar las solicitudes de los clientes que envían datos con una versión anterior de TLS. Para comprender cómo la configuración de la versión mínima de TLS puede afectar a las aplicaciones cliente, Microsoft recomienda que habilite el registro para su cuenta de Azure Storage y analice los registros después de un intervalo de tiempo para detectar qué versiones de TLS están usando las aplicaciones cliente.

Para registrar las solicitudes a su cuenta de Azure Storage y determinar qué versión de TLS usa el cliente, puede usar el registro de Azure Storage en Azure Monitor (versión preliminar). 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.

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. Los registros de Azure Storage en Azure Monitor están en versión preliminar pública, además de estar disponibles para pruebas de versión preliminar en todas las regiones de nube pública. Esta versión preliminar habilita los registros de blobs (incluido Azure Data Lake Storage Gen2), archivos, colas y tablas. Para crear una configuración de diagnóstico en Azure Portal, siga estos pasos:

  1. Cree un área de trabajo de Log Analytics en la suscripción que contenga la cuenta de Azure Storage. Después de configurar el registro de la cuenta de almacenamiento, los registros estarán disponibles en el área de trabajo de Log Analytics. Para obtener más información, consulte Creación de un área de trabajo de Log Analytics en Azure Portal.

  2. Vaya a la cuenta de almacenamiento en Azure Portal.

  3. En la sección Supervisión, seleccione Configuración de diagnóstico (versión preliminar) .

  4. Seleccione el servicio de Azure Storage cuyas solicitudes quiere registrar. Por ejemplo, elija Blob para registrar las solicitudes a Blob Storage.

  5. Seleccione Agregar configuración de diagnóstico.

  6. Proporcione un nombre para la configuración de diagnóstico.

  7. En Detalles de la categoría, en la sección registro, elija qué tipos de solicitudes registrar. Puede registrar las solicitudes de lectura, escritura y eliminación. Por ejemplo, al elegir StorageRead y StorageWrite se registrarán las solicitudes de lectura y escritura del servicio seleccionado.

  8. En Detalles del destino, seleccione Enviar a Log Analytics. Seleccione la suscripción y el área de trabajo de Log Analytics que creó anteriormente, como se muestra en la siguiente imagen.

    Captura de pantalla que muestra cómo crear una configuración de diagnóstico para el registro de las solicitudes

Después de crear la configuración de diagnóstico, las solicitudes a la cuenta de almacenamiento se registran posteriormente según esa configuración. Para más información, consulte Creación de una configuración de diagnóstico para recopilar registros y métricas en Azure.

Puede encontrar una referencia sobre los campos disponibles en los registros de Azure Storage en Azure Monitor en el artículo Registros de recursos (versión preliminar).

Consulta de las solicitudes registradas por versión de TLS

Los registros de Azure Storage en Azure Monitor incluyen la versión de TLS que se usó para hacer una solicitud a una cuenta de almacenamiento. Use la propiedad TlsVersion para comprobar la versión de TLS de una solicitud registrada.

Para determinar cuántas solicitudes se realizaron a Blob Storage con cada versión de TLS durante los últimos siete días, abra su área de trabajo de Log Analytics. Luego, pegue la siguiente consulta en una nueva consulta de registro y ejecútela. No olvide reemplazar los valores del marcador de posición entre corchetes con sus propios valores:

StorageBlobLogs
| where TimeGenerated > ago(7d) and AccountName == "<account-name>"
| summarize count() by TlsVersion

Los resultados muestran el número de solicitudes realizadas con cada versión de TLS:

Captura de pantalla que muestra los resultados de la consulta de Log Analytics para devolver la versión de TLS

Consulta de solicitudes registradas por dirección IP del autor de la llamada y por encabezado del agente de usuario

Los registros de Azure Storage en Azure Monitor también incluyen la dirección IP del autor de la llamada y el encabezado del agente de usuario para ayudarle a evaluar qué aplicaciones cliente tienen acceso a la cuenta de almacenamiento. Puede analizar estos valores para determinar si las aplicaciones cliente deben actualizarse para usar una versión más reciente de TLS, o si es aceptable que se produzca un error en la solicitud de un cliente si no se envía con la versión mínima de TLS.

Para determinar qué clientes realizaron solicitudes con una versión de TLS anterior a TLS 1.2 en los últimos siete días, pegue la siguiente consulta en una nueva consulta de registro y ejecútela. No olvide reemplazar los valores del marcador de posición entre corchetes con sus propios valores:

StorageBlobLogs
| where TimeGenerated > ago(7d) and AccountName == "<account-name>" and TlsVersion != "TLS 1.2"
| project TlsVersion, CallerIpAddress, UserAgentHeader

Corrección de riesgos de seguridad con una versión mínima de TLS

Si está seguro de que el tráfico de los clientes que usan versiones anteriores de TLS es mínimo, o que es aceptable que se produzcan errores en las solicitudes realizadas con una versión anterior de TLS, puede empezar a aplicar una versión de TLS mínima en la cuenta de almacenamiento. Requerir que los clientes usen una versión mínima de TLS para realizar solicitudes en una cuenta de almacenamiento forma parte de una estrategia para minimizar los riesgos de seguridad de los datos.

Importante

Si usa un servicio que se conecta a Azure Storage, asegúrese de que ese servicio use la versión adecuada de TLS para enviar solicitudes a Azure Storage antes de establecer la versión mínima necesaria para una cuenta de almacenamiento.

Configuración de la versión mínima de TLS para una cuenta de almacenamiento

Para configurar la versión mínima de TLS para una cuenta de almacenamiento, establezca la versión MinimumTlsVersion de la cuenta. Esta propiedad está disponible para todas las cuentas de almacenamiento que se crean con el modelo de implementación de Azure Resource Manager. Para más información sobre el modelo de implementación de Azure Resource Manager, consulte Introducción a las cuentas de almacenamiento.

El valor predeterminado de la propiedad MinimumTlsVersion es diferente en función de cómo se establezca. Al crear una cuenta de almacenamiento con Azure Portal, la versión mínima de TLS se establece en 1.2 de forma predeterminada. Al crear una cuenta de almacenamiento con PowerShell, la CLI de Azure o una plantilla de Azure Resource Manager, la propiedad MinimumTlsVersion no se establece de forma predeterminada y no devuelve un valor hasta que se establece explícitamente.

Cuando la propiedad MinimumTlsVersion no está establecida, su valor se puede mostrar como null o como una cadena vacía, en función del contexto. Si el valor de la propiedad no está establecido, la cuenta de almacenamiento permitirá las solicitudes enviadas con la versión 1.0 o posterior de TLS.

Al crear una cuenta de almacenamiento con Azure Portal, la versión mínima de TLS se establece en 1.2 de forma predeterminada.

Para configurar la versión mínima de TLS de una cuenta de almacenamiento existente con Azure Portal, siga estos pasos:

  1. Vaya a la cuenta de almacenamiento en Azure Portal.

  2. En Configuración, seleccione Configuración.

  3. En Versión mínima de TLS, use la lista desplegable para seleccionar la versión mínima de TLS necesaria para acceder a los datos de esta cuenta de almacenamiento.

    Captura de pantalla que muestra cómo configurar la versión mínima de TLS en Azure Portal.

Nota

Después de actualizar la versión mínima de TLS para la cuenta de almacenamiento, el cambio puede tardar hasta 30 segundos en propagarse por completo.

La configuración de la versión de TLS mínima requiere la versión 2019-04-01 o posterior del proveedor de recursos de Azure Storage. Para más información, consulte la API REST del proveedor de recursos de Azure Storage.

Comprobación de la versión mínima de TLS requerida para varias cuentas

Para comprobar la versión mínima de TLS necesaria 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 Resource Graph Explorer, este devuelve una lista de cuentas de almacenamiento y muestra la versión mínima de TLS de cada cuenta:

resources
| where type =~ 'Microsoft.Storage/storageAccounts'
| extend minimumTlsVersion = parse_json(properties).minimumTlsVersion
| project subscriptionId, resourceGroup, name, minimumTlsVersion

Prueba de la versión mínima de TLS desde un cliente

Para probar que la versión mínima de TLS necesaria para una cuenta de almacenamiento impida las llamadas realizadas con una versión anterior, puede configurar un cliente para que use una versión anterior de TLS. Para obtener más información acerca de cómo configurar un cliente para que use una versión específica de TLS, consulte Configuración de la Seguridad de la capa de transporte (TLS) para una aplicación cliente.

Cuando un cliente acceda a una cuenta de almacenamiento mediante una versión de TLS que no cumpla con la versión mínima de TLS configurada para la cuenta, Azure Storage devolverá el código de error 400 (solicitud incorrecta) y un mensaje indicando que la versión de TLS que se usó no está permitida para realizar solicitudes en esta cuenta de almacenamiento.

Uso de Azure Policy para auditar el cumplimiento

Si tiene un gran número de cuentas de almacenamiento, tal vez quiera realizar una auditoría para asegurarse de que todas las cuentas están configuradas para la versión mínima de TLS que requiere la organización. Para auditar un conjunto de cuentas de almacenamiento para su cumplimiento, use Azure Policy. Azure Policy es un servicio que puede usar para crear, asignar y administrar directivas que aplican reglas a los recursos de Azure. Azure Policy le permite mantener esos recursos conforme a lo establecido en los estándares corporativos y los contratos de nivel de servicio. Para más información, consulte la Introducción a Azure Policy.

Creación de una directiva con un efecto de auditoría

Azure Policy admite efectos que determinan lo que sucede cuando una regla de directiva se evalúa con respecto a un recurso. El efecto de auditoría crea una advertencia cuando un recurso no cumple los requisitos, pero no detiene la solicitud. Para más información, consulte Comprender los efectos de Azure Policy.

Para crear una directiva con un efecto de auditoría para la versión mínima de TLS con Azure Portal, siga estos pasos:

  1. En Azure Portal, vaya al servicio Azure Policy.

  2. Seleccione Definiciones en la sección Creación.

  3. Seleccione Agregar definición de directiva para crear una nueva definición de directiva.

  4. En el campo donde se indica la ubicación de la definición, seleccione el botón Más para especificar dónde se encuentra el recurso de directiva de auditoría.

  5. Escriba un nombre para la directiva. Si lo desea, puede escribir también una descripción y la categoría.

  6. En Regla de directivas, agregue la siguiente definición de directiva a la sección policyRule.

    {
      "policyRule": {
        "if": {
          "allOf": [
            {
              "field": "type",
              "equals": "Microsoft.Storage/storageAccounts"
            },
            {
              "not": {
                "field": "Microsoft.Storage/storageAccounts/minimumTlsVersion",
                "equals": "TLS1_2"
              }
            }
          ]
        },
        "then": {
          "effect": "audit"
        }
      }
    }
    
  7. Guarde la directiva.

Asignación de la directiva

A continuación, asigne la directiva a un recurso. El ámbito de la directiva corresponde a ese recurso y a todos los recursos que hay debajo del mismo. Para más información sobre la asignación de directivas, consulte Estructura de asignaciones de Azure Policy.

Para asignar la directiva con Azure Portal, haga lo siguiente:

  1. En Azure Portal, vaya al servicio Azure Policy.
  2. Seleccione Asignaciones en la sección Creación.
  3. Seleccione Asignar directiva para crear una nueva asignación de directiva.
  4. En el campo Ámbito, seleccione el ámbito de la asignación de directiva.
  5. En el campo Definición de directiva, seleccione el botón Más y, a continuación, seleccione la directiva que definió en la sección anterior de la lista.
  6. Escriba un nombre para la asignación de directiva. La descripción es opcional.
  7. Deje la opción Cumplimiento de directivas como Habilitada. Esta configuración no tiene ningún efecto en la directiva de auditoría.
  8. Seleccione Revisar y crear para crear la asignación.

Ver el informe de cumplimiento

Una vez asignada la directiva, puede ver el informe de cumplimiento. El informe de cumplimiento de una directiva de auditoría proporciona información sobre las cuentas de almacenamiento que no cumplen con esa directiva. Para más información, consulte Obtención de datos de cumplimiento de directiva.

El informe de cumplimiento puede tardar varios minutos en estar disponible después de que se cree la asignación de directiva.

Para ver el informe de cumplimiento en Azure Portal, siga estos pasos:

  1. En Azure Portal, vaya al servicio Azure Policy.

  2. Seleccione Cumplimiento.

  3. Filtre los resultados por el nombre de la asignación de directiva que creó en el paso anterior. El informe muestra el número de recursos que no cumplen con la directiva.

  4. Puede explorar en profundidad el informe para obtener más detalles, incluida una lista de cuentas de almacenamiento que no cumplen los requisitos.

    Captura de pantalla que muestra el informe de cumplimiento de la directiva de auditoría para la versión mínima de TLS

Uso de Azure Policy para aplicar la versión mínima de TLS

Azure Policy admite la gobernanza en la nube, asegurándose así de que los recursos de Azure cumplen los requisitos y los estándares establecidos. Para aplicar un requisito mínimo de versión de TLS para las cuentas de almacenamiento de la organización, puede crear una directiva que impida la creación de una nueva cuenta de almacenamiento que establezca un requisito mínimo de TLS en una versión anterior de TLS que la que se indica en la directiva. Esta directiva también impedirá todos los cambios de configuración en una cuenta existente si la configuración de la versión mínima de TLS no es compatible con la directiva.

La directiva de cumplimiento usa el efecto de denegación para impedir que una solicitud cree o modifique una cuenta de almacenamiento para que la versión de TLS mínima ya no se adhiera a los estándares de la organización. Para más información, consulte Comprender los efectos de Azure Policy.

Para crear una directiva con un efecto de denegación para una versión mínima de TLS que sea anterior a TLS 1.2, siga los mismos pasos que se indican en Uso de Azure Policy para auditar el cumplimiento, pero proporcione el siguiente código JSON en la sección policyRule de la definición de directivas:

{
  "policyRule": {
    "if": {
      "allOf": [
        {
          "field": "type",
          "equals": "Microsoft.Storage/storageAccounts"
        },
        {
          "not": {
            "field": "Microsoft.Storage/storageAccounts/minimumTlsVersion",
            "equals": "TLS1_2"
          }
        }
      ]
    },
    "then": {
      "effect": "deny"
    }
  }
}

Después de crear la directiva con el efecto de denegación y asignarla a un ámbito, un usuario no puede crear una cuenta de almacenamiento con una versión de TLS mínima que sea anterior a la 1.2. Asimismo, los usuarios tampoco pueden realizar cambios de configuración en una cuenta de almacenamiento existente que actualmente requiera una versión mínima de TLS que sea anterior a la 1.2. Si intentan hacerlo, se producirá un error. La versión mínima de TLS requerida de la cuenta de almacenamiento debe establecerse en 1.2 para continuar con la creación o la configuración de la cuenta.

En la siguiente imagen se muestra el error que se produce si se intenta crear una cuenta de almacenamiento con una versión mínima de TLS establecida en TLS 1.0 (la versión predeterminada para una nueva cuenta) cuando una directiva con un efecto de denegación requiere que la versión mínima de TLS se establezca en TLS 1.2.

Captura de pantalla que muestra el error que se produce al crear una cuenta de almacenamiento que infringe la directiva

Permisos necesarios para requerir una versión mínima de TLS

Para establecer la propiedad MinimumTlsVersion para la cuenta de almacenamiento, el 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:

Estos roles no proporcionan acceso a los datos de una cuenta de almacenamiento a través de Azure Active Directory (Azure AD). 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 requiera una versión mínima de TLS 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 más información, consulte Roles de administrador de suscripciones clásico, de Azure y de administrador de Azure AD.

Consideraciones sobre la red

Cuando un cliente envía una solicitud a una cuenta de almacenamiento, debe establecer primero una conexión con el punto de conexión público de la cuenta de almacenamiento, antes de procesar las solicitudes. Una vez establecida la conexión, se comprueba la configuración de la versión de TLS mínima. Si la solicitud usa una versión de TLS anterior que la especificada en la configuración, la conexión continuará correctamente, pero la solicitud producirá un error después. Para obtener más información acerca de los puntos de conexión públicos para Azure Storage, consulte Sintaxis del URI de recurso.

Pasos siguientes