Compartilhar via


Multilocatário e Armazenamento do Microsoft Azure

O Armazenamento do Azure é um serviço fundamental usado em quase todas as soluções. As soluções multilocatários geralmente usam o Armazenamento do Azure para armazenamento de blobs, arquivos, filas e tabelas. Nesta página, descrevemos alguns dos recursos do Armazenamento do Azure que são úteis para soluções multilocatários e fornecemos links para as diretrizes que poderão ajudar quando você estiver planejando o uso do Armazenamento do Azure.

Recursos do Armazenamento do Azure que dão suporte à multilocação

O Armazenamento do Azure inclui muitos recursos que dão suporte à multilocação.

Assinaturas de acesso compartilhado

Quando você trabalha com o Armazenamento do Azure de um aplicativo cliente, é importante considerar se as solicitações de cliente devem ser enviadas por meio de outro componente que você controla, como uma rede ou API de distribuição de conteúdo, ou se o cliente deve se conectar diretamente à sua conta de armazenamento. Pode haver bons motivos para enviar solicitações por meio de outro componente, incluindo o cache de dados na borda da rede. No entanto, em algumas situações, é vantajoso que os pontos de extremidade do cliente se conectem diretamente ao Armazenamento do Azure para baixar ou carregar dados. Essa conexão ajuda você a melhorar o desempenho da solução, especialmente quando trabalha com blobs grandes ou um grande número de arquivos. Ela também reduz a carga em seus aplicativos e servidores de back-end e reduz o número de saltos de rede. Uma SAS (Assinatura de Acesso Compartilhado) permite que você forneça com segurança aos aplicativos cliente acesso a objetos no Armazenamento do Azure.

Assinaturas de acesso compartilhado podem ser usadas para restringir o escopo de operações que um cliente pode executar e os objetos nos quais eles podem executar operações. Por exemplo, se você tiver uma conta de armazenamento compartilhado para todos os seus locatários e armazenar todos os dados do locatário A em um contêiner de blob chamado tenanta, poderá criar uma SAS que permita apenas que os usuários do locatário A acessem esse contêiner. Para obter mais informações, confira Modelos de isolamento para explorar as abordagens que você pode usar para isolar os dados de seus locatários em uma conta de armazenamento.

O Padrão de chave limitada é útil como uma maneira de emitir assinaturas de acesso compartilhado restritas e com escopo da camada de aplicativo. Por exemplo, suponha que você tenha um aplicativo multilocatário que permite que os usuários carreguem vídeos. Sua API ou camada de aplicativo pode autenticar o cliente usando seu sistema de autenticação. Você pode fornecer uma SAS para o cliente que permite carregar um arquivo de vídeo em um blob especificado, em um contêiner e caminho de blob especificado. O cliente carrega o arquivo diretamente na conta de armazenamento, evitando a carga e largura de banda extra em sua API. Se eles tentarem ler dados do contêiner de blob ou gravar dados em uma parte diferente do contêiner em outro contêiner na conta de armazenamento, o Armazenamento do Azure bloqueará a solicitação. A assinatura expira após um período de tempo configurável.

As políticas de acesso armazenadas estendem a funcionalidade SAS, o que permite definir uma única política que pode ser usada ao emitir várias assinaturas de acesso compartilhado.

Controle de acesso baseado em identidade

O Armazenamento do Azure também fornece controle de acesso baseado em identidade usando o Microsoft Entra ID. Essa funcionalidade também permite que você use o controle de acesso baseado em atributo, que fornece acesso mais refinado a caminhos de blob ou a blobs marcados com uma ID de locatário específica.

Gerenciamento do ciclo de vida

Quando você usa o armazenamento de blobs em uma solução multilocatário, seus locatários podem exigir políticas diferentes para retenção de dados. Ao armazenar grandes volumes de dados, talvez você também queira configurar os dados para que um locatário específico seja movido automaticamente para as camadas de armazenamento de arquivos ou esporádico, para fins de otimização de custos.

Considere usar políticas de gerenciamento de ciclo de vida para definir o ciclo de vida do blob para todos os locatários ou para um subconjunto de locatários. Uma política de gerenciamento de ciclo de vida pode ser aplicada a contêineres de blob ou a um subconjunto de blobs dentro de um contêiner. No entanto, há limites no número de regras que você pode especificar em uma política de gerenciamento de ciclo de vida. Planeje e teste o uso desse recurso em um ambiente multilocatário e considere implantar várias contas de armazenamento, se você exceder os limites.

Armazenamento imutável

Quando você configura o armazenamento de blobs imutável em contêineres de armazenamento com políticas de retenção baseadas em tempo, o Armazenamento do Azure impede a exclusão ou modificação dos dados antes de um horário especificado. A prevenção é imposta na camada da conta de armazenamento e se aplica a todos os usuários. Nem mesmo os administradores da sua organização podem excluir dados imutáveis.

