Share via


Aspectos de seguridad de las condiciones de asignación de roles de Azure en Azure Blob Storage

Para proteger completamente los recursos mediante el control de acceso basado en atributos de Azure (ABAC de Azure), también debe proteger los atributos utilizados en las condiciones de asignación de roles de Azure. Por ejemplo, si la condición se basa en una ruta de acceso de archivo, debe tener en cuenta que el acceso podría verse comprometido si la entidad de seguridad tiene un permiso sin restricciones para cambiar el nombre de una ruta de acceso de archivo.

En este artículo se describen las consideraciones de seguridad que debe tener en cuenta en las condiciones de asignación de roles.

Importante

Actualmente, el control de acceso basado en atributos de Azure (Azure ABAC) está disponible con carácter general para controlar el acceso solo a Azure Blob Storage, Azure Data Lake Storage Gen2 y Azure Queues mediante los atributos request, resource, environment y principal en el nivel de rendimiento de las cuentas de almacenamiento premium y estándar. Actualmente, el atributo de recurso de metadatos del contenedor y el atributo de solicitud de inclusión de blobs de lista se encuentran en VERSIÓN PRELIMINAR. Para información completa sobre el estado de las características de ABAC para Azure Storage, consulte Estado de las características de condición en Azure Storage.

Consulte Términos de uso complementarios para las versiones preliminares de Microsoft Azure para conocer los términos legales que se aplican a las características de Azure que se encuentran en la versión beta, en versión preliminar o que todavía no se han publicado para que estén disponibles con carácter general.

Uso de otros mecanismos de autorización

Las condiciones de asignación de roles solo se evalúan cuando se usa Azure RBAC para la autorización. Estas condiciones se pueden omitir si se permite el acceso mediante métodos de autorización alternativos:

Del mismo modo, las condiciones no se evalúan cuando se concede el acceso mediante listas de control de acceso (ACL) en cuentas de almacenamiento con un espacio de nombres jerárquico (HNS).

Puede evitar la autorización con SAS de nivel de servicio, SAS de nivel de cuenta y con clave compartida deshabilitando la autorización con clave compartida para la cuenta de almacenamiento. Dado que la SAS de delegación de usuarios depende de Azure RBAC, las condiciones de asignación de roles se evalúan al usar este método de autorización.

Protección de los atributos de almacenamiento utilizados en condiciones

Ruta del blob

Al usar una ruta de acceso de blob como atributo @Resource de una condición, también debe impedir que los usuarios vuelvan a asignar un nombre a un blob para obtener acceso a un archivo al usar cuentas que tengan un espacio de nombres jerárquico. Por ejemplo, si desea crear una condición basada en la ruta de acceso del blob, también debe restringir el acceso del usuario a las siguientes acciones:

Acción Descripción
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/move/action Esta acción permite a los clientes cambiar el nombre de un archivo mediante Path Create API.
Microsoft.Storage/storageAccounts/blobServices/containers/blobs/runAsSuperUser/action Esta acción permite el acceso a varias operaciones de ruta de acceso y de sistema de archivos.

Etiquetas de índice de blobs

Las etiquetas de índice de blobs se usan como atributos de forma libre para las condiciones en el almacenamiento. Si crea condiciones de acceso mediante estas etiquetas, también debe proteger las propias etiquetas. Específicamente, el elemento DataAction Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write permite a los usuarios modificar las etiquetas de un objeto del almacenamiento. Puede restringir esta acción para evitar que los usuarios manipulen una clave o valor de etiqueta para obtener acceso a objetos no autorizados.

Además, si se usan etiquetas de índice de blobs en las condiciones, los datos podrían ser vulnerables si dichos datos y las etiquetas de índice asociadas se actualizan en distintas operaciones. Puede usar condiciones @Request en operaciones de escritura de blobs para exigir que las etiquetas de índice se establezcan en la misma operación de actualización. Este enfoque puede ayudar a proteger los datos desde el momento en que se escriben en el almacenamiento.

