Pular para o conteúdo principal

Fundamentação Teórica: Create and Configure Storage Accounts


1. Intuição Inicial​

Imagine que você precisa guardar documentos, fotos, vídeos e backups de uma empresa inteira. No mundo físico, você contrataria um serviço de armazenamento: escolheria o tamanho do espaço, o nível de segurança, a localização do galpão e as regras de acesso.

O Azure Storage Account é exatamente isso: um contêiner lógico e gerenciável dentro do Azure que agrupa diferentes tipos de armazenamento sob uma única identidade, uma única fatura e um único conjunto de configurações de segurança e replicação.

Tudo que você armazena no Azure (arquivos, blobs, filas, tabelas) vive dentro de uma Storage Account. Ela é a unidade fundamental de armazenamento no Azure.


2. Contexto​

A Storage Account existe porque o Azure precisava de uma abstração que:

  • Agrupasse recursos de armazenamento sob um namespace único (mystorageaccount.blob.core.windows.net)
  • Permitisse aplicar configurações globais (replicação, segurança, desempenho) de uma vez
  • Oferecesse isolamento de cobrança e de controle de acesso

Dentro do ecossistema Azure, a Storage Account é usada por:

  • Azure VMs (para discos não gerenciados e diagnósticos)
  • Azure Functions (para estado interno)
  • Azure Logic Apps
  • AKS (Kubernetes) para volumes persistentes
  • Aplicações web para armazenar assets, logs e dados estruturados

3. Construção dos Conceitos​

3.1 Tipos de dados que uma Storage Account suporta​

Uma Storage Account não é um único serviço: ela é um guarda-chuva que abriga quatro serviços internos:

ServiçoNome no portalPara que serve
Blob StorageContainersArquivos não estruturados: imagens, vídeos, backups, logs
Azure FilesFile sharesCompartilhamento de arquivos via SMB/NFS (como um drive de rede)
Queue StorageQueuesFilas de mensagens para comunicação assíncrona entre sistemas
Table StorageTablesDados NoSQL de chave-valor estruturados, sem esquema rígido

Cada um desses serviços tem seu próprio endpoint dentro da mesma conta.


3.2 Tipos de Storage Account​

Este é um dos pontos mais cobrados no AZ-104. Existem tipos diferentes de contas, cada uma com capacidades distintas:

TipoNome técnicoServiços suportadosUso recomendado
Standard General Purpose v2StorageV2Blob, Files, Queue, TablePadrão para a maioria dos casos
Premium Block BlobsBlockBlobStorageApenas Blob (bloco)Workloads de alto I/O, transações frequentes
Premium File SharesFileStorageApenas Azure FilesCompartilhamentos de alta performance (SMB/NFS)
Premium Page BlobsStorageV2 PremiumApenas Page BlobsDiscos de VMs não gerenciados

Ponto importante: O tipo Standard General Purpose v2 é o recomendado pela Microsoft para quase todos os cenários novos. O GPv1 existe por compatibilidade, mas não deve ser escolhido em projetos novos.


3.3 Camadas de acesso (Access Tiers)​

Dentro do Blob Storage, o Azure permite definir camadas de acesso que equilibram custo de armazenamento versus custo de acesso:

CamadaCusto de armazenamentoCusto de acessoLatênciaUso típico
HotAltoBaixoImediataDados acessados frequentemente
CoolMédioMédioImediataDados acessados raramente (30+ dias)
ColdBaixoAltoImediataDados acessados muito raramente (90+ dias)
ArchiveMuito baixoMuito altoHoras (reidratação)Dados raramente acessados (180+ dias)

A camada padrão é definida no nível da conta, mas pode ser sobrescrita individualmente por blob.

Comportamento não óbvio: A camada Archive não permite leitura direta. Antes de acessar um blob arquivado, é preciso "reidratá-lo" para Hot ou Cool, o que pode levar de 1 a 15 horas dependendo da prioridade escolhida.


3.4 Replicação​

