Compartilhar via


Tutorial: Adicionar uma condição de atribuição de função para restringir o acesso a blobs usando o portal do Azure

Na maioria dos casos, uma atribuição de função concede as permissões necessárias aos recursos do Azure. No entanto, em alguns casos, talvez você queira fornecer um controle de acesso mais granular adicionando uma condição de atribuição de função.

Neste tutorial, você aprenderá como:

  • Adicionar uma condição a uma atribuição de função
  • Restringir o acesso a blobs com base em uma marca de índice de blob

Importante

O controle de acesso baseado em atributos (ABAC) do Azure está em disponibilidade geral (GA) para controlar o acesso ao Armazenamento de Blobs do Azure, ao Azure Data Lake Storage Gen2 e às Filas do Azure usando os atributos request, resource, environment e principal nas camadas de desempenho das contas de armazenamento Standard e Premium. Atualmente, o atributo de solicitação de inclusão de blob de lista e atributo de solicitação de instantâneo para namespace hierárquico estão em VERSÃO PRÉVIA. Para saber mais sobre o status de recursos do ABAC para o Armazenamento do Azure, confira Status dos recursos de condição no Armazenamento do Azure.

Veja os Termos de Uso Complementares para Versões Prévias do Microsoft Azure para obter termos legais que se aplicam aos recursos do Azure que estão em versão beta, versão prévia ou que, de outra forma, ainda não foram lançados em disponibilidade geral.

Pré-requisitos

Para obter informações sobre os pré-requisitos para adicionar ou editar condições de atribuição de função, confira Pré-requisitos das condições.

Condição

Neste tutorial, você restringe o acesso a blobs com uma tag específica. Por exemplo, você adiciona uma condição a uma atribuição de função para que Chandra só possa ler arquivos com a marca Project=Cascade.

Diagrama da atribuição de função com uma condição.

Se Chandra tentar ler um blob sem a marca Project=Cascade, o acesso não será permitido.

Diagrama que mostra o acesso de leitura a blobs com a etiqueta Project=Cascade.

Veja a aparência da condição no código:

(
    (
        !(ActionMatches{'Microsoft.Storage/storageAccounts/blobServices/containers/blobs/read'}
        AND NOT
        SubOperationMatches{'Blob.List'})
    )
    OR
    (
        @Resource[Microsoft.Storage/storageAccounts/blobServices/containers/blobs/tags:Project<$key_case_sensitive$>] StringEqualsIgnoreCase 'Cascade'
    )
)

Etapa 1: Criar um usuário

  1. Entre no portal do Azure como um Proprietário de uma assinatura.

  2. Selecione Microsoft Entra ID.

  3. Crie um usuário ou localize um usuário existente. Este tutorial usa Chandra como exemplo.

Etapa 2: Configurar o armazenamento

  1. Crie uma conta de armazenamento compatível com o recurso de marcas de índice de blob. Para obter mais informações, confira Gerenciar e localizar dados de blob do Azure com marcas de índice de blob.

  2. Crie um novo contêiner dentro da conta de armazenamento e defina o nível de acesso anônimo como Privado (sem acesso anônimo).

  3. No contêiner, selecione Carregar para abrir o painel de upload.

  4. Localize um arquivo de texto a ser carregado.

  5. Selecione Avançado para expandir o painel.

  6. Na seção Marcas de índice de blob, adicione a marca de índice de blob a seguir ao arquivo de texto.

    Se a seção Marcas de índice de blob não for exibida e você tiver acabado de registrar sua assinatura, aguarde alguns minutos para que as alterações sejam propagadas. Para obter mais informações, confira Usar marcas de índice de blob para gerenciar e localizar dados no Armazenamento de Blobs do Azure.

    Observação

    Os blobs também dão suporte à capacidade de armazenar metadados de valor-chave arbitrários definidos pelo usuário. Embora os metadados sejam semelhantes às marcas de índice de blob, você precisa usar marcas de índice de blob com as condições.

    Chave Valor
    Projeto Cascade

