자습서: Azure AI 검색에서 전체 텍스트 검색을 위해 암호화된 Blob 인덱싱 및 보강
이 자습서에서는 Azure AI 검색을 사용하여 Azure Blob Storage에서 이전에 고객 관리형 키로 암호화된 문서를 인덱싱하는 방법을 보여 줍니다.
일반적으로 인덱서는 Azure Blob Storage 클라이언트 라이브러리의 클라이언트 쪽 암호화를 사용하여 암호화된 Blob에서 콘텐츠를 추출할 수 없습니다. 인덱서는 Azure Key Vault의 고객 관리형 암호화 키에 액세스할 수 없기 때문입니다. 그러나 DecryptBlobFile 사용자 지정 기술에 이어 문서 추출 기술을 활용하면 키에 대한 제어된 액세스를 제공하여 파일의 암호를 해독한 다음, 해당 파일에서 콘텐츠를 추출할 수 있습니다. 이렇게 하면 저장된 문서의 암호화 상태를 손상시키지 않고 이러한 문서를 인덱싱하고 보강하는 기능이 해제됩니다.
이 자습서는 Azure Blob Storage에서 PDF, HTML, DOCX 및 PPTX와 같은 이전에 암호화된 전체 문서(비정형 텍스트)부터 시작하여 REST 클라이언트 및 Search REST API를 사용하여 다음 작업을 수행합니다.
- 문서의 암호를 해독하고 텍스트를 추출하는 파이프라인을 정의합니다.
- 출력을 저장할 인덱스를 정의합니다.
- 파이프라인을 실행하여 인덱스를 만들고 로드합니다.
- 전체 텍스트 검색과 풍부한 쿼리 구문을 사용하여 결과를 검색합니다.
Azure 구독이 없는 경우 시작하기 전에 체험 계정을 엽니다.
필수 조건
모든 계층 또는 지역의 Azure AI 검색
Azure Storage, 표준 성능(범용 v2)
고객 관리형 키로 암호화된 Blob. 샘플 데이터를 만들어야 하는 경우 자습서: Azure Key Vault를 사용하여 Blob 암호화 및 암호 해독을 참조하세요.
Azure AI 검색과 동일한 구독의 Azure Key Vault. 키 자격 증명 모음에는 일시 삭제 및 보호 제거가 설정되어 있어야 합니다.
사용자 지정 기술 배포는 Azure Function 앱 및 Azure Storage 계정을 만듭니다. 이러한 리소스는 사용자를 위해 생성되므로 필수 구성 요소로 나열되지 않습니다. 이 자습서를 마치면 사용하지 않는 서비스에 대한 요금이 청구되지 않도록 리소스를 정리해야 함을 기억하세요.
참고 항목
기술 세트에는 Azure AI 다중 서비스 리소스를 연결해야 하는 경우가 많습니다. 기록된 대로 이 기술 세트는 Azure AI 서비스에 대한 종속성이 없으므로 키가 필요하지 않습니다. 나중에 기본 제공 기술을 호출하는 보강을 추가하는 경우 그에 따라 기술 세트를 업데이트해야 합니다.
1 - 서비스 만들기 및 자격 증명 수집
사용자 지정 기술 배포
이 예제에서는 Azure Search Power Skills GitHub 리포지토리의 샘플 DecryptBlobFile 프로젝트를 사용합니다. 이 섹션에서는 기술 세트에 사용할 수 있도록 기술을 Azure 함수에 배포합니다. 기본 제공 배포 스크립트는 psdbf-function-app-으로 시작하는 Azure 함수 리소스를 만들고 해당 기술을 로드합니다. 구독 및 리소스 그룹을 제공하라는 메시지가 표시됩니다. Azure Key Vault 인스턴스가 상주하는 것과 동일한 구독을 선택해야 합니다.
운영상, DecryptBlobFile 기술은 각 BLOB에 대한 URL 및 SAS 토큰을 입력으로 사용하고, Azure AI 검색에서 기대하는 파일 참조 계약을 사용하여 다운로드한 암호 해독된 파일을 출력합니다. 암호 해독을 수행하려면 DecryptBlobFile에 암호화 키가 필요하다는 점을 기억하십시오. 설정의 일부로 Azure Key Vault의 암호화 키에 대한 DecryptBlobFile 함수 액세스 권한을 부여하는 액세스 정책도 만듭니다.
DecryptBlobFile 방문 페이지에 있는 Azure에 배포 단추를 클릭하면 Azure Portal 내에서 제공된 Resource Manager 템플릿이 열립니다.
Azure Key Vault 인스턴스가 있는 동일한 구독을 선택합니다(다른 구독을 선택하면 이 자습서가 작동하지 않음).
기존 리소스 그룹을 선택하거나 새 리소스 그룹을 만듭니다. 전용 리소스 그룹을 사용하면 나중에 정리가 더 쉬워집니다.
검토 + 만들기를 선택하고 사용 약관에 동의했는지 확인한 다음 만들기를 선택하여 Azure 함수를 배포합니다.
배포가 완료될 때까지 기다립니다.
암호 해독 논리를 포함하는 Azure Function 앱과 애플리케이션 데이터를 저장할 Azure Storage 리소스가 있어야 합니다. 다음 몇 단계에서는 앱에 키 자격 증명 모음에 액세스하고 REST 호출에 필요한 정보를 수집할 수 있는 권한을 부여합니다.
Azure Key Vault에서 권한 부여
포털에서 Azure Key Vault 서비스로 이동합니다. 사용자 지정 기술에 대한 키 액세스 권한을 부여하는 액세스 정책 Azure Key Vault에 만듭니다.
왼쪽 탐색 창에서 액세스 정책을 선택한 다음, + 만들기를 선택하여 액세스 정책 만들기 마법사를 시작합니다.
템플릿에서 구성 아래 권한 부여 페이지에서 Azure Data Lake Storage 또는 Azure Storage를 선택합니다.
다음을 선택합니다.
보안 주체 페이지에서 배포한 Azure Function 인스턴스를 선택합니다. 2단계에서 생성하는 데 사용된 리소스 접두사를 사용하여 검색할 수 있습니다. 여기에는 기본 접두사 값인 psdbf-function-app이 포함됩니다.
다음을 선택합니다.
검토 + 만들기에서 만들기를 선택합니다.
앱 정보 수집
포털에서 psdbf-function-app 함수로 이동하고 앞으로 REST 호출에 대해 필요한 다음 속성을 기록해 둡니다.
함수 URL을 가져옵니다. 함수에 대한 기본 페이지의 Essentials 아래에서 확인할 수 있습니다.
호스트 키 코드를 얻습니다. 이는 앱 키로 이동하고 기본 키를 표시하도록 클릭하고 값을 복사하여 찾을 수 있습니다.
Azure AI 검색용 관리자 API 키 및 URL 가져오기
Azure Portal에 로그인하고, 검색 서비스 개요 페이지에서 검색 서비스의 이름을 가져옵니다. 엔드포인트 URL을 검토하여 서비스 이름을 확인할 수 있습니다. 엔드포인트 URL이
https://mydemo.search.windows.net
인 경우 서비스 이름은mydemo
입니다.설정>키에서 서비스에 대한 모든 권한의 관리자 키를 가져옵니다. 교체 가능한 두 개의 관리자 키가 있으며, 하나를 롤오버해야 하는 경우 비즈니스 연속성을 위해 다른 하나가 제공됩니다. 개체 추가, 수정 및 삭제 요청 시 기본 또는 보조 키를 사용할 수 있습니다.
모든 요청에서 서비스에 보내는 각 요청의 헤더마다 API 키가 필요합니다. 유효한 키는 요청을 보내는 애플리케이션과 이 요청을 처리하는 서비스 간에 요청별로 신뢰를 설정합니다.
REST 클라이언트 설정
엔드포인트 및 키에 대한 변수를 만듭니다.
변수 | 가져올 위치 |
---|---|
admin-key |
Azure AI 검색 서비스의 키 페이지 |
search-service-name |
Azure AI 검색 서비스의 이름. URL은 https://{{search-service-name}}.search.windows.net 입니다. |
storage-connection-string |
스토리지 계정의 액세스 키 탭에서 key1>연결 문자열을 차례로 선택합니다. |
storage-container-name |
인덱싱할 암호화된 파일을 포함하는 BLOB 컨테이너의 이름입니다. |
function-uri |
Azure 함수의 Essentials 아래에 있는 기본 페이지. |
function-code |
Azure 함수에서 앱 키로 이동한 후 클릭하여 기본 키를 표시하고 값을 복사합니다. |
api-version |
2020-06-30으로 둡니다. |
datasource-name |
encrypted-blobs-ds로 둡니다. |
index-name |
encrypted-blobs-idx로 둡니다. |
skillset-name |
encrypted-blobs-ss로 둡니다. |
indexer-name |
encrypted-blobs-ixr로 둡니다. |
각 요청 검토 및 실행
HTTP 요청을 사용하여 보강 파이프라인의 개체를 만듭니다.
인덱스를 만들기 위한 PUT 요청: 이 검색 인덱스는 Azure AI 검색에서 사용하고 반환하는 데이터를 포함합니다.
데이터 원본을 만들기 위한 POST 요청: 이 데이터 원본은 암호화된 Blob 파일을 포함하는 스토리지 계정에 대한 연결을 지정합니다.
기술 세트를 만들기 위한 PUT 요청: 기술 세트는 BLOB 파일 데이터를 암호 해독하는 Azure 함수에 대한 사용자 지정 기술 정의를 지정하고, 문서를 해독한 후 각 문서에서 텍스트를 추출하는 DocumentExtractionSkill을 지정합니다.
인덱서를 만들기 위한 PUT 요청: 인덱서를 실행하면 Blob을 검색하고, 기술 세트를 적용하고, 결과를 인덱싱 및 저장합니다. 이 요청은 마지막으로 실행해야 합니다. 기술 세트의 사용자 지정 기술은 암호 해독 논리를 호출합니다.
인덱싱 모니터링
인덱싱 및 보강은 인덱서 만들기 요청을 제출하는 즉시 시작됩니다. 스토리지 계정에 있는 문서 수에 따라 인덱싱하는 데 다소 시간이 걸릴 수 있습니다. 인덱서가 아직 실행 중인지 확인하려면 인덱서 상태 가져오기 요청을 보내고 응답을 검토하여 인덱서가 실행 중인지 알아보거나 오류 및 경고 정보를 확인합니다.
무료 계층을 사용할 경우 "Could not extract content or metadata from your document. Truncated extracted text to '32768' characters"
메시지가 표시됩니다. 무료 계층의 Blob 인덱싱에는 문자 추출에 대한 32K 제한이 있으므로 이 메시지가 표시됩니다. 더 높은 계층에서는 이 데이터 세트에 대한 이 메시지가 표시되지 않습니다.
콘텐츠 검색
인덱서 실행이 완료되면 일부 쿼리를 실행하여 데이터가 성공적으로 해독되고 인덱싱되는지 확인할 수 있습니다. 포털에서 Azure AI 검색 서비스로 이동하고, 검색 탐색기를 사용하여 인덱싱된 데이터에 대해 쿼리를 실행합니다.
리소스 정리
사용자 고유의 구독에서 작업하는 경우 프로젝트의 끝에서 더 이상 필요하지 않은 리소스를 제거하는 것이 좋습니다. 계속 실행되는 리소스에는 요금이 부과될 수 있습니다. 리소스를 개별적으로 삭제하거나 리소스 그룹을 삭제하여 전체 리소스 세트를 삭제할 수 있습니다.
왼쪽 탐색 창의 모든 리소스 또는 리소스 그룹 링크를 사용하여 포털에서 리소스를 찾고 관리할 수 있습니다.
다음 단계
암호화된 파일을 성공적으로 인덱싱했으므로 인식 기술을 추가하여 이 파이프라인에서 반복할 수 있습니다. 이를 통해 데이터에 대한 추가 인사이트를 보강하고 얻을 수 있습니다.
이중으로 암호화된 데이터로 작업하는 경우 Azure AI 검색에서 사용할 수 있는 인덱스 암호화 기능을 조사할 수 있습니다. 인덱서는 인덱싱을 위해 해독된 데이터가 필요하지만 인덱스가 있으면 고객 관리형 키를 사용하여 검색 인덱스에서 암호화할 수 있습니다. 이렇게 하면 미사용 시 데이터가 항상 암호화됩니다. 자세한 내용은 Azure AI 검색에서 데이터 암호에 대한 고객 관리형 키 구성을 참조하세요.