A replicação define quantas cópias dos dados existem e onde. Esta é uma decisão de durabilidade e disponibilidade:

OpçãoSiglaCópiasOndeProtege contra
Locally Redundant StorageLRS3Mesmo datacenterFalhas de hardware
Zone Redundant StorageZRS33 zonas na mesma regiãoFalha de datacenter inteiro
Geo-Redundant StorageGRS62 regiões (primária + secundária)Desastre regional
Geo-Zone Redundant StorageGZRS63 zonas primária + 1 região secundáriaFalha zonal + desastre regional
Read-Access GRSRA-GRS6Igual ao GRSIgual + leitura na secundária
Read-Access GZRSRA-GZRS6Igual ao GZRSIgual + leitura na secundária

Ponto crítico: Com GRS e GZRS, o failover para a região secundária não é automático por padrão. É necessário iniciar o failover manualmente ou configurar o failover gerenciado pelo cliente. As variantes RA-GRS e RA-GZRS permitem leitura da região secundária sem precisar de failover.


4. Visão Estrutural​

100%
Scroll para zoom · Arraste para mover · 📱 Pinch para zoom no celular

100%
Scroll para zoom · Arraste para mover · 📱 Pinch para zoom no celular

5. Funcionamento na Prática​

5.1 Criação de uma Storage Account: o que você define​

Ao criar uma Storage Account, você toma decisões que não podem ser alteradas depois e outras que podem ser modificadas. Conhecer a diferença é essencial.

Decisões imutáveis (definidas na criação):

  • Nome da conta (globalmente único, 3 a 24 caracteres, apenas minúsculas e números)
  • Região (location)
  • Tipo de conta (Standard/Premium, GPv2/BlockBlobStorage/FileStorage)
  • Tipo de replicação (pode mudar com restrições)

Decisões modificáveis depois:

  • Camada de acesso padrão (Hot/Cool)
  • Configurações de rede (firewalls, private endpoints)
  • Políticas de ciclo de vida
  • Soft delete, versioning
  • Chaves de acesso

5.2 Namespace e endpoints​

Cada Storage Account gera automaticamente endpoints públicos no formato:

https://<nome-da-conta>.blob.core.windows.net
https://<nome-da-conta>.file.core.windows.net
https://<nome-da-conta>.queue.core.windows.net
https://<nome-da-conta>.table.core.windows.net
https://<nome-da-conta>.dfs.core.windows.net (se ADLS Gen2 habilitado)

O nome da conta precisa ser globalmente único em todo o Azure, não apenas dentro da sua assinatura.


5.3 Hierarchical Namespace (ADLS Gen2)​

Ao habilitar o Hierarchical Namespace (HNS) durante a criação, a Storage Account passa a funcionar como um Azure Data Lake Storage Gen2, permitindo:

  • Estrutura de diretórios real (não apenas prefixos simulados)
  • Permissões POSIX-style por diretório
  • Performance superior para workloads de analytics

Atenção: O Hierarchical Namespace não pode ser habilitado após a criação da conta. É uma decisão que deve ser tomada antes.


6. Formas de Implementação​

6.1 Portal Azure​

Quando usar: Criações únicas, exploração de opções, ambientes de desenvolvimento.

O portal guia você por abas (Basics, Advanced, Networking, Data Protection, Encryption, Tags) e apresenta todas as opções com descrições. Ideal para entender o que cada configuração faz.

Limitações: Lento para múltiplas criações; não reproduzível de forma consistente.


6.2 Azure CLI​

Quando usar: Automação simples, scripts de provisionamento, pipelines CI/CD.

az storage account create \
--name mystorageaccount \
--resource-group myResourceGroup \
--location eastus \
--sku Standard_LRS \
--kind StorageV2 \
--access-tier Hot \
--https-only true \
--min-tls-version TLS1_2

Os parâmetros --sku e --kind juntos determinam o tipo da conta:

