Conectar-se ao Azure AI Search usando o controle de acesso baseado em função do Azure (Azure RBAC)

O Azure fornece um sistema global de autorização de controle de acesso baseado em função para todos os serviços em execução na plataforma. Na Pesquisa de IA do Azure, você pode usar funções do Azure para:

  • Controle operações de plano (tarefas de administração de serviço por meio do Azure Resource Manager).

  • Operações de plano de dados, como criação, carregamento e consulta de índices.

Não há suporte para acesso por usuário nos resultados da pesquisa (às vezes chamado de segurança em nível de linha ou segurança em nível de documento). Como solução alternativa, crie filtros de segurança que cortam os resultados por identidade do usuário, removendo documentos aos quais o solicitante não deve ter acesso.

Nota

Na Pesquisa de IA do Azure, "plano de controle" refere-se a operações com suporte na API REST de Gerenciamento ou bibliotecas de cliente equivalentes. O "plano de dados" refere-se a operações no ponto de extremidade do serviço de pesquisa, como indexação ou consultas, ou qualquer outra operação especificada na API REST de Pesquisa ou bibliotecas de cliente equivalentes.

As funções a seguir são incorporadas. Se essas funções forem insuficientes, crie uma função personalizada.

Role Avião Description
Proprietário Controlo & Dados Acesso total ao plano de controle do recurso de pesquisa, incluindo a capacidade de atribuir funções do Azure. Somente a função Proprietário pode habilitar ou desabilitar opções de autenticação ou gerenciar funções para outros usuários. Os administradores de subscrição são membros por predefinição.

No plano de dados, essa função tem o mesmo acesso que a função de Colaborador do Serviço de Pesquisa. Inclui acesso a todas as ações do plano de dados, exceto a capacidade de consultar ou indexar documentos.
Contribuinte Controlo & Dados Mesmo nível de acesso ao plano de controle que o proprietário, menos a capacidade de atribuir funções ou alterar opções de autenticação.

