Az - Storage Accounts & Blobs
Last updated
Last updated
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
As Contas de Armazenamento do Azure são serviços fundamentais na Microsoft Azure que fornecem armazenamento em nuvem escalável, seguro e altamente disponível para vários tipos de dados, incluindo blobs (objetos grandes binários), arquivos, filas e tabelas. Elas servem como contêineres que agrupam esses diferentes serviços de armazenamento sob um único namespace para fácil gerenciamento.
Principais opções de configuração:
Cada conta de armazenamento deve ter um nome único em todo o Azure.
Cada conta de armazenamento é implantada em uma região ou em uma zona estendida do Azure.
É possível selecionar a versão premium da conta de armazenamento para melhor desempenho.
É possível escolher entre 4 tipos de redundância para proteger contra falhas de rack, disco e datacenter.
Opções de configuração de segurança:
Exigir transferência segura para operações da API REST: Exigir TLS em qualquer comunicação com o armazenamento.
Permite habilitar acesso anônimo em contêineres individuais: Caso contrário, não será possível habilitar acesso anônimo no futuro.
Habilitar acesso com chave da conta de armazenamento: Caso contrário, o acesso com Chaves Compartilhadas será proibido.
Versão mínima do TLS.
Escopo permitido para operações de cópia: Permitir de qualquer conta de armazenamento, de qualquer conta de armazenamento do mesmo inquilino Entra ou de conta de armazenamento com endpoints privados na mesma rede virtual.
Opções de Armazenamento de Blobs:
Permitir replicação entre inquilinos.
Camada de acesso: Quente (dados acessados frequentemente), Frio e Frio (dados acessados raramente).
Opções de Rede:
Acesso à rede:
Permitir de todas as redes.
Permitir de redes virtuais e endereços IP selecionados.
Desativar acesso público e usar acesso privado.
Endpoints privados: Permite uma conexão privada à conta de armazenamento a partir de uma rede virtual.
Opções de proteção de dados:
Restauração ponto a ponto para contêineres: Permite restaurar contêineres para um estado anterior.
Requer versionamento, feed de alterações e exclusão suave de blobs para serem habilitados.
Habilitar exclusão suave para blobs: Habilita um período de retenção em dias para blobs excluídos (mesmo sobrescritos).
Habilitar exclusão suave para contêineres: Habilita um período de retenção em dias para contêineres excluídos.
Habilitar exclusão suave para compartilhamentos de arquivos: Habilita um período de retenção em dias para compartilhamentos de arquivos excluídos.
Habilitar versionamento para blobs: Manter versões anteriores dos seus blobs.
Habilitar feed de alterações de blobs: Manter registros de criação, modificação e exclusão de alterações em blobs.
Habilitar suporte à imutabilidade em nível de versão: Permite definir uma política de retenção baseada em tempo no nível da conta que se aplicará a todas as versões de blobs.
O suporte à imutabilidade em nível de versão e a restauração ponto a ponto para contêineres não podem ser habilitados simultaneamente.
Opções de configuração de criptografia:
Tipo de criptografia: É possível usar chaves gerenciadas pela Microsoft (MMK) ou chaves gerenciadas pelo cliente (CMK).
Habilitar criptografia de infraestrutura: Permite criptografar os dados duas vezes "para mais segurança".
Se "Permitir acesso público a Blobs" estiver habilitado (desabilitado por padrão), ao criar um contêiner é possível:
Dar acesso público para ler blobs (você precisa saber o nome).
Listar blobs do contêiner e lê-los.
Torná-lo totalmente privado.
Se você encontrar algum armazenamento ao qual pode se conectar, você pode usar a ferramenta Microsoft Azure Storage Explorer para isso.
É possível usar princípios do Entra ID com funções RBAC para acessar contas de armazenamento e essa é a maneira recomendada.
As contas de armazenamento têm chaves de acesso que podem ser usadas para acessá-las. Isso fornece acesso total à conta de armazenamento.
É possível gerar Chaves Compartilhadas assinadas com as chaves de acesso para autorizar o acesso a certos recursos via uma URL assinada.
Observe que a parte CanonicalizedResource
representa o recurso dos serviços de armazenamento (URI). E se qualquer parte da URL estiver codificada, ela também deve ser codificada dentro do CanonicalizedResource
.
Isso é usado por padrão pelo az
cli para autenticar solicitações. Para fazer com que use as credenciais do principal do Entra ID, indique o parâmetro --auth-mode login
.
É possível gerar uma chave compartilhada para serviços de blob, fila e arquivo assinando as seguintes informações:
É possível gerar uma chave compartilhada para serviços de tabela assinando as seguintes informações:
É possível gerar uma chave compartilhada lite para serviços de blob, fila e arquivo assinando as seguintes informações:
É possível gerar uma chave compartilhada lite para serviços de tabela assinando as seguintes informações:
Então, para usar a chave, pode ser feito no cabeçalho de Autorização seguindo a sintaxe:
As Signaturas de Acesso Compartilhado (SAS) são URLs seguras e com tempo limitado que concedem permissões específicas para acessar recursos em uma conta de Armazenamento Azure sem expor as chaves de acesso da conta. Enquanto as chaves de acesso fornecem acesso administrativo total a todos os recursos, a SAS permite um controle granular ao especificar permissões (como leitura ou gravação) e definir um tempo de expiração.
SAS de delegação de usuário: Isso é criado a partir de um principal do Entra ID que assinará a SAS e delegará as permissões do usuário para a SAS. Pode ser usado apenas com armazenamento de blob e data lake (docs). É possível revogar todas as SAS de delegação de usuário geradas.
Mesmo que seja possível gerar uma SAS de delegação com "mais" permissões do que as que o usuário possui. No entanto, se o principal não as tiver, não funcionará (sem privesc).
SAS de serviço: Isso é assinado usando uma das chaves de acesso da conta de armazenamento. Pode ser usado para conceder acesso a recursos específicos em um único serviço de armazenamento. Se a chave for renovada, a SAS deixará de funcionar.
SAS de conta: Também é assinado com uma das chaves de acesso da conta de armazenamento. Concede acesso a recursos em serviços de conta de armazenamento (Blob, Queue, Table, File) e pode incluir operações em nível de serviço.
Uma URL SAS assinada por uma chave de acesso se parece com isto:
https://<container_name>.blob.core.windows.net/newcontainer?sp=r&st=2021-09-26T18:15:21Z&se=2021-10-27T02:14:21Z&spr=https&sv=2021-07-08&sr=c&sig=7S%2BZySOgy4aA3Dk0V1cJyTSIf1cW%2Fu3WFkhHV32%2B4PE%3D
Uma URL SAS assinada como uma delegação de usuário se parece com isto:
https://<container_name>.blob.core.windows.net/testing-container?sp=r&st=2024-11-22T15:07:40Z&se=2024-11-22T23:07:40Z&skoid=d77c71a1-96e7-483d-bd51-bd753aa66e62&sktid=fdd066e1-ee37-49bc-b08f-d0e152119b04&skt=2024-11-22T15:07:40Z&ske=2024-11-22T23:07:40Z&sks=b&skv=2022-11-02&spr=https&sv=2022-11-02&sr=c&sig=7s5dJyeE6klUNRulUj9TNL0tMj2K7mtxyRc97xbYDqs%3D
Note alguns http params:
O parâmetro se
indica a data de expiração da SAS
O parâmetro sp
indica as permissões da SAS
O sig
é a assinatura que valida a SAS
Ao gerar uma SAS, é necessário indicar as permissões que ela deve conceder. Dependendo do objeto sobre o qual a SAS está sendo gerada, diferentes permissões podem ser incluídas. Por exemplo:
(a)dd, (c)reate, (d)elete, (e)xecute, (f)ilter_by_tags, (i)set_immutability_policy, (l)ist, (m)ove, (r)ead, (t)ag, (w)rite, (x)delete_previous_version, (y)permanent_delete
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Armazenamento de Blobs
https://<storage-account>.blob.core.windows.net
https://<stg-acc>.blob.core.windows.net/<container-name>?restype=container&comp=list
Armazenamento de Data Lake
https://<storage-account>.dfs.core.windows.net
Azure Files
https://<storage-account>.file.core.windows.net
Armazenamento de Filas
https://<storage-account>.queue.core.windows.net
Armazenamento de Tabelas
https://<storage-account>.table.core.windows.net