Multilocação e Armazenamento do Azure

O Armazenamento do Azure é um serviço fundamental usado em quase todas as soluções. As soluções multilocatárias geralmente usam o Armazenamento do Azure para armazenamento de blob, arquivo, fila e tabela. Nesta página, descrevemos alguns dos recursos do Armazenamento do Azure que são úteis para soluções multilocatárias e, em seguida, fornecemos links para as orientações que podem ajudá-lo quando você estiver planejando como usará o 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 a partir 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 de entrega de conteúdo ou API, ou se o cliente deve se conectar diretamente à sua conta de armazenamento. Pode haver boas razões para enviar solicitações por meio de outro componente, incluindo o armazenamento em cache de dados na borda da rede. No entanto, em algumas situações, é vantajoso para os pontos de extremidade do cliente se conectarem diretamente ao Armazenamento do Azure para baixar ou carregar dados. Esta ligação ajuda-o a melhorar o desempenho da sua solução, especialmente quando trabalha com grandes blobs ou um grande número de ficheiros. Ele também reduz a carga em seus aplicativos e servidores de back-end e reduz o número de saltos de rede. Uma assinatura de acesso compartilhado (SAS) permite que você forneça com segurança aos seus aplicativos cliente acesso a objetos no Armazenamento do Azure.

As assinaturas de acesso compartilhado podem ser usadas para restringir o escopo das operações que um cliente pode executar e os objetos contra os quais ele pode executar operações. Por exemplo, se você tiver uma conta de armazenamento compartilhada 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 que apenas os usuários do locatário A acessem esse contêiner. Para obter mais informações, consulte Modelos de isolamento para explorar as abordagens que você pode usar para isolar os dados dos locatários em uma conta de armazenamento.

O padrão de chave de manobrista é ú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 permita que os usuários carreguem vídeos. Sua API ou camada de aplicativo pode autenticar o cliente usando seu próprio sistema de autenticação. Em seguida, você pode fornecer uma SAS ao cliente que permite que ele carregue um arquivo de vídeo para um blob especificado, em um caminho de contêiner e blob que você especificar. Em seguida, o cliente carrega o arquivo diretamente para a conta de armazenamento, evitando a largura de banda extra e a carga em sua API. Se eles tentarem ler dados do contêiner de blob ou se tentarem 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 armazenado estendem a funcionalidade SAS, 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 a ID do Microsoft Entra. Esse recurso também permite que você use o controle de acesso baseado em atributos, que oferece acesso mais refinado a caminhos de blob ou a blobs que foram marcados com um ID de locatário específico.

Gestão do ciclo de vida

Quando você usa o armazenamento de blob 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, você também pode querer configurar os dados para um locatário específico para serem movidos automaticamente para as camadas de armazenamento legal ou arquivado, para fins de otimização de custos.

Considere o uso de 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 para o número de regras que você pode especificar em uma política de gerenciamento do ciclo de vida. Certifique-se de planejar e testar o uso desse recurso em um ambiente multilocatário e considere a implantação de várias contas de armazenamento, se exceder os limites.

Armazenamento imutável

Quando você configura o armazenamento de blob 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 tempo especificado. A prevenção é imposta na camada de conta de armazenamento e se aplica a todos os usuários. Mesmo os administradores da sua organização nã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 inquilinos forem desligados e solicitarem a eliminação dos seus dados, poderá não conseguir satisfazer os seus pedidos. Se você usa armazenamento imutável para os dados de seus locatários, considere como você aborda esse problema em seus termos de serviço.

Cópia do lado do servidor

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

A ferramenta AzCopy é uma aplicação que pode executar a partir do seu próprio computador, ou de uma máquina virtual, para gerir 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 a partir de suas próprias soluções. 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 seu código, considere usar a API Put Block From URL , Put Page From URL API, Append Block From URL API e Copy Blob From URL API ao trabalhar com blobs menores.

Replicação de objetos

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

Encriptação

O Armazenamento do Azure permite que você forneça chaves de criptografia para seus dados. Em uma solução multilocatário, considere combinar esse recurso com escopos de criptografia, que permitem definir chaves de criptografia diferentes para locatários diferentes, mesmo que seus dados estejam 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 eles precisarem desativar sua conta, excluir a chave de criptografia garante que seus dados não estejam mais acessíveis.

Monitorização

Ao trabalhar com uma solução multilocatário, considere se você precisa medir o consumo de cada locatário e defina as métricas específicas que precisa 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 de uso de cada locatário e habilitar o estorno em várias assinaturas.