O armazenamento imutável pode ser útil quando você trabalha com locatários que têm requisitos legais ou de conformidade para manter dados ou registros. No entanto, você deve considerar como esse recurso é usado no contexto do ciclo de vida do locatário. Por exemplo, se os locatários forem removidos e solicitarem a exclusão de seus dados, talvez você não consiga atender às solicitações deles. Se você usar o armazenamento imutável para os dados de seus locatários, considere como resolver esse problema em seus termos de serviço.

Cópia do lado do servidor

Em um sistema multilocatário, às vezes há a necessidade de mover dados de uma conta de armazenamento para outra. Por exemplo, se você mover um locatário entre selos de implantação ou rebalancear um conjunto fragmentado de contas de armazenamento, precisará copiar ou mover dados de um locatário específico. Quando você trabalha com grandes volumes de dados, é recomendável usar APIs de cópia do lado do servidor para diminuir o tempo necessário para migrar os dados.

A ferramenta AzCopy é um aplicativo que você pode executar em seu computador ou em uma máquina virtual para gerenciar o processo de cópia. O AzCopy é compatível com o recurso de cópia do lado do servidor e fornece uma interface de linha de comando programável que você pode executar em suas próprias soluções. O AzCopy também é útil para carregar e baixar grandes volumes de dados.

Se você precisar usar as APIs de cópia do lado do servidor diretamente do código, considere usar a API Colocar Bloco da URL, a API Colocar Página da URL, a API Acrescentar Bloco da URL e a API Copiar Blob da URL ao trabalhar com blobs menores.

Replicação de objeto

O recurso Replicação de objeto replica automaticamente os dados entre uma conta de armazenamento de origem e de destino. A replicação do objeto é assíncrona. Em uma solução multilocatário, este recurso pode ser útil quando você precisa replicar continuamente os dados entre selos de implantação ou em uma implementação do padrão Geode.

Criptografia

O Armazenamento do Azure permite que você forneça chaves de criptografia para seus dados. Em uma solução multilocatário, considere combinar essa funcionalidade com escopos de criptografia, que permitem definir chaves de criptografia diferentes para locatários diferentes, mesmo que seus dados sejam armazenados na mesma conta de armazenamento. Usando esses recursos juntos, você também pode fornecer aos locatários controle sobre seus próprios dados. Se precisar desativar sua conta, excluir a chave de criptografia assegura que os dados não estarão mais acessíveis.

Monitoramento

Ao trabalhar com uma solução multilocatário, considere se você precisa medir o consumo de cada locatário e definir as métricas específicas necessárias para acompanhar, como a quantidade de armazenamento usada para cada locatário (a capacidade) ou o número de operações executadas para os dados de cada locatário. Você também pode usar a alocação de custos para acompanhar o custo do uso de cada locatário e habilitar o estorno em várias assinaturas.

O Armazenamento do Azure fornece recursos de monitoramento integrados. É importante considerar os serviços que você usará na conta de Armazenamento do Azure. Por exemplo, quando você trabalha com blobs, é possível exibir a capacidade total de uma conta de armazenamento, mas não um único contêiner. Por outro lado, quando você trabalha com compartilhamentos de arquivos, é possível ver a capacidade de cada compartilhamento, mas não para cada pasta.

Você também pode registrar todas as solicitações feitas no Armazenamento do Azure, agregar e analisar esses logs. Essa abordagem oferece mais flexibilidade na forma como você agrega e agrupa dados para cada locatário. No entanto, em soluções que criam grandes volumes de solicitações para o Armazenamento do Azure, é importante considerar se o benefício obtido com essa abordagem justifica o custo envolvido na captura e processamento desses logs.

O inventário do Armazenamento do Azure fornece outra abordagem para medir o tamanho total de um contêiner de blob.

Modelos de isolamento

Ao trabalhar com um sistema multilocatário usando o Armazenamento do Azure, você precisará tomar uma decisão sobre o nível de isolamento que deseja usar. O Armazenamento do Azure dá suporte a vários modelos de isolamento.

Contas de armazenamento por locatário

O nível mais forte de isolamento é implantar uma conta de armazenamento dedicada para um locatário. Isso garante que todas as chaves de armazenamento sejam isoladas e possam ser giradas independentemente. Essa abordagem permite dimensionar sua solução para evitar limites e cotas aplicáveis a cada conta de armazenamento, mas você também precisa considerar o número máximo de contas de armazenamento que podem ser implantadas em uma única assinatura do Azure.

Observação

O Armazenamento do Azure tem muitas cotas e limites que você deverá considerar ao selecionar um modelo de isolamento. Isso inclui limites de serviço do Azure, destinos de escalabilidade e metas de escalabilidade para o provedor de recursos de Armazenamento do Azure.

