Compartir a través de


Multiinquilinato y Azure Storage

Azure Storage es un servicio fundamental que se usa en casi todas las soluciones. A menudo, las soluciones multiinquilino usan Azure Storage para blobs, archivos, colas y almacenamiento de tablas. En esta página, se describen algunas de las características de Azure Storage que son útiles para las soluciones multiinquilino y, a continuación, se proporcionan vínculos a las instrucciones que pueden ayudarle al planear cómo va a usar Azure Storage.

Características de Azure Storage que admiten multiinquilinato

Azure Storage incluye muchas características que admiten multiinquilino.

Firmas de acceso compartido

Cuando se trabaja con Azure Storage desde una aplicación cliente, es importante tener en cuenta si las solicitudes de cliente se deben enviar a través de otro componente que controle, como una red de entrega de contenido o una API, o si el cliente debe conectarse directamente a la cuenta de almacenamiento. Puede haber buenas razones para enviar solicitudes a través de otro componente, incluido el almacenamiento en caché de datos en el perímetro de la red. Sin embargo, en algunas situaciones, es ventajoso que los puntos de conexión de cliente se conecten directamente a Azure Storage para descargar o cargar datos. Esta conexión ayuda a mejorar el rendimiento de la solución, especialmente cuando se trabaja con blobs grandes o un gran número de archivos. También reduce la carga en las aplicaciones y servidores back-end y reduce el número de saltos de red. Una firma de acceso compartido (SAS) permite proporcionar de forma segura a las aplicaciones cliente acceso a los objetos de Azure Storage.

Las firmas de acceso compartido se pueden usar para restringir el ámbito de las operaciones que un cliente puede realizar y los objetos en los que pueden realizar operaciones. Por ejemplo, si tiene una cuenta de almacenamiento compartido para todos los inquilinos y almacena todos los datos del inquilino A en un contenedor de blobs denominado tenanta, puede crear una SAS que solo permita a los usuarios del inquilino A acceder a ese contenedor. Para más información, consulte Modelos de aislamiento para explorar los enfoques que puede usar para aislar los datos de los inquilinos en una cuenta de almacenamiento.

El patrón de clave de acceso limitado es útil como una manera de emitir firmas de acceso compartido restringidas y con ámbito desde la capa de aplicación. Por ejemplo, supongamos que tiene una aplicación multiinquilino que permite a los usuarios cargar vídeos. La API o la capa de aplicación pueden autenticar el cliente mediante su propio sistema de autenticación. A continuación, puede proporcionar una SAS al cliente que les permita cargar un archivo de vídeo en un blob especificado, en un contenedor y una ruta de acceso de blob que especifique. A continuación, el cliente carga el archivo directamente en la cuenta de almacenamiento, lo que evita el ancho de banda adicional y la carga en la API. Si intenta leer datos del contenedor de blobs o si intenta escribir datos en otra parte del contenedor en otro contenedor de la cuenta de almacenamiento, Azure Storage bloquea la solicitud. La firma expira después de un período de tiempo configurable.

Las directivas de acceso almacenadas amplían la funcionalidad de SAS, que permite definir una única directiva que se puede usar al emitir varias firmas de acceso compartido.

Control de acceso basado en la identidad

Azure Storage también proporciona control de acceso basado en identidades mediante el identificador de Microsoft Entra ID. Esta funcionalidad también le permite usar el control de acceso basado en atributos, que proporciona acceso más preciso a las rutas de acceso de blob o a los blobs que se han etiquetado con un identificador de inquilino específico.

Administración del ciclo de vida

Cuando se usa Blob Storage en una solución multiinquilino, es posible que los inquilinos requieran directivas diferentes para la retención de datos. Al almacenar grandes volúmenes de datos, es posible que también desee configurar los datos de un inquilino específico para que se trasladen automáticamente a los niveles de almacenamiento de acceso esporádico o de archivo con fines de optimización de costos.

