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
Azure AI Search em qualquer camada ou região.
Armazenamento do Azure, desempenho Standard (uso geral v2)
Blobs criptografados com uma chave gerenciada pelo cliente. Confira Tutorial: criptografar e descriptografar blobs o usando Azure Key Vault se você precisar criar dados de exemplo.
Azure Key Vault na mesma assinatura que o Azure AI Search. O cofre de chaves deve ter a exclusão reversível e a proteção contra limpeza habilitadas.
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.
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.
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).
Selecione um grupo de recursos existente ou crie um novo. Um grupo de recursos dedicado facilita a limpeza mais tarde.
Selecione Revisão + criar, certifique-se de que você concorda com os termos e selecione Criar para implantar no Azure Function.
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
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.
No painel de navegação à esquerda, selecione Políticas de acesso e selecione + Criar para iniciar o assistente Criar uma política de acesso.
Na página Permissões em Configurar do modelo, selecione Azure Data Lake Storage ou Armazenamento do Azure.
Selecione Avançar.
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.
Selecione Avançar.
Em Examinar + criar, selecione Criar.
Coletar informações do aplicativo
Navegue até a função psdbf-function-app no portal e anote as seguintes propriedades que você precisará para as chamadas REST:
Obtenha a URL da função, que pode ser encontrada em Informações básicas na página principal da função.
Obtenha o código da chave do host, navegando até Chaves do aplicativo, clicando para mostrar a chave padrão e copiando o valor.
Obter uma chave de api de administrador e uma URL para o Azure AI Search
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
.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.
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.