Além disso, cada componente do Armazenamento do Azure fornece outras opções para isolamento de locatário.

Modelos de isolamento de armazenamento de blobs

A tabela a seguir resume as diferenças entre os principais modelos de isolamento de locação para os blobs de Armazenamento do Azure:

Consideração Contêineres de blob compartilhados Contêineres de blob por locatário Contas de armazenamento por locatário
Isolamento de dados Médio-baixo. Usar caminhos para identificar os dados de cada locatário ou os namespaces hierárquicos Média. Usar URLs SAS com escopo de contêiner para ter suporte ao isolamento de segurança Alto
Isolamento de desempenho Baixo Baixo. A maioria das cotas e limites se aplica a toda a conta de armazenamento Alto
Complexidade da implantação Baixo Médio Alto
Complexidade operacional Baixo Médio Alto
Cenário de exemplo Armazenando um pequeno número de blobs por locatário Emitir URLs SAS com escopo de locatário Selos de implantação separados para cada locatário

Contêineres de blob compartilhados

Ao trabalhar com o armazenamento de blobs, você poderá optar por usar um contêiner de blob compartilhado e usar caminhos de blob para separar dados para cada locatário:

ID do locatário Exemplo de caminho de blob
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

Embora essa abordagem seja simples de implementar, em muitos cenários, os caminhos de blob não fornecem isolamento suficiente entre locatários. Isso ocorre porque o armazenamento de blobs não fornece um conceito de diretórios ou pastas. Isso significa que você não pode atribuir acesso a todos os blobs em um caminho especificado. No entanto, o Armazenamento do Azure fornece uma capacidade de listar (enumerar) blobs que começam com um prefixo especificado, o que pode ser útil quando você trabalha com contêineres de blob compartilhados e não requer controle de acesso no nível do diretório.

O recurso de namespace hierárquico do Armazenamento do Azure fornece a capacidade de ter um conceito mais forte de um diretório ou pasta, incluindo o controle de acesso específico do diretório. Isso pode ser útil em alguns cenários multilocatários em que você compartilhou contêineres de blob, mas deseja conceder acesso aos dados de um único locatário.

Em algumas soluções multilocatários, talvez seja necessário armazenar apenas um único blob ou um conjunto de blobs para cada locatário, como ícones de locatário para personalizar uma interface do usuário. Nesses cenários, um único contêiner de blob compartilhado pode ser suficiente. Você pode usar o identificador de locatário como o nome do blob e ler um blob específico em vez de enumerar um caminho de blob.

Ao trabalhar com contêineres compartilhados, considere se você precisa acompanhar os dados e o uso do serviço de Armazenamento do Azure para cada locatário e planejar uma abordagem para fazer isso. Confira Monitoramento para obter mais informações.

Contêineres de blob por locatário

Você pode criar contêineres de blob individuais para cada locatário em uma única conta de armazenamento. Não há limite para o número de contêineres de blob que você pode criar em uma conta de armazenamento.

Ao criar contêineres para cada locatário, você poderá usar o controle de acesso do Armazenamento do Azure, incluindo SAS, para gerenciar o acesso aos dados de cada locatário. Você também pode monitorar facilmente a capacidade que cada contêiner usa.

Modelos de isolamento de armazenamento de arquivos

A tabela a seguir resume as diferenças entre os principais modelos de isolamento de locação para os arquivos de Armazenamento do Azure:

Consideração Compartilhamentos de arquivos compartilhados Compartilhamentos de arquivos por locatário Contas de armazenamento por locatário
Isolamento de dados Médio-alto. Aplicar regras de autorização para arquivos e diretórios específicos do locatário Médio-alto Alto
Isolamento de desempenho Baixo Médio-baixo. A maioria das cotas e limites se aplica a toda a conta de armazenamento, mas define cotas de tamanho em um nível por compartilhamento Alto
Complexidade da implantação Baixo Médio Alto
Complexidade operacional Baixo Médio Alto
Cenário de exemplo O aplicativo controla todo o acesso aos arquivos Os locatários acessam seus próprios arquivos Selos de implantação separados para cada locatário

Compartilhamentos de arquivos compartilhados

Ao trabalhar com compartilhamentos de arquivos, você poderá optar por usar um compartilhamento de arquivos compartilhado e usar caminhos de arquivo para separar dados para cada locatário:

ID do locatário Exemplo de caminho do arquivo
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

Quando você usa um aplicativo que pode se comunicar usando o protocolo SMB (Bloco de Mensagens do Servidor) e quando você usa Active Directory Domain Services local ou no Azure, os compartilhamentos de arquivos dão suporte à autorização nos níveis de compartilhamento e de diretório/arquivo.

Em outros cenários, considere usar SAS para conceder acesso a arquivos ou compartilhamentos de arquivos específicos. Ao usar SAS, você não poderá conceder acesso a diretórios.