Considere la posibilidad de usar directivas de administración del ciclo de vida para establecer el ciclo de vida de los blobs para todos los inquilinos o para un subconjunto de inquilinos. Una directiva de administración del ciclo de vida se puede aplicar a contenedores de blobs o a un subconjunto de blobs dentro de un contenedor. Sin embargo, hay límites en el número de reglas que puede especificar en una directiva de administración del ciclo de vida. Asegúrese de planear y probar el uso de esta característica en un entorno multiinquilino y considere la posibilidad de implementar varias cuentas de almacenamiento si va a superar los límites.

Almacenamiento inmutable

Al configurar el almacenamiento de blobs inmutable en contenedores de almacenamiento con directivas de retención basadas en el tiempo, Azure Storage impide la eliminación o modificación de los datos antes de un tiempo especificado. La prevención se aplica en la capa de la cuenta de almacenamiento y se aplica a todos los usuarios. Ni siquiera los administradores de la organización pueden eliminar datos inmutables.

El almacenamiento inmutable puede ser útil cuando se trabaja con inquilinos que tienen requisitos legales o de cumplimiento para mantener datos o registros. Sin embargo, debe considerar cómo se usa esta característica en el contexto del ciclo de vida del inquilino. Por ejemplo, si los inquilinos se retiraron y solicitan la eliminación de sus datos, es posible que no pueda atender sus solicitudes. Si usa almacenamiento inmutable para los datos de los inquilinos, tenga en cuenta cómo abordar este problema en sus términos de servicio.

Copia del lado servidor

En un sistema multiinquilino, a veces es necesario mover datos de una cuenta de almacenamiento a otra. Por ejemplo, si mueve un inquilino entre stamps de implementación o reequilibra un conjunto particionado de cuentas de almacenamiento, debe copiar o mover los datos de un inquilino específico. Al trabajar con grandes volúmenes de datos, es aconsejable usar las API de copia del lado servidor para reducir el tiempo necesario para migrar los datos.

La herramienta AzCopy es una aplicación que se puede ejecutar desde su propio equipo, o desde una máquina virtual, para administrar el proceso de copia. AzCopy es compatible con la característica de copia del lado servidor y proporciona una interfaz de línea de comandos que se puede ejecutar desde sus propias soluciones. AzCopy también es útil para cargar y descargar grandes volúmenes de datos.

Si necesita usar las API de copia del lado servidor directamente desde el código, considere la posibilidad de usar la API Put Block From URL, la API Put Page From URL, la API Append Block From URL y la API Copy Blob From URL cuando trabaje con blobs más pequeños.

Replicación de objetos

La característica replicación de objetos replica automáticamente los datos entre una cuenta de almacenamiento de origen y de destino. La replicación de objetos es asincrónica. En una solución multiinquilino, esta característica puede ser útil cuando necesita replicar continuamente datos entre stamps de implementación o en una implementación del patrón Geode.

Cifrado

Azure Storage le permite proporcionar claves de cifrado para los datos. En una solución multiinquilino, considere la posibilidad de combinar esta funcionalidad con ámbitos de cifrado, lo que le permite definir claves de cifrado diferentes para distintos inquilinos, incluso si sus datos se almacenan en la misma cuenta de almacenamiento. Mediante el uso conjunto de estas características, también puede proporcionar a los inquilinos control sobre sus propios datos. Si necesita desactivar su cuenta y elimina la clave de cifrado, esto hará que no se pueda acceder a sus datos.

Supervisión

Al trabajar con una solución multiinquilino, tenga en cuenta si necesita medir el consumo de cada inquilino y definir las métricas específicas de las que necesita realizar un seguimiento, como la cantidad de almacenamiento usada para cada inquilino (la capacidad) o el número de operaciones realizadas para los datos de cada inquilino. También puede usar la asignación de costos para realizar un seguimiento del costo del uso de cada inquilino y habilitar la contracargo en varias suscripciones.

Azure Storage proporciona funcionalidades de supervisión integradas. Es importante tener en cuenta los servicios que usará dentro de la cuenta de Azure Storage. Por ejemplo, cuando se trabaja con blobs, es posible ver la capacidad total de una cuenta de almacenamiento, pero no un único contenedor. Por el contrario, cuando se trabaja con recursos compartidos de archivos, es posible ver la capacidad de cada recurso compartido, pero no de cada carpeta.

