Tutorial: Indexar e enriquecer blobs criptografados para pesquisa de texto completo no Azure AI Search

Este tutorial mostra como usar o Azure AI Search para indexar documentos que foram previamente criptografados com uma chave gerenciada pelo cliente no Armazenamento de Blobs do Azure.

Normalmente, um indexador não pode extrair conteúdo de blobs que foram criptografados usando a criptografia do lado do cliente da biblioteca de cliente do Armazenamento de Blobs do Azure porque o indexador não tem acesso à chave de criptografia gerenciada pelo cliente no Cofre de Chaves do Azure. No entanto, aproveitando a habilidade personalizada DecryptBlobFile, seguida pela habilidade Extração de Documentos, você pode fornecer acesso controlado à chave para descriptografar os arquivos e, em seguida, extrair conteúdo deles. Isso desbloqueia a capacidade de indexar e enriquecer esses documentos sem comprometer o status de criptografia de seus documentos armazenados.

Começando com documentos inteiros previamente criptografados (texto não estruturado), como PDF, HTML, DOCX e PPTX no Armazenamento de Blobs do Azure, este tutorial usa um cliente REST e as APIs REST de Pesquisa para executar as seguintes tarefas:

  • Defina um pipeline que descriptografe os documentos e extraia texto deles.
  • Defina um índice para armazenar a saída.
  • Execute o pipeline para criar e carregar o índice.
  • Explore os resultados usando a pesquisa de texto completo e uma sintaxe de consulta avançada.

Se você não tiver uma assinatura do Azure, abra uma conta gratuita antes de começar.

Pré-requisitos

A implantação de habilidades personalizadas cria um aplicativo do Azure Function e uma conta de Armazenamento do Azure. Como esses recursos são criados para você, eles não são listados como um pré-requisito. Quando terminar este tutorial, lembre-se de limpar os recursos para que você não seja cobrado por serviços que não está usando.

Nota

Os conjuntos de habilidades geralmente exigem a anexação de um recurso multisserviço da IA do Azure. Conforme escrito, esse conjunto de habilidades não depende dos serviços de IA do Azure e, portanto, nenhuma chave é necessária. Se, posteriormente, você adicionar enriquecimentos que invoquem habilidades internas, lembre-se de atualizar seu conjunto de habilidades de acordo.

Implantar a habilidade personalizada

Este exemplo usa o projeto DecryptBlobFile de exemplo do repositório GitHub do Azure Search Power Skills. Nesta seção, você implanta a habilidade em uma Função do Azure para que ela possa ser usada em um conjunto de habilidades. Um script de implantação interno cria um recurso do Azure Function com um prefixo psdbf-function-app- e carrega a habilidade. Você será solicitado a fornecer uma assinatura e um grupo de recursos. Certifique-se de escolher a mesma assinatura em que sua instância do Cofre de Chaves do Azure vive.

Operacionalmente, a habilidade DecryptBlobFile usa a URL e o token SAS para cada blob como entradas e gera o arquivo baixado e descriptografado usando o contrato de referência de arquivo esperado pelo Azure AI Search. Lembre-se que DecryptBlobFile precisa da chave de encriptação para executar a desencriptação. Como parte da instalação, você também cria uma política de acesso que concede à função DecryptBlobFile acesso à chave de criptografia no Cofre de Chaves do Azure.

  1. Clique no botão Implantar no Azure encontrado na página inicial do DecryptBlobFile, que abrirá o modelo do Gerenciador de Recursos fornecido no portal do Azure.

  2. Escolha a mesma assinatura em que sua instância do Cofre da Chave do Azure existe (este tutorial não funcionará se você selecionar uma assinatura diferente).

  3. Selecione um grupo de recursos existente ou crie um novo. Um grupo de recursos dedicado facilita a limpeza mais tarde.

  4. Selecione Rever + criar, certifique-se de que concorda com os termos e, em seguida, selecione Criar para implementar a Função do Azure.

    Captura de ecrã da página de modelo ARM no portal do Azure.

  5. Aguarde pela conclusão da implementação.

Você deve ter um aplicativo do Azure Function que contenha a lógica de descriptografia e um recurso do Armazenamento do Azure que armazenará dados do aplicativo. Nas próximas etapas, você dará ao aplicativo permissões para acessar o cofre de chaves e coletar as informações necessárias para as chamadas REST.

Conceder permissões no Azure Key Vault

  1. Navegue até o serviço Azure Key Vault no portal. Crie uma política de acesso no Cofre da Chave do Azure que conceda acesso de chave à habilidade personalizada.

  2. No painel de navegação esquerdo, selecione Políticas de acesso e, em seguida, selecione + Criar para iniciar o assistente Criar uma política de acesso .

    Captura de ecrã do comando Política de Acesso no painel de navegação esquerdo.

  3. Na página Permissões, em Configurar a partir do modelo, selecione Armazenamento Azure Data Lake ou Armazenamento do Azure.

  4. Selecione Seguinte.

  5. Na página Principal, selecione a instância do Azure Function que você implantou. Você pode procurá-lo usando o prefixo de recurso que foi usado para criá-lo na etapa 2, que tem um valor de prefixo padrão de psdbf-function-app.

  6. Selecione Seguinte.

  7. Em Rever + criar, selecione Criar.