No plano de dados, essa função tem o mesmo acesso que a função de Colaborador do Serviço de Pesquisa. Inclui acesso a todas as ações do plano de dados, exceto a capacidade de consultar ou indexar documentos.
Leitor Controlo & Dados Acesso de leitura em todo o serviço, incluindo métricas de pesquisa, métricas de conteúdo (armazenamento consumido, número de objetos) e as definições de objeto de recursos do plano de dados (índices, indexadores e assim por diante). No entanto, ele não pode ler chaves de API ou ler conteúdo dentro de índices.
Colaborador do Serviço de Pesquisa Controlo & Dados Acesso de leitura-gravação a definições de objetos (índices, mapas de sinônimos, indexadores, fontes de dados e conjuntos de habilidades). Consulte Microsoft.Search/searchServices/* a lista de permissões. Essa função não pode acessar o conteúdo em um índice, portanto, nenhuma consulta ou indexação, mas pode criar, excluir e listar índices, retornar definições e estatísticas de índice e analisar analisadores. Essa função é para administradores de serviço de pesquisa que precisam gerenciar o serviço de pesquisa e seus objetos, mas sem acesso ao conteúdo.
Contribuidor de dados do índice de pesquisa Dados Acesso de leitura-gravação ao conteúdo em todos os índices no serviço de pesquisa. Essa função é para desenvolvedores ou proprietários de índice que precisam importar, atualizar ou consultar a coleção de documentos de um índice.
Leitor de dados de índice de pesquisa Dados Acesso somente leitura a todos os índices de pesquisa no serviço de pesquisa. Essa função é para aplicativos e usuários que executam consultas.

Nota

Se você desabilitar o acesso baseado em função do Azure, as funções internas para o plano de controle (Proprietário, Colaborador, Leitor) continuarão disponíveis. A desativação do RBAC do Azure remove apenas as permissões relacionadas a dados associadas a essas funções. Em um cenário de RBAC desabilitado, o Colaborador do Serviço de Pesquisa é equivalente ao Colaborador do plano de controle.

Limitações

  • A adoção do controle de acesso baseado em função pode aumentar a latência de algumas solicitações. Cada combinação exclusiva de recurso de serviço (índice, indexador, etc.) e entidade de serviço usada em uma solicitação dispara uma verificação de autorização. Essas verificações de autorização podem adicionar até 200 milissegundos de latência a uma solicitação.

  • Em casos raros em que as solicitações se originam de um grande número de entidades de serviço diferentes, todas direcionadas a recursos de serviço diferentes (índices, indexadores, etc.), é possível que as verificações de autorização resultem em limitação. A limitação só aconteceria se centenas de combinações exclusivas de recurso de serviço de pesquisa e entidade de serviço fossem usadas em um segundo.

Configurar o acesso baseado em função para o plano de dados

Aplica-se a: Contribuidor de Dados de Índice de Pesquisa, Leitor de Dados de Índice de Pesquisa, Colaborador de Serviço de Pesquisa

Nesta etapa, configure seu serviço de pesquisa para reconhecer um cabeçalho de autorização em solicitações de dados que fornecem um token de acesso OAuth2.

  1. Entre no portal do Azure e abra a página do serviço de pesquisa.

  2. Selecione Teclas no painel de navegação esquerdo.

    Captura de ecrã da página de chaves com opções de autenticação.

  3. Escolha uma opção de controle de acesso à API. Recomendamos ambos se você quiser flexibilidade ou precisar migrar aplicativos.

    Opção Description
    Chave de API (padrão). Requer um administrador ou chaves de API de consulta no cabeçalho da solicitação de autorização. Nenhuma função é usada.
    Controlo de acesso baseado em funções Requer associação a uma atribuição de função para concluir a tarefa, descrita na próxima etapa. Também requer um cabeçalho de autorização.
    Ambos As solicitações são válidas usando uma chave de API ou um controle de acesso baseado em função.

A alteração entra em vigor imediatamente, mas aguarde alguns segundos antes do teste.

Todas as chamadas de rede para operações de serviço de pesquisa e conteúdo respeitam a opção selecionada: chaves de API, token de portador ou qualquer uma se você selecionar Ambos.

Quando você habilita o controle de acesso baseado em função no portal, o modo de falha é "http401WithBearerChallenge" se a autorização falhar.

Atribuir funções

As atribuições de função são cumulativas e generalizadas em todas as ferramentas e bibliotecas de clientes. Você pode atribuir funções usando qualquer uma das abordagens com suporte descritas na documentação de controle de acesso baseado em função do Azure.

Você deve ser um Proprietário ou ter permissões Microsoft.Authorization/roleAssignments/write para gerenciar atribuições de função.

As atribuições de função no portal abrangem todo o serviço. Se você quiser conceder permissões a um único índice, use o PowerShell ou a CLI do Azure.

  1. Inicie sessão no portal do Azure.

  2. Navegue até o serviço de pesquisa.

  3. Selecione Controle de acesso (IAM) no painel de navegação esquerdo.

  4. Selecione + Adicionar>Adicionar atribuição de função.

    Página de controle de acesso (IAM) com o menu Adicionar atribuição de função aberto.

  5. Selecione uma função aplicável:

    • Proprietário
    • Contribuinte
    • Leitor
    • Colaborador do Serviço de Pesquisa
    • Contribuidor de dados do índice de pesquisa
    • Leitor de dados de índice de pesquisa
  6. Na guia Membros, selecione a identidade do usuário ou grupo do Microsoft Entra.

  7. No separador Rever + atribuir, selecione Rever + atribuir para atribuir a função.

Atribuições de função de teste

Use um cliente para testar atribuições de função. Lembre-se de que as funções são cumulativas e herdadas com escopo para a assinatura ou grupo de recursos não podem ser excluídas ou negadas no nível do recurso (serviço de pesquisa).

Certifique-se de registrar seu aplicativo cliente com o Microsoft Entra ID e ter atribuições de função antes de testar o acesso.

  1. Inicie sessão no portal do Azure.

  2. Navegue até o serviço de pesquisa.

  3. Na página Visão geral, selecione a guia Índices :

    • Os colaboradores podem exibir e criar qualquer objeto, mas não podem consultar um índice usando o Search Explorer.

    • Os leitores de dados do índice de pesquisa podem usar o Search Explorer para consultar o índice. Você pode usar qualquer versão da API para verificar o acesso. Você deve ser capaz de enviar consultas e exibir resultados, mas não deve ser capaz de exibir a definição de índice.

    • Dados de índice de pesquisa Os colaboradores podem selecionar Novo índice para criar um novo índice. Salvar um novo índice verifica o acesso de gravação no serviço.

Testar como usuário atual

Se já for um Colaborador ou Proprietário do seu serviço de pesquisa, pode apresentar um token de portador para a sua identidade de utilizador para autenticação no Azure AI Search.

  1. Obtenha um token de portador para o usuário atual usando a CLI do Azure:

    az account get-access-token --scope https://search.azure.com/.default
    

    Ou usando o PowerShell:

    Get-AzAccessToken -ResourceUrl "https://graph.microsoft.com/"
    
  2. Em um novo arquivo de texto no Visual Studio Code, cole estas variáveis:

    @baseUrl = PASTE-YOUR-SEARCH-SERVICE-URL-HERE
    @index-name = PASTE-YOUR-INDEX-NAME-HERE
    @token = PASTE-YOUR-TOKEN-HERE
    
  3. Cole e envie uma solicitação para confirmar o acesso. Aqui está um que consulta o índice de início rápido de hotéis

    POST https://{{baseUrl}}/indexes/{{index-name}}/docs/search?api-version=2023-11-01 HTTP/1.1
      Content-type: application/json
      Authorization: Bearer {{token}}
    
        {
             "queryType": "simple",
             "search": "motel",
             "filter": "",
             "select": "HotelName,Description,Category,Tags",
             "count": true
         }
    

Conceder acesso a um único índice

Em alguns cenários, talvez você queira limitar o acesso de um aplicativo a um único recurso, como um índice.

Atualmente, o portal não oferece suporte a atribuições de função nesse nível de granularidade, mas pode ser feito com o PowerShell ou a CLI do Azure.

No PowerShell, use New-AzRoleAssignment, fornecendo o nome de usuário ou grupo do Azure e o escopo da atribuição.

  1. Carregue os módulos Azure e AzureAD e conecte-se à sua conta do Azure:

    Import-Module -Name Az
    Import-Module -Name AzureAD
    Connect-AzAccount
    
  2. Adicione uma atribuição de função com escopo a um índice individual:

    New-AzRoleAssignment -ObjectId <objectId> `
        -RoleDefinitionName "Search Index Data Contributor" `
        -Scope  "/subscriptions/<subscription>/resourceGroups/<resource-group>/providers/Microsoft.Search/searchServices/<search-service>/indexes/<index-name>"
    

Criar uma função personalizada

Se as funções internas não fornecerem a combinação correta de permissões, você poderá criar uma função personalizada para dar suporte às operações necessárias

Este exemplo clona o Search Index Data Reader e, em seguida, adiciona a capacidade de listar índices por nome. Normalmente, a listagem dos índices num serviço de pesquisa é considerada um direito administrativo.

Essas etapas são derivadas de Criar ou atualizar funções personalizadas do Azure usando o portal do Azure. A clonagem de uma função existente é suportada em uma página de serviço de pesquisa.

Estas etapas criam uma função personalizada que aumenta os direitos de consulta de pesquisa para incluir índices de listagem por nome. Normalmente, listar índices é considerado uma função de administração.

  1. No portal do Azure, navegue até o serviço de pesquisa.

  2. No painel de navegação esquerdo, selecione Controle de acesso (IAM).

  3. Na barra de ações, selecione Funções.

  4. Clique com o botão direito do mouse em Leitor de Dados de Índice de Pesquisa (ou outra função) e selecione Clonar para abrir o assistente Criar uma função personalizada.

  5. Na guia Noções básicas, forneça um nome para a função personalizada, como "Search Index Data Explorer" e selecione Avançar.

  6. Na guia Permissões, selecione Adicionar permissão.

  7. Na guia Adicionar permissões, procure e selecione o bloco Pesquisa da Microsoft.

  8. Defina as permissões para sua função personalizada. Na parte superior da página, usando a seleção padrão Ações :

    • Em Microsoft.Search/operations, selecione Read : List all available operations.
    • Em Microsoft.Search/searchServices/indexes, selecione Ler : Ler Índice.
  9. Na mesma página, alterne para Ações de dados e, em Microsoft.Search/searchServices/indexes/documents, selecione Ler: Ler documentos.

    A definição JSON se parece com o exemplo a seguir:

    {
     "properties": {
         "roleName": "search index data explorer",
         "description": "",
         "assignableScopes": [
             "/subscriptions/a5b1ca8b-bab3-4c26-aebe-4cf7ec4791a0/resourceGroups/heidist-free-search-svc/providers/Microsoft.Search/searchServices/demo-search-svc"
         ],
         "permissions": [
             {
                 "actions": [
                     "Microsoft.Search/operations/read",
                     "Microsoft.Search/searchServices/indexes/read"
                 ],
                 "notActions": [],
                 "dataActions": [
                     "Microsoft.Search/searchServices/indexes/documents/read"
                 ],
                 "notDataActions": []
             }
         ]
       }
     }
    
  10. Selecione Rever + criar para criar a função. Agora você pode atribuir usuários e grupos à função.

Desativar autenticação de chave de API

O acesso à chave, ou autenticação local, pode ser desabilitado em seu serviço se você estiver usando as funções Colaborador do Serviço de Pesquisa, Colaborador de Dados de Índice de Pesquisa e Leitor de Dados de Índice de Pesquisa e autenticação do Microsoft Entra. A desativação de chaves de API faz com que o serviço de pesquisa recuse todas as solicitações relacionadas a dados que passam uma chave de API no cabeçalho.

Nota

As chaves da API de administração só podem ser desativadas, não excluídas. As chaves da API de consulta podem ser excluídas.

As permissões de Proprietário ou Colaborador são necessárias para desativar os recursos.

Para desabilitar a autenticação baseada em chave, use o portal do Azure ou a API REST de gerenciamento.

  1. No portal do Azure, navegue até o serviço de pesquisa.

  2. No painel de navegação esquerdo, selecione Chaves.

  3. Selecione Controle de acesso baseado em função.

A alteração entra em vigor imediatamente, mas aguarde alguns segundos antes do teste. Supondo que você tenha permissão para atribuir funções como membro de Proprietário, administrador de serviço ou coadministrador, você pode usar os recursos do portal para testar o acesso baseado em função.

Acesso Condicional

O Acesso Condicional é uma ferramenta no Microsoft Entra ID usada para impor políticas organizacionais. Usando políticas de Acesso Condicional, você pode aplicar os controles de acesso corretos quando necessário para manter sua organização segura. Ao acessar um serviço de Pesquisa de IA do Azure usando o controle de acesso baseado em função, o Acesso Condicional pode impor políticas organizacionais.

Para habilitar uma política de Acesso Condicional para o Azure AI Search, siga as etapas abaixo:

  1. Inicie sessão no portal do Azure.

  2. Procure acesso condicional do Microsoft Entra.

  3. Selecione Políticas.

  4. Selecione + Nova Política.

  5. Na seção Aplicativos ou ações na nuvem da política, adicione o Azure AI Search como um aplicativo na nuvem, dependendo de como você deseja configurar sua política.

  6. Atualize os parâmetros restantes da política. Por exemplo, especifique a quais usuários e grupos essa política se aplica.

  7. Guardar a política.

Importante

Se o seu serviço de pesquisa tiver uma identidade gerenciada atribuída a ele, o serviço de pesquisa específico aparecerá como um aplicativo na nuvem que pode ser incluído ou excluído como parte da política de Acesso Condicional. As políticas de Acesso Condicional não podem ser aplicadas a um serviço de pesquisa específico. Em vez disso, certifique-se de selecionar o aplicativo de nuvem geral do Azure AI Search .

Solução de problemas de controle de acesso baseado em função

Ao desenvolver aplicativos que usam controle de acesso baseado em função para autenticação, alguns problemas comuns podem ocorrer:

  • Se o token de autorização veio de uma identidade gerenciada e as permissões apropriadas foram atribuídas recentemente, pode levar várias horas para que essas atribuições de permissões entrem em vigor.
  • A configuração padrão para um serviço de pesquisa é apenas a autenticação baseada em chave. Se você não alterou a configuração de chave padrão para Ambos ou Controle de acesso baseado em função, todas as solicitações que usam autenticação baseada em função serão negadas automaticamente, independentemente das permissões subjacentes.