También puede registrar todas las solicitudes realizadas a Azure Storage y, a continuación, puede agregar y analizar esos registros. Este método da más flexibilidad en la forma de agregar y agrupar datos en cada inquilino. Sin embargo, en soluciones que crean grandes volúmenes de solicitudes a Azure Storage, es importante tener en cuenta si la ventaja que obtiene de este enfoque justifica el costo implicado en la captura y el procesamiento de esos registros.

El inventario de Azure Storage proporciona otro enfoque para medir el tamaño total de un contenedor de blobs.

Modelos de aislamiento

Al trabajar con un sistema multiinquilino en el que se usa Azure Storage, debe tomar una decisión sobre el nivel de aislamiento que quiere usar. Azure Storage admite varios modelos de aislamiento.

Cuentas de almacenamiento por inquilino

El nivel más sólido de aislamiento es implementar una cuenta de almacenamiento dedicada para un inquilino. Esto garantiza que todas las claves de almacenamiento estén aisladas y se puedan rotar de forma independiente. Este enfoque le permite escalar la solución para evitar límites y cuotas aplicables a cada cuenta de almacenamiento, pero también debe tener en cuenta el número máximo de cuentas de almacenamiento que se pueden implementar en una sola suscripción de Azure.

Nota

Azure Storage tiene muchas cuotas y límites que debe tener en cuenta al seleccionar un modelo de aislamiento. Entre ellos se incluyen los límites de servicio de Azure, los objetivos de escalabilidad y los objetivos de escalabilidad para el proveedor de recursos de Azure Storage.

Además, cada componente de Azure Storage proporciona más opciones para el aislamiento de inquilinos.

Modelos de aislamiento de Blob Storage

En la tabla siguiente se resumen las diferencias entre los principales modelos de aislamiento de inquilinato para blobs de Azure Storage:

Consideración Contenedores de blobs compartidos Contenedores de blobs por inquilino Cuentas de almacenamiento por inquilino
Aislamiento de datos Bajo-medio. Uso de rutas de acceso para identificar los datos de cada inquilino o espacios de nombres jerárquicos Mediana. Uso de direcciones URL de SAS con ámbito de contenedor para admitir el aislamiento de seguridad Alto
Aislamiento de rendimiento Bajo Baja. La mayoría de las cuotas y los límites se aplican a toda la cuenta de almacenamiento Alto
Complejidad de la implementación Bajo Medio Alto
Complejidad operativa Bajo Medio Alto
Escenario de ejemplo Almacenamiento de un pequeño número de blobs por inquilino Emisión de direcciones URL de SAS con ámbito de inquilino Unidades de escalado de implementación independientes para cada inquilino

Contenedores de blobs compartidos

Al trabajar con Blob Storage, puede optar por usar un contenedor de blobs compartido y, a continuación, usar rutas de acceso de blob para separar los datos de cada inquilino:

Id. de inquilino Ruta de acceso de blob de ejemplo
tenant-a https://contoso.blob.core.windows.net/sharedcontainer/tenant-a/blob1.mp4
tenant-b https://contoso.blob.core.windows.net/sharedcontainer/tenant-b/blob2.mp4

Aunque este enfoque es fácil de implementar, en muchos escenarios, las rutas de acceso de blob no proporcionan suficiente aislamiento entre inquilinos. Esto se debe a que el almacenamiento de blobs no trabaja con un concepto de directorios o carpetas. Esto significa que no se puede asignar acceso a todos los blobs dentro de una ruta de acceso especificada. Sin embargo, Azure Storage proporciona una capacidad para enumerar blobs que comienzan con un prefijo especificado, lo que puede resultar útil cuando se trabaja con contenedores de blobs compartidos y no se requiere control de acceso de nivel de directorio.

La característica de espacio de nombres jerárquico de Azure Storage proporciona la capacidad de tener un concepto más sólido de un directorio o carpeta, incluido el control de acceso específico del directorio. Esto puede ser útil en algunos escenarios multiinquilino en los que tiene contenedores de blobs compartidos, pero quiere conceder acceso a los datos de un solo inquilino.