--kind--skuResultado
StorageV2Standard_LRS / ZRS / GRS / GZRSStandard GPv2
BlockBlobStoragePremium_LRS / ZRSPremium Block Blob
FileStoragePremium_LRS / ZRSPremium File Shares

6.3 Azure PowerShell​

New-AzStorageAccount `
-ResourceGroupName "myResourceGroup" `
-Name "mystorageaccount" `
-Location "EastUS" `
-SkuName "Standard_LRS" `
-Kind "StorageV2" `
-AccessTier "Hot" `
-EnableHttpsTrafficOnly $true `
-MinimumTlsVersion "TLS1_2"

6.4 Bicep / ARM Template​

Quando usar: Infraestrutura como código, deploys repetíveis, ambientes padronizados.

resource storageAccount 'Microsoft.Storage/storageAccounts@2023-01-01' = {
name: 'mystorageaccount'
location: 'eastus'
sku: {
name: 'Standard_LRS'
}
kind: 'StorageV2'
properties: {
accessTier: 'Hot'
supportsHttpsTrafficOnly: true
minimumTlsVersion: 'TLS1_2'
allowBlobPublicAccess: false
}
}

Vantagem: Idempotente, versionável, integrável com DevOps.


7. Controle e Segurança​

7.1 Autenticação e autorização​

Existem quatro formas de controlar acesso a uma Storage Account:

1. Chaves de acesso (Storage Account Keys)

  • Dois pares de chaves geradas automaticamente
  • Acesso total à conta
  • Devem ser rotacionadas regularmente
  • Nunca expostas em código ou repositórios

2. Shared Access Signatures (SAS)

  • Tokens com permissões e validade definidas
  • Tipos: Account SAS, Service SAS, User Delegation SAS
  • User Delegation SAS é a forma mais segura (usa credenciais Azure AD)

3. Azure AD + RBAC

  • Controle baseado em papéis (roles)
  • Papéis relevantes:
RoleO que permite
Storage Blob Data OwnerLeitura, escrita, exclusão e controle de permissões em blobs
Storage Blob Data ContributorLeitura, escrita e exclusão em blobs
Storage Blob Data ReaderApenas leitura de blobs
Storage File Data SMB Share ContributorLeitura, escrita em file shares via SMB

4. Acesso público (anonymous)

  • Pode ser habilitado por container (não recomendado)
  • Deve ser desabilitado no nível da conta em ambientes de produção

7.2 Configurações de rede​

Por padrão, Storage Accounts aceitam tráfego de qualquer IP. Para produção, restrinja:

Firewall de IP: Permite apenas CIDRs específicos.

Virtual Network Service Endpoints: O tráfego de VNets autorizadas não sai pela internet pública.

Private Endpoints: Cria uma interface de rede privada dentro da VNet, com IP privado. O DNS resolve o nome da conta para esse IP interno. Esta é a opção mais segura.

100%
Scroll para zoom · Arraste para mover · 📱 Pinch para zoom no celular

7.3 Criptografia​

  • Em repouso: Todos os dados são criptografados automaticamente com AES-256. Não é opcional.
  • Chaves gerenciadas: Por padrão, chaves são gerenciadas pela Microsoft (MMK). É possível usar Customer-Managed Keys (CMK) via Azure Key Vault para maior controle.
  • Em trânsito: Habilitar "Secure transfer required" força HTTPS em todas as conexões. Recomendado sempre.
  • Versão mínima de TLS: Configure como TLS 1.2 no mínimo.

7.4 Proteção de dados​

RecursoO que fazQuando usar
Soft Delete (Blobs)Mantém blobs excluídos por N diasProteção contra exclusão acidental
Soft Delete (Containers)Mantém containers excluídos por N diasProteção contra exclusão de container
VersioningMantém versões anteriores automaticamenteHistórico e recuperação de versões
Change FeedLog de todas as alterações em blobsAuditoria e replicação personalizada
Point-in-time RestoreRestaura blobs a um estado anteriorRecuperação de desastres lógicos
Immutability PoliciesImpede alteração ou exclusão (WORM)Compliance regulatório