O Armazenamento do Azure fornece recursos internos de monitoramento. É importante considerar os serviços que você usará na conta de Armazenamento do Azure. Por exemplo, quando você trabalha com blobs, é possível visualizar 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 de cada pasta.

Você também pode registrar todas as solicitações feitas no Armazenamento do Azure e, em seguida, 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ê precisa 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.

Nota

O Armazenamento do Azure tem muitas cotas e limites que você deve considerar ao selecionar um modelo de isolamento. Estes incluem limites de serviço do Azure, destinos de escalabilidade e destinos de escalabilidade para o fornecedor de recursos de Armazenamento do Azure.

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

Modelos de isolamento de armazenamento de Blob

A tabela a seguir resume as diferenças entre os principais modelos de isolamento de locação para 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 Baixo-médio. Usar caminhos para identificar os dados de cada locatário ou namespaces hierárquicos Média. Usar URLs SAS com escopo de contêiner para dar 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 Carimbos de implantação separados para cada locatário

Contêineres de blob compartilhados

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

ID de Inquilino do 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 os locatários. Isso ocorre porque o armazenamento de blob não fornece um conceito de diretórios ou pastas. Isso significa que você não pode atribuir acesso a todos os blobs dentro de um caminho especificado. No entanto, o Armazenamento do Azure fornece um recurso para 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 de 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 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ário, talvez você só precise armazenar um único blob ou 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, em seguida, ler um blob específico em vez de enumerar um caminho de blob.

Ao trabalhar com contêineres compartilhados, considere se precisa controlar os dados e o uso do serviço de Armazenamento do Azure para cada locatário e planeje uma abordagem para fazer isso. Consulte 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, dentro de uma conta de armazenamento.

Ao criar contêineres para cada locatário, você pode 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 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 Baixo-médio. 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 inquilinos acedem aos seus próprios ficheiros Carimbos de implantação separados para cada locatário

Compartilhamentos de arquivos compartilhados

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

ID de Inquilino do 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 (Server Message Block) e quando usa os Serviços de Domínio Ative Directory no local ou no Azure, os compartilhamentos de arquivos oferecem suporte à autorização nos níveis de compartilhamento e diretório/arquivo.

Em outros cenários, considere o uso do SAS para conceder acesso a compartilhamentos de arquivos ou arquivos específicos. Quando você usa SAS, não pode conceder acesso a diretórios.

Ao trabalhar com compartilhamentos de arquivos compartilhados, considere se precisa controlar os dados e o uso do serviço de Armazenamento do Azure para cada locatário e, em seguida, planeje uma abordagem para fazer isso (conforme necessário). Consulte Monitoramento para obter mais informações.

Compartilhamentos de arquivos por locatário

Você pode criar compartilhamentos de arquivos individuais para cada locatário, dentro de 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ê pode 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 usada por cada compartilhamento de arquivos.

Modelos de isolamento de armazenamento de tabela

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

Consideração Tabelas partilhadas com chaves de partição por inquilino Tabelas por inquilino Contas de armazenamento por locatário
Isolamento de dados Baixo. O aplicativo impõe o isolamento Baixo-médio 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ária grande com camada de aplicativo compartilhada Emitir URLs SAS com escopo de locatário Carimbos de implantação separados para cada locatário

Tabelas partilhadas com chaves de partição por inquilino

Ao usar o armazenamento de tabelas com uma única tabela compartilhada, você pode 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 especificar 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 que você implemente o padrão Valet Key, que permite 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 inquilino

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ê pode 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 em fila

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

Consideração Filas compartilhadas Filas por inquilino Contas de armazenamento por locatário
Isolamento de dados Baixo Baixo-médio 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ária grande com camada de aplicativo compartilhada Emitir URLs SAS com escopo de locatário Carimbos 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 alto volume de solicitações, considere se a taxa de transferência de destino de 2.000 mensagens por segundo é suficiente.

As filas não fornecem particionamento ou subfilas, portanto, os dados de todos os locatários podem ser misturados.

Filas por inquilino

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ê pode 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 sua 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, que podem ser úteis em uma solução multilocatário.

Contribuidores

Este artigo é mantido pela Microsoft. Foi originalmente escrito pelos seguintes contribuidores.

Autor principal:

  • John Downs - Brasil | Engenheiro de Software Principal

Outros contribuidores:

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

Próximos passos

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