Captura de tela mostrando o painel de upload do blob com a seção de tags de índice de blog.

  1. Selecione o botão Carregar para carregar o arquivo.

  2. Carregue um segundo arquivo de texto.

  3. Adicione a marca de índice de blob a seguir ao segundo arquivo de texto.

    Chave Valor
    Projeto Baker

Etapa 3: Atribuir uma função de dados do blob de armazenamento

  1. Abra o grupo de recursos.

  2. Selecione Controle de acesso (IAM) .

  3. Selecione a guia Atribuições de função para exibir as atribuições de função neste escopo.

  4. Selecione Adicionar>Adicionar atribuição de função. A página Adicionar atribuição de função é aberta:

Captura de tela do menu Adicionar atribuição de função >.

  1. Na guia Funções, selecione a função Leitor de Dados do Storage Blob.

Captura de tela da página Adicionar atribuição de função com a guia Funções.

  1. Na guia Membros , selecione o usuário que você criou anteriormente.

Captura de tela da página Adicionar atribuição de função com a guia Membros.

  1. (Opcional) Na caixa Descrição, insira o texto "Acesso de leitura aos blobs com a tag Project=Cascade".

  2. Selecione Próximo.

Etapa 4: Adicionar uma condição

  1. Na guia Condições (opcional), selecione Adicionar condição. A página Adicionar condição de atribuição de função é exibida:

Captura de tela da página Adicionar condição de atribuição de função para uma nova condição.

  1. Na seção Adicionar ação, selecione Adicionar ação.

    O painel Selecionar uma ação é exibido. Esse painel é uma lista filtrada de ações de dados com base na atribuição de função que será o destino da condição. Marque a caixa ao lado de Ler um blob e selecione Selecionar:

Captura de tela de Selecionar um painel de ação com uma ação selecionada.

  1. Na seção Criar expressão, selecione Adicionar expressão.

    A seção Expressão é expandida.

  2. Especifique as seguintes configurações de expressão:

    Configurações Valor
    Origem do atributo Recurso
    Atributo Marcas de índice de blob [Valores na chave]
    Chave Projeto
    Operador StringEqualsIgnoreCase
    Valor Cascade

Captura de tela da seção Criar expressão para marcas de índice de blob.

  1. Role para cima até Tipo de editor e selecione Código.

    A condição é exibida como código. Você pode fazer alterações na condição neste editor de código. Para voltar ao editor visual, selecione Visual.

Captura de tela da condição exibida no editor de código.

  1. Selecione Salvar para adicionar a condição e retornar à página Adicionar atribuição de função.

  2. Selecione Próximo.

  3. Na guia Revisão + atribuição , selecione Examinar + atribuir para atribuir a função com uma condição.

    Após alguns instantes, a função é atribuída à entidade de segurança no escopo selecionado.

Captura de tela da lista de atribuição de função depois de atribuir a função.

Etapa 5: Atribuir o perfil de leitor

  • Repita as etapas anteriores para atribuir a função Leitor ao usuário criado anteriormente no escopo do grupo de recursos.

    Observação

    Normalmente, você não precisa atribuir a função Leitor. No entanto, isso é feito para que você possa testar a condição usando o portal do Azure.

Etapa 6: Testar a condição

  1. Em uma nova janela, entre no portal do Azure.

  2. Entre como o usuário que você criou anteriormente.

  3. Abra a conta de armazenamento e o contêiner que você criou.

  4. Verifique se o método de autenticação está definido como conta de usuário do Microsoft Entra e não com a chave do Access.

Captura de tela do contêiner de armazenamento com arquivos de teste.

  1. Selecione o arquivo de texto Baker.

    VOCÊ NÃO deve ser capaz de exibir ou baixar o blob e uma mensagem com falha de autorização deve ser exibida.

  2. Selecione o arquivo de texto Cascade.

    Você deve ser capaz de ver e baixar o blob.

Etapa 7: Limpar os recursos

  1. Remova a atribuição de função que você adicionou.

  2. Exclua a conta de armazenamento de teste que você criou.

  3. Exclua o usuário que você criou.

Próximas etapas