Dependência importante: Point-in-time Restore requer que Soft Delete, Versioning e Change Feed estejam habilitados simultaneamente.


8. Tomada de Decisão​

8.1 Qual tipo de replicação escolher?​

SituaçãoEscolhaMotivo
Dados não críticos, menor custoLRS3 cópias no mesmo datacenter
Alta disponibilidade regional obrigatóriaZRSProteção contra falha de zona
Requisito de continuidade de negócios geográficaGRS ou GZRSCópia em segunda região
Leitura da região secundária sem failoverRA-GRS ou RA-GZRSRead access na secundária
Dados de analytics de alto volumeLRS + backup externoCusto menor, durabilidade gerenciada separadamente

8.2 Qual camada de acesso escolher?​

Padrão de acessoCamadaMotivo
Acesso diário ou semanalHotCusto de acesso baixo compensa
Acesso mensal ou menosCoolEquilíbrio entre armazenamento e acesso
Retenção de 90 a 180 diasColdArmazenamento mais barato
Retenção longa, acesso raroArchiveMenor custo de armazenamento

8.3 Qual tipo de conta escolher?​

CenárioTipo de conta
Caso geral (aplicações, backups, logs)Standard GPv2
Workload intensivo em transações de blobPremium Block Blob
Compartilhamento de arquivos de alta performancePremium File Shares
Analytics com estrutura hierárquicaStandard GPv2 + HNS (ADLS Gen2)
Discos de VM não gerenciadosPremium Page Blob

9. Boas Práticas​

  • Um Storage Account por ambiente: Separe dev, staging e produção em contas distintas para isolamento de acesso e cobrança.
  • Desabilite acesso público a blobs no nível da conta em produção (allowBlobPublicAccess: false).
  • Force HTTPS (supportsHttpsTrafficOnly: true) sempre.
  • Configure TLS 1.2 como versão mínima.
  • Use Azure AD + RBAC em vez de chaves de acesso sempre que possível.
  • Habilite Soft Delete com pelo menos 7 dias de retenção.
  • Use Private Endpoints para Storage Accounts que só devem ser acessadas de dentro da VNet.
  • Rotacione chaves de acesso regularmente e use Azure Key Vault para armazená-las.
  • Aplique lifecycle management policies para mover dados automaticamente entre camadas (Hot → Cool → Archive) com base na idade.
  • Nomeie de forma padronizada: <ambiente><projeto><tipo><região> (ex: prodmyappstgeastus).

10. Erros Comuns​

ErroPor que aconteceComo evitar
Nome da conta já em usoO namespace é global no AzureUse um prefixo único por organização
Não consegue habilitar HNS após criaçãoHNS é imutávelDecida antes de criar
Blob em Archive não pode ser lidoRequer reidrataçãoPlaneje a latência de acesso
Acesso negado mesmo com chave correta"Secure transfer required" ativo e conexão via HTTPUse sempre HTTPS
Failover não ocorre automaticamente com GRSGRS não tem failover automáticoUse RA-GRS e planeje failover manual
Custo inesperadamente altoDados em Hot sendo raramente acessadosConfigure lifecycle policies
SAS token expirado em produçãoValidade curta definida incorretamenteAutomatize rotação ou use User Delegation SAS
Exclusão acidental de containerSoft Delete de container não estava habilitadoHabilite na criação

11. Operação e Manutenção​

11.1 Monitoramento​

O Azure Monitor coleta métricas de Storage Accounts automaticamente:

  • Transactions: Número de requisições por tipo e status
  • Ingress / Egress: Volume de dados transferidos
  • Availability: Porcentagem de requisições bem-sucedidas
  • SuccessE2ELatency / SuccessServerLatency: Latências de ponta a ponta e no servidor

Configure alertas para:

  • Disponibilidade abaixo de 99,9%
  • Latência acima do esperado
  • Erros de autenticação (possível tentativa de acesso indevido)