Ao trabalhar com compartilhamento de arquivo, considere se você precisará acompanhar os dados e o uso do serviço de Armazenamento do Azure para cada locatário e planejar uma abordagem para fazer isso (conforme necessário). Confira Monitoramento para obter mais informações.

Compartilhamentos de arquivos por locatário

Você pode criar compartilhamentos de arquivo individuais para cada locatário em uma única conta de armazenamento. Não há limite para o número de compartilhamentos de arquivos que você pode criar em uma conta de armazenamento.

Ao criar compartilhamentos de arquivos para cada locatário, você poderá usar o controle de acesso do Armazenamento do Azure, incluindo SAS, para gerenciar o acesso aos dados de cada locatário. Você também pode monitorar facilmente a capacidade que cada compartilhamento de arquivo usa.

Modelos de isolamento de armazenamento de tabelas

A tabela a seguir resume as diferenças entre os principais modelos de isolamento de locação para as tabelas de Armazenamento do Azure:

Consideração Tabelas compartilhadas com chaves de partição por locatário Tabelas por locatário Contas de armazenamento por locatário
Isolamento de dados Baixo. O aplicativo impõe o isolamento Médio-baixo Alto
Isolamento de desempenho Baixo Baixo. A maioria das cotas e limites se aplica a toda a conta de armazenamento Alto
Complexidade da implantação Baixo Médio Alto
Complexidade operacional Baixo Médio Alto
Cenário de exemplo Solução multilocatário grande com camada de aplicativo compartilhada Emitir URLs SAS com escopo de locatário Selos de implantação separados para cada locatário

Tabelas compartilhadas com chaves de partição por locatário

Ao usar o armazenamento de tabelas com uma única tabela compartilhada, você poderá considerar o uso do suporte interno para particionamento. Cada entidade deve incluir uma chave de partição. Um identificador de locatário geralmente é uma boa opção para uma chave de partição.

As assinaturas e políticas de acesso compartilhado permitem que você especifique um intervalo de chaves de partição, e o Armazenamento do Azure garante que as solicitações que contêm a assinatura só possam acessar os intervalos de chaves de partição especificados. Isso permite implementar o Padrão de chave limitada, que faz com que clientes não confiáveis acessem a partição de um único locatário, sem afetar outros locatários.

Para aplicativos de alta escala, considere a taxa de transferência máxima de cada partição de tabela e a conta de armazenamento.

Tabelas por locatário

Você pode criar tabelas individuais para cada locatário em uma única conta de armazenamento. Não há limite para o número de tabelas que você pode criar em uma conta de armazenamento.

Ao criar tabelas para cada locatário, você poderá usar o controle de acesso do Armazenamento do Azure, incluindo SAS, para gerenciar o acesso aos dados de cada locatário.

Modelos de isolamento de armazenamento de fila

A tabela a seguir resume as diferenças entre os principais modelos de isolamento de locação para as filas de Armazenamento do Azure:

Consideração Filas compartilhadas Filas por locatário Contas de armazenamento por locatário
Isolamento de dados Baixo Médio-baixo Alto
Isolamento de desempenho Baixo Baixo. A maioria das cotas e limites se aplica a toda a conta de armazenamento Alto
Complexidade da implantação Baixo Médio Alto
Complexidade operacional Baixo Médio Alto
Cenário de exemplo Solução multilocatário grande com camada de aplicativo compartilhada Emitir URLs SAS com escopo de locatário Selos de implantação separados para cada locatário

Filas compartilhadas

Se você optar por compartilhar uma fila, considere as cotas e os limites aplicáveis. Em soluções com um volume de solicitação alto, considere se a taxa de transferência de destino de 2.000 mensagens por segundo é suficiente.

As filas não fornecem partição ou subfilas. Portanto, os dados para todos os locatários podem ser misturados.

Filas por locatário

Você pode criar filas individuais para cada locatário em uma única conta de armazenamento. Não há limite para o número de filas que você pode criar em uma conta de armazenamento.

Ao criar filas para cada locatário, você poderá usar o controle de acesso do Armazenamento do Azure, incluindo SAS, para gerenciar o acesso aos dados de cada locatário.

Ao criar filas dinamicamente para cada locatário, considere como a camada de aplicativo consumirá as mensagens da fila de cada locatário. Para cenários mais avançados, considere usar o Barramento de Serviço do Azure, que dá suporte a recursos como tópicos e assinaturas, sessões e encaminhamento automático de mensagens, o que pode ser útil em uma solução multilocatário.

Colaboradores

Esse artigo é mantido pela Microsoft. Ele foi originalmente escrito pelos colaboradores a seguir.

Autor principal:

Outros colaboradores:

Para ver perfis não públicos do LinkedIn, entre no LinkedIn.

Próximas etapas

Examine as abordagens de armazenamento e de dados para multilocação.