Coletar informações do aplicativo

  1. Navegue até a função psdbf-function-app no portal e anote as seguintes propriedades necessárias para as chamadas REST:

  2. Obtenha o URL da função, que pode ser encontrado em Essentials na página principal da função.

    Captura de ecrã da página de descrição geral e da secção Essentials da aplicação Azure Function.

  3. Obtenha o código da chave do host, que pode ser encontrado navegando até Chaves do aplicativo, clicando para mostrar a chave padrão e copiando o valor.

    Captura de ecrã da página Chaves de Aplicação da aplicação Azure Function.

  1. Entre no portal do Azure e, na página Visão geral do serviço de pesquisa, obtenha o nome do serviço de pesquisa. Você pode confirmar o nome do serviço revisando a URL do ponto de extremidade. Se o URL do ponto de extremidade fosse https://mydemo.search.windows.net, o nome do serviço seria mydemo.

  2. Em Teclas de Configurações>, obtenha uma chave de administrador para obter todos os direitos no serviço. Há duas chaves de administrador intercambiáveis, fornecidas para continuidade de negócios no caso de você precisar rolar uma. Você pode usar a chave primária ou secundária em solicitações para adicionar, modificar e excluir objetos.

    Obter o nome do serviço e as chaves admin e de consulta

Todas as solicitações exigem uma chave de api no cabeçalho de cada solicitação enviada ao seu serviço. Uma chave válida estabelece confiança, por solicitação, entre o aplicativo que envia a solicitação e o serviço que a manipula.

Configurar um cliente REST

Crie variáveis para pontos de extremidade e chaves:

Variável Onde obtê-lo
admin-key Na página Chaves do serviço Azure AI Search.
search-service-name O nome do serviço Azure AI Search. O URL é https://{{search-service-name}}.search.windows.net.
storage-connection-string Na conta de armazenamento, na guia Teclas de Acesso, selecione key1>Cadeia de conexão.
storage-container-name O nome do contêiner de blob que tem os arquivos criptografados a serem indexados.
function-uri Na Função do Azure em Essentials na página principal.
function-code Na Função do Azure, navegando até Chaves de aplicativo, clicando para mostrar a chave padrão e copiando o valor.
api-version Sair como 2020-06-30.
datasource-name Deixe como encrypted-blobs-ds.
index-name Deixe como encrypted-blobs-idx.
skillset-name Deixe como encrypted-blobs-ss.
indexer-name Deixe como encrypted-blobs-ixr.

Revise e execute cada solicitação

Use solicitações HTTP para criar os objetos de um pipeline de enriquecimento:

  • Solicitação PUT para criar o índice: esse índice de pesquisa contém os dados que o Azure AI Search usa e retorna.

  • Solicitação POST para criar a fonte de dados: essa fonte de dados especifica a conexão com sua conta de armazenamento que contém os arquivos de blob criptografados.

  • Solicitação PUT para criar o conjunto de habilidades: o conjunto de habilidades especifica a definição de habilidade personalizada para a Função do Azure que descriptografará os dados do arquivo de blob e uma DocumentExtractionSkill para extrair o texto de cada documento depois que ele for descriptografado.

  • Solicitação PUT para criar o indexador: a execução do indexador recupera os blobs, aplica o conjunto de habilidades e indexa e armazena os resultados. Você deve executar essa solicitação por último. A habilidade personalizada no conjunto de habilidades invoca a lógica de descriptografia.

Monitorar indexação

A indexação e o enriquecimento começam assim que você envia a solicitação Criar indexador. Dependendo de quantos documentos estão na sua conta de armazenamento, a indexação pode demorar um pouco. Para descobrir se o indexador ainda está em execução, envie uma solicitação Obter Status do Indexador e revise a resposta para saber se o indexador está em execução ou para exibir informações de erro e aviso.

Se você estiver usando o nível Gratuito, a seguinte mensagem é esperada: "Could not extract content or metadata from your document. Truncated extracted text to '32768' characters". Esta mensagem aparece porque a indexação de blob no nível Free tem um limite de 32K na extração de caracteres. Você não verá essa mensagem para esse conjunto de dados em camadas mais altas.

Pesquise o seu conteúdo

Após a conclusão da execução do indexador, você pode executar algumas consultas para verificar se os dados foram descriptografados e indexados com êxito. Navegue até o serviço Azure AI Search no portal e use o Gerenciador de Pesquisa para executar consultas sobre os dados indexados.

Clean up resources (Limpar recursos)

Quando estiver a trabalhar na sua própria subscrição, no final de um projeto, é uma boa ideia remover os recursos de que já não necessita. Os recursos que deixar em execução podem custar dinheiro. Pode eliminar recursos individualmente ou eliminar o grupo de recursos para eliminar todo o conjunto de recursos.

Você pode encontrar e gerenciar recursos no portal, usando o link Todos os recursos ou Grupos de recursos no painel de navegação esquerdo.

Próximos passos

Agora que indexou com sucesso ficheiros encriptados, pode iterar neste pipeline adicionando mais competências. Isso permitirá que você enriqueça e obtenha informações adicionais sobre seus dados.

Se você estiver trabalhando com dados duplamente criptografados, convém investigar os recursos de criptografia de índice disponíveis no Azure AI Search. Embora o indexador precise de dados descriptografados para fins de indexação, uma vez que o índice existe, ele pode ser criptografado em um índice de pesquisa usando uma chave gerenciada pelo cliente. Isso garantirá que seus dados sejam sempre criptografados quando estiverem em repouso. Para obter mais informações, consulte Configurar chaves gerenciadas pelo cliente para criptografia de dados no Azure AI Search.