11.2 Lifecycle Management​

Políticas de ciclo de vida automatizam a movimentação e exclusão de blobs:

{
"rules": [
{
"name": "tiering-rule",
"type": "Lifecycle",
"definition": {
"filters": { "blobTypes": ["blockBlob"] },
"actions": {
"baseBlob": {
"tierToCool": { "daysAfterModificationGreaterThan": 30 },
"tierToArchive": { "daysAfterModificationGreaterThan": 180 },
"delete": { "daysAfterModificationGreaterThan": 365 }
}
}
}
}
]
}

11.3 Limites importantes​

RecursoLimite
Capacidade máxima por conta5 PiB
Taxa de requisição máxima20.000 requisições/s
Throughput máximo por conta60 Gbps (ingress) / 60 Gbps (egress) para GRS; 120 Gbps para LRS/ZRS
Tamanho máximo de um único blob190,7 TiB (Block Blob)
Número de containers por contaIlimitado

12. Integração e Automação​

12.1 Azure Event Grid​

Storage Accounts emitem eventos para o Event Grid quando:

  • Um blob é criado ou excluído
  • Um container é criado ou excluído

Esses eventos podem acionar Azure Functions, Logic Apps ou qualquer endpoint HTTP. Padrão comum para pipelines de processamento de dados.

12.2 Azure Data Factory e Synapse​

Usam Storage Accounts como fonte e destino em pipelines ETL. O formato ADLS Gen2 (HNS habilitado) é o padrão para Data Lake moderno no Azure.

12.3 AzCopy​

Ferramenta de linha de comando otimizada para transferências de alto volume:

azcopy copy 'https://source.blob.core.windows.net/container' \
'https://destination.blob.core.windows.net/container' \
--recursive

Suporta autenticação via SAS token ou Azure AD.

12.4 Azure Policy​

Garanta conformidade em escala atribuindo políticas como:

  • "Storage accounts should use customer-managed keys"
  • "Secure transfer to storage accounts should be enabled"
  • "Storage accounts should restrict network access"

13. Resumo Final​

Conceitos essenciais:

  • Uma Storage Account é o contêiner lógico que agrupa Blob, Files, Queue e Table sob um único namespace, configuração e cobrança.
  • O tipo Standard GPv2 é o padrão recomendado para a maioria dos cenários.
  • Tipos Premium existem para workloads de alta performance e são restritos a um único serviço de armazenamento.
  • A replicação define durabilidade e disponibilidade: LRS é local, ZRS é zonal, GRS é geográfica.
  • As camadas de acesso (Hot, Cool, Cold, Archive) equilibram custo de armazenamento versus custo de acesso.

Decisões imutáveis (defina antes de criar):

  • Nome da conta
  • Região
  • Tipo de conta (kind/sku)
  • Hierarchical Namespace (ADLS Gen2)

Diferenças críticas:

  • GRS vs RA-GRS: GRS replica para segunda região, mas não permite leitura sem failover. RA-GRS permite leitura da secundária diretamente.
  • Archive vs Cool/Cold: Archive exige reidratação (horas) antes do acesso. Cool e Cold têm acesso imediato.
  • Chaves de acesso vs RBAC: Chaves dão acesso total à conta. RBAC é granular e auditável.
  • Service Endpoint vs Private Endpoint: Service Endpoint mantém tráfego na rede Microsoft, mas o IP público permanece. Private Endpoint elimina o IP público completamente.

O que precisa ser lembrado:

  • O nome da Storage Account é globalmente único em todo o Azure.
  • Soft Delete, Versioning e Change Feed devem estar habilitados para usar Point-in-time Restore.
  • Desabilite acesso público a blobs e exija HTTPS em todo ambiente de produção.
  • Lifecycle Management policies são essenciais para controlar custo em ambientes com grande volume de dados.
  • TLS 1.2 é o mínimo aceitável; configure explicitamente.