Etiquetas en blobs copiados

De forma predeterminada, las etiquetas de índice de blobs no se copian de un blob de origen al destino cuando se usa la API Copiar Blob o cualquiera de sus variantes. Para conservar el ámbito de acceso del blob tras la copia, se deben copiar también las etiquetas.

Etiquetas en instantáneas

Las etiquetas de las instantáneas de blob no se pueden modificar. Por lo tanto, deberá actualizar las etiquetas de un blob antes de tomar la instantánea. Si modifica las etiquetas de un blob base, las etiquetas de su instantánea seguirán teniendo su valor anterior.

Si se modifica una etiqueta de un blob base después de tomar una instantánea, el ámbito de acceso del blob base podría ser diferente al de la instantánea.

Etiquetas en versiones de blobs

Las etiquetas de índice de blobs no se copian cuando se crea una versión de blob mediante las API Put Blob, Put Block List o Copy Blob. Puede especificar etiquetas mediante el encabezado de estas API.

Las etiquetas se pueden establecer individualmente en un blob base actual y en cada versión de blob. Al modificar etiquetas en un blob base, las etiquetas de las versiones anteriores no se actualizarán. Si quiere cambiar el ámbito de acceso de un blob y todas sus versiones mediante etiquetas, debe actualizar las etiquetas del blob base, así como las de todas sus versiones.

Limitaciones de consulta y filtrado para versiones e instantáneas

Cuando use etiquetas para consultar y filtrar los blobs de un contenedor, solo se incluirán los blobs base en la respuesta. No se incluyen las versiones del blob ni las instantáneas con las claves y los valores solicitados.

Roles y permisos

Si usa condiciones de asignación de roles con los roles integrados en Azure, debe revisar detenidamente todos los permisos que conceda el rol a una entidad de seguridad.

Asignaciones de roles heredadas

Las asignaciones de roles se pueden configurar para un grupo de administración, una suscripción, un grupo de recursos, una cuenta de almacenamiento o un contenedor, y se heredan en cada nivel en el orden indicado. RBAC de Azure tiene un modelo de adición, por lo que los permisos efectivos son la suma de las asignaciones de roles en cada nivel. Si una entidad de seguridad tiene asignado el mismo permiso mediante varias asignaciones de roles, el acceso de una operación que usa ese permiso se evalúa por separado para cada asignación en cada nivel.

Puesto que las condiciones se implementan como tales en las asignaciones de roles, cualquier asignación de roles incondicional puede permitir a los usuarios omitir la condición. Supongamos que asigna el rol Colaborador de datos de Storage Blob a un usuario para una cuenta de almacenamiento y en una suscripción, pero agrega una condición solo a la asignación de la cuenta de almacenamiento. El resultado es que el usuario tiene acceso sin restricciones a la cuenta de almacenamiento mediante la asignación de roles en el nivel de suscripción.

Por lo tanto, debería aplicar condiciones de forma coherente para todas las asignaciones de roles de una jerarquía de recursos.

Otras consideraciones

Operaciones de condición que escriben blobs

Muchas de las operaciones de escritura de blobs requieren el permiso Microsoft.Storage/storageAccounts/blobServices/containers/blobs/write o Microsoft.Storage/storageAccounts/blobServices/containers/blobs/add/action. Los roles integrados, como Propietario de datos de Storage Blob y Colaborador de datos de Storage Blob, conceden ambos permisos a una entidad de seguridad.

Al definir una condición de asignación de roles para estos roles, debe usar condiciones idénticas en ambos permisos para garantizar restricciones de acceso coherentes para las operaciones de escritura.

Comportamiento de Copy Blob y Copy Blob from URL

Para las operaciones Copy Blob y Copy Blob From URL, las condiciones @Request que usan la ruta de acceso del blob como atributo en la acción Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/write y sus suboperaciones solo se evalúan para el blob de destino.

En el caso de las condiciones del blob de origen, se evalúan las condiciones @Resource de la acción Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags/read.

Consulte también