Compartilhar via


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 já foram 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 clientes do Armazenamento de Blobs do Azure porque o indexador não tem acesso à chave de criptografia gerenciada pelo cliente no Azure Key Vault. No entanto, aproveitando a habilidade personalizada DecryptBlobFile e depois a Habilidade extração de documentos, você pode permitir acesso controlado à chave para descriptografar os arquivos e depois extrair conteúdo deles. Isso oferece a capacidade de indexar e enriquecer esses documentos sem comprometer o status de criptografia dos documentos armazenados.

Começando com documentos inteiros criptografados anteriormente (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 descriptografa os documentos e extraia o 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.

Caso não tenha uma assinatura do Azure, abra uma conta gratuita antes de começar.

Pré-requisitos

A implantação de habilidades personalizadas cria um aplicativo de funções do Azure e uma conta de Armazenamento Azure. Como esses recursos já 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 esteja usando.

Observação

Os conjuntos de habilidades geralmente exigem anexar um recurso multisserviços de 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 mais tarde você adicionar enriquecimentos que invoquem habilidades internas, lembre-se de atualizar o conjunto de habilidades corretamente.

1 - Cria serviços e coleta credenciais

Implantar a habilidade personalizada

Este exemplo usa o projeto DecryptBlobFile de exemplo do repositório GitHub Azure Search Power Skills. Nesta seção, você implantará a habilidade no Azure Function para que ela possa ser usada em um conjunto de habilidades. Um script de implantação interno cria um recurso do Azure Function com nome iniciando com psdbf-function-app- e carrega a habilidade. Será solicitado que você forneça uma assinatura e um grupo de recursos. Certifique-se de escolher a mesma assinatura na qual reside sua instância do Azure Key Vault.

De forma opcional, a habilidade DecryptBlobFile pega 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 que o Azure AI Search espera. Lembre-se de que a DecryptBlobFile precisa da chave de criptografia para descriptografar. Durante a instalação, você também criará uma política de acesso que dê à função DecryptBlobFile o acesso à chave de criptografia do Azure Key Vault.

  1. Clique no botão Implantar no Azure encontrado na página de aterrissagem da DecryptBlobFile, que abrirá o modelo do Resource Manager fornecido dentro do portal do Azure.

  2. Escolha a mesma assinatura em que a instância do Azure Key Vault 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 Revisão + criar, certifique-se de que você concorda com os termos e selecione Criar para implantar no Azure Function.

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

  5. Aguarde até que a implantação seja concluída.

Você deve ter um aplicativo de funções do Azure que contenha a lógica de descriptografia e um recurso de Armazenamento do Azure que armazenará os 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 Azure Key Vault que concede acesso à chave para a habilidade personalizada.

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

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

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

  4. Selecione Avançar.

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

  6. Selecione Avançar.

  7. Em Examinar + criar, selecione Criar.

Coletar informações do aplicativo

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

  2. Obtenha a URL da função, que pode ser encontrada em Informações básicas na página principal da função.

    Captura de tela da página de visão geral e da seção Essentials do aplicativo Azure Functions.

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

    Captura de tela da página Chaves de Aplicativo do aplicativo do Azure Functions.

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

  2. Em Configurações>Chaves, obtenha uma chave de administração para adquirir todos os direitos sobre o serviço. Há duas chaves de administração intercambiáveis, fornecidas para a continuidade dos negócios, caso seja necessário sobrepor uma. É possível 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 de consulta e de administrador

Todas as solicitações exigem uma api-key no cabeçalho de cada solicitação enviada a seu serviço. Uma chave válida estabelece a relação de confiança, para cada 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 obter
admin-key Na página Chaves do serviço do Azure AI Search.
search-service-name O nome do serviço do Azure AI Search. A URL é https://{{search-service-name}}.search.windows.net.
storage-connection-string Na conta de armazenamento, na guia Chaves de Acesso, selecione key1>Cadeia de conexão.
storage-container-name O nome do contêiner de blobs que contém os arquivos criptografados a serem indexados.
function-uri No Azure Function, em Essentials na página principal.
function-code No Azure Function, navegando para Chaves de aplicativo, clicando para mostrar a chave padrão e copiando o valor.
api-version Deixe 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.

Examinar e executar 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 a 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 o Azure Function que descriptografará os dados do arquivo de blobs e um DocumentExtractionSkill para extrair o texto de cada documento depois que ele tiver sido 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. É necessário executar essa solicitação por último. A habilidade personalizada no conjunto de habilidades invoca a lógica de descriptografia.

Monitorar a indexação

A indexação e o enriquecimento são iniciados assim que você envia a solicitação Criar Indexador. Dependendo de quantos documentos estão em 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 examine a resposta para saber se o indexador está em execução ou para exibir informações de erro e aviso.

Se usar a Camada gratuita, a mensagem a seguir é esperada: "Could not extract content or metadata from your document. Truncated extracted text to '32768' characters". Essa mensagem é exibida porque a indexação de blob na Camada gratuita tem um limite de 32 mil caracteres na extração de caracteres. Você não verá essa mensagem para esse conjunto de dados em camadas superiores.

Pesquisar seu conteúdo

Depois que a execução do indexador for concluída, você poderá executar algumas consultas para verificar se os dados foram descriptografados e indexados com êxito. Navegue até o serviço do Azure AI Search no portal e use o Gerenciador de pesquisa para executar consultas nos dados indexados.

Limpar os recursos

Quando você está trabalhando em sua própria assinatura, no final de um projeto, é uma boa ideia remover os recursos que já não são necessários. Recursos deixados em execução podem custar dinheiro. Você pode excluir os recursos individualmente ou excluir o grupo de recursos para excluir todo o conjunto de recursos.

Você pode localizar e gerenciar recursos no portal usando o link Todos os recursos ou Grupos de recursos no painel de navegação à esquerda.

Próximas etapas

Agora que você indexou com êxito os arquivos criptografados, você pode iterar nesse pipeline adicionando habilidades mais cognitivas. Isso permitirá que você melhore e obtenha insights adicionais sobre seus dados.

Se você estiver trabalhando com dados criptografados duplicados, talvez queira 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, se o índice existir, ele poderá ser criptografado usando uma chave gerenciada pelo cliente. Isso garantirá que seus dados sejam sempre criptografados quando em repouso. Para saber mais, confira Configurar chaves gerenciadas pelo cliente para dados criptografados no Azure AI Search.