En algunas soluciones multiinquilino, es posible que solo tenga que almacenar un único blob o conjunto de blobs para cada inquilino, como iconos de inquilino para personalizar una interfaz de usuario. En estos escenarios, un único contenedor de blobs compartido puede ser suficiente. Puede usar el identificador de inquilino como nombre del blob y, a continuación, leer un blob específico en lugar de enumerar una ruta de acceso de blob.

Cuando trabaje con contenedores compartidos, tenga en cuenta si necesita realizar un seguimiento de los datos y el uso del servicio de Azure Storage para cada inquilino y planear un enfoque para hacerlo. Para más información, consulte Supervisión.

Contenedores de blobs por inquilino

Puede crear contenedores de blobs individuales para cada inquilino dentro de una sola cuenta de almacenamiento. No hay ningún límite en el número de contenedores de blobs que puede crear dentro de una cuenta de almacenamiento.

Al crear contenedores para cada inquilino, puede usar el control de acceso de Azure Storage, incluido SAS, para administrar el acceso a los datos de cada inquilino. También puede supervisar fácilmente la capacidad que usa cada contenedor.

Modelos de aislamiento de almacenamiento de archivos

En la tabla siguiente se resumen las diferencias entre los principales modelos de aislamiento de inquilinato para archivos de Azure Storage:

Consideración Recursos compartidos de archivos compartidos Recursos compartidos de archivos por inquilino Cuentas de almacenamiento por inquilino
Aislamiento de datos Medio alto. Aplicación de reglas de autorización para directorios y archivos específicos del inquilino Medio-alto Alto
Aislamiento de rendimiento Bajo Bajo-medio. La mayoría de las cuotas y los límites se aplican a toda la cuenta de almacenamiento, pero establecen cuotas de tamaño en un nivel por recurso compartido Alto
Complejidad de la implementación Bajo Medio Alto
Complejidad operativa Bajo Medio Alto
Escenario de ejemplo La aplicación controla todo el acceso a los archivos Los inquilinos acceden a sus propios archivos Unidades de escalado de implementación independientes para cada inquilino

Recursos compartidos de archivos compartidos

Al trabajar con recursos compartidos de archivos, puede optar por usar un recurso compartido de archivos compartido y, a continuación, usar rutas de acceso de archivo para separar los datos de cada inquilino:

Id. de inquilino Ruta de acceso de archivo de ejemplo
tenant-a https://contoso.file.core.windows.net/share/tenant-a/blob1.mp4
tenant-b https://contoso.file.core.windows.net/share/tenant-b/blob2.mp4

Cuando se usa una aplicación que se puede comunicar mediante el protocolo Bloque de mensajes del servidor (SMB) y cuando se usa Active Directory Domain Services local o en Azure, los recursos compartidos de archivos admiten la autorización tanto en el recurso compartido como en los niveles de directorio o archivo.

En otros escenarios, considere la posibilidad de usar SAS para conceder acceso a recursos compartidos de archivos o archivos específicos. Cuando se usa SAS, no se puede conceder acceso a los directorios.

Cuando trabaje con recursos compartidos de archivos compartidos, tenga en cuenta si necesita realizar un seguimiento de los datos y el uso del servicio de Azure Storage para cada inquilino y, a continuación, planee un enfoque para hacerlo (según sea necesario). Para más información, consulte Supervisión.

Recursos compartidos de archivos por inquilino

Puede crear recursos compartidos de archivos individuales para cada inquilino dentro de una sola cuenta de almacenamiento. No hay ningún límite en el número de recursos compartidos de archivos que puede crear dentro de una cuenta de almacenamiento.

Al crear recursos compartidos de archivos para cada inquilino, puede usar el control de acceso de Azure Storage, incluido SAS, para administrar el acceso a los datos de cada inquilino. También puede supervisar fácilmente la capacidad que usa cada recurso compartido de archivos.

Modelos de aislamiento de Table Storage

En la tabla siguiente se resumen las diferencias entre los principales modelos de aislamiento de inquilinato para tablas de Azure Storage:

Consideración Tablas compartidas con claves de partición por inquilino Tablas por inquilino Cuentas de almacenamiento por inquilino
Aislamiento de datos Baja. La aplicación aplica el aislamiento Baja-Media Alto
Aislamiento de rendimiento Bajo Baja. La mayoría de las cuotas y los límites se aplican a toda la cuenta de almacenamiento Alto
Complejidad de la implementación Bajo Medio Alto
Complejidad operativa Bajo Medio Alto
Escenario de ejemplo Solución multiinquilino grande con una capa de aplicación compartida Emisión de direcciones URL de SAS con ámbito de inquilino Unidades de escalado de implementación independientes para cada inquilino

Tablas compartidas con claves de partición por inquilino

Al usar Table Storage con una sola tabla compartida, puede considerar la posibilidad de usar la compatibilidad integrada para la creación de particiones. Cada entidad debe incluir una clave de partición. Un identificador de inquilino suele ser una buena opción para una clave de partición.

Las directivas y firmas de acceso compartido permiten especificar un intervalo de claves de partición y Azure Storage garantiza que las solicitudes que contienen la firma solo puedan acceder a los intervalos de claves de partición especificados. Esto le permite implementar el patrón de clave de acceso limitado, que permite a los clientes que no son de confianza acceder a la partición de un solo inquilino, sin afectar a otros inquilinos.

En el caso de las aplicaciones a gran escala, tenga en cuenta el rendimiento máximo de cada partición de tabla y la cuenta de almacenamiento.

Tablas por inquilino

Puede crear tablas individuales para cada inquilino dentro de una sola cuenta de almacenamiento. No hay ningún límite en el número de tablas que puede crear dentro de una cuenta de almacenamiento.

Al crear tablas para cada inquilino, puede usar el control de acceso de Azure Storage, incluido SAS, para administrar el acceso a los datos de cada inquilino.

Modelos de aislamiento de Queue Storage

En la tabla siguiente se resumen las diferencias entre los principales modelos de aislamiento de inquilinato para colas de Azure Storage:

Consideración Colas compartidas Colas por inquilino Cuentas de almacenamiento por inquilino
Aislamiento de datos Bajo Baja-Media Alto
Aislamiento de rendimiento Bajo Baja. La mayoría de las cuotas y los límites se aplican a toda la cuenta de almacenamiento Alto
Complejidad de la implementación Bajo Medio Alto
Complejidad operativa Bajo Medio Alto
Escenario de ejemplo Solución multiinquilino grande con una capa de aplicación compartida Emisión de direcciones URL de SAS con ámbito de inquilino Unidades de escalado de implementación independientes para cada inquilino

Colas compartidas

Si decide compartir una cola, tenga en cuenta las cuotas y los límites que se aplican. En soluciones con un volumen de solicitudes elevado, tenga en cuenta si el rendimiento de destino de 2000 mensajes por segundo es suficiente.

Las colas no proporcionan particiones ni subcolas, por lo que se podrían entremezclar los datos de todos los inquilinos.

Colas por inquilino

Puede crear colas individuales para cada inquilino dentro de una sola cuenta de almacenamiento. No hay ningún límite en el número de colas que puede crear dentro de una cuenta de almacenamiento.

Al crear colas para cada inquilino, puede usar el control de acceso de Azure Storage, incluido SAS, para administrar el acceso a los datos de cada inquilino.

Al crear dinámicamente colas para cada inquilino, tenga en cuenta cómo consumirá la capa de aplicación los mensajes de la cola de cada inquilino. Para escenarios más avanzados, considere la posibilidad de usar Azure Service Bus, que admite características como temas y suscripciones, sesiones y reenvío automático de mensajes, lo que puede ser útil en una solución multiinquilino.

Colaboradores

Microsoft mantiene este artículo. Originalmente lo escribieron los siguientes colaboradores.

Autor principal:

Otros colaboradores:

Para ver los perfiles no públicos de LinkedIn, inicie sesión en LinkedIn.

Pasos siguientes

Revise los enfoques de almacenamiento y datos para multiinquilino.