Autenticação no consumo de blobs com o Microsoft Entra

Autenticação no consumo de blobs com o Microsoft Entra

As storage accounts estão presentes em grande parte das arquiteturas em nuvem pública, devido a sua elasticidade, facilidade no uso e diversidade de recursos. Como qualquer outro recurso, a segurança é prioridade!

Além de controlar a qualidade dos recursos que são inseridos na sua storage account, é essencial que o controle de acesso à esses recursos seja realizado de maneira correta e seguindo as principais práticas recomendadas. Por isso, hoje vamos aprender como configurar a autenticação do Entra para as Storage Accounts.


Tipos de autenticação para Storage Accounts

Quando estamos planejando a criação das nossas Storage Accounts, é importante saber que temos mais de um modelo de autenticação disponível para proteger o consumo dos recursos. Os modelos existentes são:

  • Access Keys;

  • Shared Access Signature;

  • Entra ID Authentication.

Os três modelos tem suas vantagens e desvantagens, como tudo na vida, então é importante que você escolha uma opção que cumpra seu papel de negócio, ou seja, permita que o objetivo do projeto seja atingido, mas também que seu ambiente esteja protegido e seus recursos seguros.

Access Keys

Toda storage account é criada contendo 2 Access Keys, essas sendo necessárias para permitir o acesso aos blobs quando não estamos utilizando a autenticação do Entra.

Ao acessar sua storage account, você pode consultar suas access keys na blade lateral, disponível à esquerda da sua tela. Você encontrará algo parecido com isso:

Ao clicar sobre "Show" à direita do input "Key", você será apresentado com o valor da sua access key. O valor "Connection string" é utilizado quando estamos desenvolvendo alguma aplicação que realizará acesso aos blobs armazenados na storage account.

Essas informações são extremamente sensíveis. Quem tiver posse de uma das chaves da sua storage account, pode trazer ao seu ambiente e aos seus recursos grande risco. Não as compartilhe com ninguém!

As access keys podem ser utilizadas para permitir o acesso direto aos blobs, porém também são necessárias para habilitação do recurso que falaremos à seguir.

Shared Access Signatures

As Shared Access Signatures ou apenas SAS, são URIs criadas com diversos controles e assinadas por uma das access keys. Essas URIs visam liberar acesso público à certos recursos da storage account.

Com esses recursos, podemos limitar o escopo de acesso, os objetos que poderão ser acessados, as operações realizadas, determinar uma data de validade da URI de acesso e também controlar a origem do acesso através de endereços e ranges de IP.

Note que caso o endereço de IP de origem não seja cadastrado, qualquer usuário que estiver em posse da URI, poderá acessar o recurso destinado.

Exemplo de SAS token, com suas estruturas explicadas

Outros dois pontos a serem observados são: o escopo de acesso e as operações permitidas. Caso sejam configurados errado, o usuário poderá acessar mais recursos que deveria e também poderá excluir ou modificar os objetos existentes nos contêineres da storage account.

Entra ID

Utilizando o Microsoft Entra, nós podemos utilizar de todas as capacidades de segurança fornecidas pela ferramenta para proteger o consumo dos nossos recursos.

Utilizando o acesso baseado em função (Role Based Access Control), podemos atribuir permissões aos usuários de acordo com a necessidade, tendo a tranquilidade de que apenas usuários conhecidos acessarão os recursos da storage account.

Com a autenticação do Entra, o usuário se autenticará e a plataforma receberá um access token, esse utilizado para verificar as permissões no escopo de acesso requisitado.

Esse modelo apresenta a melhor opção de segurança, pois permite a aplicação do zero trust através do controle de acesso através de função.


Qual modelo eu devo escolher?

Entendemos os 3 modelos existentes, agora chegou a hora de decidirmos qual é o mais adequado.

Microsoft Entra ID - oferece as melhores capacidades de segurança, permite o controle das operações e do escopo, garante que o acesso aos recursos venha apenas de usuários (ou service principals) autorizados e não requer a publicação do objeto para a internet. É a melhor solução na maioria dos casos!

Shared Access Signature - permite o controle das operações e do escopo, podemos configurar um período para a expiração daquele acesso e podemos limitar o acesso à partir de endereços IP específicos. Tem como ponto negativo a dependência das access keys. Caso o acesso público ao objeto seja necessário, essa é a melhor opção.

Access Keys - por controlar todos os acessos aos objetos da storage account, o uso das access keys oferece grande risco ao ambiente caso caiam nas mãos de agentes indevidos. Não tem seu uso recomendado, apenas em cenários de exceção onde os dois modelos anteriores não são adequados.

Apresentados os cenários e os direcionamentos de uso, vamos comentar brevemente sobre como a autenticação com o Entra pode ser configurada.


Configurando a autenticação com o Entra

Definido o uso do Entra para autenticação no consumo dos seus blobs, podemos facilitar a vida dos nossos usuários ao configurarmos a autenticação através do Entra por padrão para acesso através do Portal do Azure.

Habilitando a autenticação através do Entra por padrão

No momento da criação da storage account, você pode selecionar "Default to Microsoft entra authorization in the Azure portal" na aba "Advanced" para que em todas as requisições de acesso aos blobs, a autenticação através do Entra seja a primeira a ser tentada.

Caso não tenha selecionado a opção no momento de criação, você pode também navegar dentro da sua storage account até "Configuration" e ativar a opção.

Utilizando o RBAC

Utilizando as built-in ou custom roles, poderemos aplicar o Zero Trust aos acessos, mantendo nosso ambiente cada vez mais seguro.

Para vizualização dos objetos via Portal do Azure, a identidade precisará de uma role que permita a visualização da storage account (no mínimo) e de uma que permita a leitura do conteúdo existente dentro dela. Aplicando o privilégio mínimo, as duas roles necessárias para habilitar a vizualização são: Reader com escopo na storage account e Storage Blob Data Reader com escopo na storage account.

Para acesso dos objetos à partir da sua aplicação, utilizando uma Managed Identity ou Service Principal, não é necessário uma role que permite a visualização do recurso. Você pode fornecer acesso apenas ao contêiner onde os objetos se encontram, seguindo assim o Princípio do Privilégio Mínimo.

Nas aplicações, o uso da MSAL (Microsoft Authentication Library) facilitará as interações com o Entra, permitindo que você concentre seus esforços no desenvolvimento das funcionalidades de negócio!


À partir de agora você é capaz de proteger suas storage accounts da melhor maneira possível e não prejudicando a usabilidade e experiência dos seus usuários.

Espero que tenha gostado do texto. Estou à disposição para responder quaisquer dúvidas que tiver.

Até logo!