Partilhar 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, aprenderás como:

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

Importante

O controlo de acesso baseado em atributos do Azure (Azure ABAC) está geralmente disponível (GA) para controlar o acesso ao Azure Blob Storage, ao Azure Data Lake Storage Gen2 e às Filas do Azure, usando os atributos request, resource, environment e principal nas camadas de desempenho da conta de armazenamento padrão e premium. Atualmente, o blob de lista inclui o atributo request e o atributo snapshot request para namespace hierárquico estão em PREVIEW. Para obter informações completas sobre o status do recurso ABAC para Armazenamento Azure, consulte Status das funcionalidades condicionais no Armazenamento Azure.

Consulte os Termos de Utilização Complementares das Visualizações Prévias do Microsoft Azure para obter os termos legais que se aplicam às funcionalidades do Azure que estão em beta, em pré-visualização ou que ainda não foram lançadas para disponibilidade geral.

Pré-requisitos

Para obter informações sobre os pré-requisitos para adicionar ou editar condições de atribuição de função, consulte Pré-requisitos de 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 o Chandra só possa ler arquivos com a tag Project=Cascade.

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

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

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

Veja como a condição se parece 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. Inicie sessão no portal do Azure como Proprietário de uma subscrição.

  2. Selecione Microsoft Entra ID.

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

Etapa 2: configurar o armazenamento

  1. Crie uma conta de armazenamento que seja compatível com a funcionalidade de tags de índice de blob. Para obter mais informações, consulte 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 Carregar blob.

  4. Encontre um ficheiro de texto para carregar.

  5. Selecione Avançado para expandir o painel.

  6. Na seção Marcas de índice de Blob, adicione a seguinte etiqueta de índice Blob ao ficheiro de texto.

    Se não conseguir ver a secção das etiquetas de índice do Blob e tiver acabado de registar a sua subscrição, poderá ter de aguardar alguns minutos para que as alterações se propaguem. Para obter mais informações, consulte Usar tags de índice de blob para gerir e localizar dados no Armazenamento de Blobs do Azure.

    Observação

    Os blobs também suportam a capacidade de armazenar metadados arbitrários de chave-valor definidos pelo usuário. Embora os metadados sejam semelhantes às tags de índice de blob, você deve usar tags de índice de blob com condições.

    Chave Valor
    Projeto Cascata

Captura de ecrã a mostrar o painel Carregar blob com a secção Etiquetas de índice do blogue.

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

  2. Carregue um segundo ficheiro de texto.

  3. Adicione a seguinte tag de índice de blob ao segundo ficheiro de texto.

    Chave Valor
    Projeto Padeiro

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

  1. Abra o grupo de recursos.

  2. Selecione Controlo de acesso (IAM) .

  3. Selecione o separador Atribuições de funções para ver as atribuições de funções neste âmbito.

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

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

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

Captura de ecrã da página Adicionar atribuição de função com o separador Funções.

  1. Na guia Membros , selecione o usuário criado anteriormente.

Captura de ecrã da página Adicionar atribuição de função com o separador Membros.

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

  2. Selecione Seguinte.

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 ecrã 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 Selecione uma ação é exibido. Este painel é uma lista filtrada de ações de dados baseada na atribuição de papéis que será o objetivo da sua condição. Marque a caixa ao lado de Ler um blob e depois clique em Selecionar:

Captura de ecrã de Selecione 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 Tags de índice de blob [Valores na chave]
    Chave Projeto
    Operador StringEqualsIgnoreCase
    Valor Cascata

Captura de ecrã da secção Criar expressão para etiquetas 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ódigos. 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 Seguinte.

  3. No separador Rever + atribuir , selecione Rever + atribuir para atribuir a função com uma condição.

    Após alguns instantes, é atribuída ao principal de segurança a função no âmbito selecionado.

Captura de tela da lista de atribuição de função após a atribuição da função.

Etapa 5: Atribuir a função 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, não é necessário atribuir a função de 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. Numa nova janela, inicie sessão no portal do Azure.

  2. Inicie sessão como o utilizador que 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 como Chave de acesso.

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 visualizar ou baixar o blob e uma mensagem de falha de autorização deve ser exibida.

  2. Selecione Arquivo de texto em cascata.

    Você deverá conseguir visualizar e baixar o blob.

Etapa 7: Limpar recursos

  1. Remova a atribuição de função adicionada.

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

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

Próximos passos