다음을 통해 공유


Azure AI 검색에서 SQL 관리되는 인스턴스에 대한 공유 프라이빗 링크 만들기

이 문서에서는 가상 네트워크 내에서 실행되는 SQL 관리되는 인스턴스에 대한 프라이빗 연결을 위해 Azure AI 검색에서 인덱서를 구성하는 방법을 설명합니다. 프라이빗 연결은 공유 프라이빗 링크 및 Azure Private Link를 통해 진행됩니다.

관리되는 인스턴스에 대한 프라이빗 연결에서 인스턴스의 FQDN(정규화된 도메인 이름)에는 DNS 영역이 포함되어야 합니다. 현재 Azure AI 검색 관리 REST API만 DNS 영역 사양을 수락하기 위한 resourceRegion 매개 변수를 제공합니다.

관리 REST API를 직접 호출할 수 있지만 Azure CLI az rest 모듈을 사용하여 명령줄에서 관리 REST API 호출을 보내는 것이 더 쉽습니다. 이 문서에서는 REST와 함께 Azure CLI를 사용하여 프라이빗 링크를 설정합니다.

참고 항목

이 문서에서는 속성을 가져오고 단계를 확인하기 위해 Azure Portal을 참조합니다. 그러나 SQL Managed Instance에 대한 공유 프라이빗 링크를 만들 때는 REST API를 사용하고 있는지 확인하세요. 네트워킹 탭에 Microsoft.Sql/managedInstances가 옵션으로 나열되어 있지만 포털은 현재 SQL Managed Instance에서 사용하는 확장 URL 형식을 지원하지 않습니다.

필수 조건

  • Azure CLI

  • Azure AI 검색, 기본 이상. AI 보강 및 기술 세트를 사용하는 경우 표준 2(S2) 이상을 사용합니다. 자세한 내용은 서비스 제한을 참조하세요.

  • 가상 네트워크에서 실행되도록 구성된 Azure SQL Managed Instance

  • Azure AI 검색 및 SQL Managed Instance 둘 다에 대해 최소 기여자 권한이 있어야 합니다.

  • Azure SQL Managed Instance 연결 문자열. 관리 ID는 현재 공유 프라이빗 링크에서 지원되지 않습니다. 연결 문자열에는 사용자 이름과 암호가 포함되어야 합니다.

참고 항목

공유 프라이빗 링크는 Azure Private Link 가격 책정을 통해 청구되며 사용량에 따라 요금이 청구됩니다.

1 - 연결 정보 검색

관리되는 인스턴스의 FQDN을 검색합니다(DNS 영역 포함). DNS 영역은 SQL Managed Instance 도메인 이름의 일부입니다. 예를 들어 SQL Managed Instance의 FQDN이 my-sql-managed-instance.00000000000.database.windows.net이면 DNS 영역은 00000000000입니다.

  1. Azure Portal에서 SQL 관리되는 인스턴스 개체를 찾습니다.

  2. 개요 탭에서 호스트 속성을 찾습니다. 다음 단계를 위해 FQDN의 DNS 영역 부분을 복사합니다.

  3. 연결 문자열 탭에서 이후 단계를 위해 ADO.NET 연결 문자열을 복사합니다. 프라이빗 연결을 테스트할 때 데이터 원본 연결에 필요합니다.

연결 속성에 대한 자세한 내용은 Azure SQL Managed Instance 만들기를 참조하세요.

2 - 요청 본문 만들기

  1. 텍스트 편집기를 사용하여 공유 프라이빗 링크에 대한 JSON을 만듭니다.

    {
        "name": "{{shared-private-link-name}}",
        "properties": {
            "privateLinkResourceId": "/subscriptions/{{target-resource-subscription-ID}}/resourceGroups/{{target-resource-rg}}/providers/Microsoft.Sql/managedInstances/{{target-resource-name}}",
            "resourceRegion": "a1b22c333d44",
            "groupId": "managedInstance",
            "requestMessage": "please approve",
        }
    }
    
  2. 공유 프라이빗 링크에 대한 의미 있는 이름을 제공합니다. 공유 프라이빗 링크는 다른 프라이빗 엔드포인트와 함께 표시됩니다. “shared-private-link-for-search”와 같은 이름은 사용 방법을 상기시킬 수 있습니다.

  3. 이전 단계에서 검색한 "resourceRegion"의 DNS 영역 이름을 붙여넣습니다.

  4. 관리되는 인스턴스의 프라이빗 엔드포인트를 반영하도록 "privateLinkResourceId"를 편집합니다. 관리되는 인스턴스의 구독 ID, 리소스 그룹 이름 및 개체 이름을 제공합니다.

  5. 파일을 create-pe.json으로 로컬로 저장하거나 다른 이름을 사용하여 다음 단계에서 Azure CLI 구문을 업데이트합니다.

  6. Azure CLI에서 dir을 입력하여 파일의 현재 위치를 확인합니다.

  1. 명령줄에서 az login을 사용하여 Azure에 로그인합니다.

  2. 구독이 여러 개인 경우 사용하려는 구독을 사용하고 있는지 확인합니다. az account show.

    구독을 설정하려면 az account set --subscription {{subscription ID}}를 사용합니다.

  3. az rest 명령을 호출하여 Azure AI 검색의 관리 REST API를 사용합니다.

    SQL Managed Instance에 대한 공유 프라이빗 링크 지원은 아직 미리 보기 상태이므로 REST API의 미리 보기 버전이 필요합니다. 이 단계에서는 2021-04-01-preview 이상의 미리 보기 API 버전을 사용합니다. 최신 미리 보기 API 버전을 사용하는 것이 좋습니다.

    az rest --method put --uri https://management.azure.com/subscriptions/{{search-service-subscription-ID}}/resourceGroups/{{search service-resource-group}}/providers/Microsoft.Search/searchServices/{{search-service-name}}/sharedPrivateLinkResources/{{shared-private-link-name}}?api-version=2024-06-01-preview --body @create-pe.json
    

    Azure AI 검색 리소스의 구독 ID, 리소스 그룹 이름 및 서비스 이름을 제공합니다.

    JSON 본문에 지정한 것과 동일한 공유 프라이빗 링크 이름을 제공합니다.

    파일 위치에서 다른 곳으로 이동한 경우 create-pe.json 파일의 경로를 제공합니다. 명령줄에 dir을 입력하여 파일이 현재 디렉터리에 있는지 확인할 수 있습니다.

  4. Enter 키를 눌러 명령을 실행하고

이러한 단계를 완료하면 보류 중인 상태로 프로비전되는 공유 프라이빗 링크가 있어야 합니다. 링크를 만드는 데 몇 분이 걸립니다. 만든 후에는 작동하기 전에 리소스 소유자가 요청을 승인해야 합니다.

4 - 프라이빗 엔드포인트 연결 승인

SQL Managed Instance 쪽에서 리소스 소유자는 사용자가 만든 프라이빗 연결 요청을 승인해야 합니다.

  1. Azure Portal에서 관리되는 인스턴스의 프라이빗 엔드포인트 연결 탭을 엽니다.

  2. 프라이빗 엔드포인트 연결을 나열하는 섹션을 찾습니다.

  3. 연결을 선택한 다음, 승인을 선택합니다. 포털에서 상태가 업데이트되는 데 몇 분 정도 걸릴 수 있습니다.

프라이빗 엔드포인트가 승인되면 Azure AI Search는 생성된 DNS 영역에 필요한 DNS 영역 매핑을 만듭니다.

Azure AI 검색 쪽에서 검색 서비스 네트워킹 페이지의 공유 프라이빗 액세스 탭을 다시 방문하여 요청 승인을 확인할 수 있습니다. 연결 상태는 승인됨이어야 합니다.

“Approved” 공유 프라이빗 링크 리소스를 보여 주는 Azure Portal 스크린샷.

6 - 프라이빗 환경에서 실행되도록 인덱서 구성

이제 관리되는 인스턴스에 대한 아웃바운드 프라이빗 연결을 사용하도록 인덱서 및 해당 데이터 원본을 구성할 수 있습니다.

이 단계에서는 데이터 가져오기 마법사를 사용할 수 있지만 생성된 인덱서는 이 시나리오에 유효하지 않습니다. 이 시나리오에 적합하게 이 단계에서 설명한 대로 인덱서 JSON 속성을 수정해야 합니다. 그런 다음, 업데이트된 인덱서로 파이프라인을 완전히 테스트하려면 인덱서를 다시 설정하고 다시 실행해야 합니다.

이 문서에서는 REST 클라이언트를 가정하고 REST API를 사용하여 모든 속성을 더 쉽게 볼 수 있습니다. 인덱서 및 데이터 원본에 대한 REST API 호출은 공유 프라이빗 링크를 만드는 데 사용되는 관리 REST API가 아 아닌 검색 REST API를 사용합니다. 구문과 API 버전은 두 REST API 간에 다릅니다.

  1. Azure SQL과 마찬가지로 데이터 원본 정의를 만듭니다. 연결 문자열의 형식은 관리되는 인스턴스에 대해 약간 다르지만 다른 속성은 Azure SQL 데이터베이스에 대한 데이터 원본 연결을 구성하는 것과 동일합니다.

    이전에 복사한 연결 문자열을 제공합니다.

    POST https://myservice.search.windows.net/datasources?api-version=2023-11-01
     Content-Type: application/json
     api-key: admin-key
     {
         "name" : "my-sql-datasource",
         "description" : "A database for testing Azure AI Search indexes.",
         "type" : "azuresql",
         "credentials" : { 
             "connectionString" : "Server=tcp:contoso.public.0000000000.database.windows.net,1433; Persist Security Info=false; User ID=<your user name>; Password=<your password>;MultipleActiveResultsSets=False; Encrypt=True;Connection Timeout=30;" 
            },
         "container" : { 
             "name" : "Name of table or view to index",
             "query" : null (not supported in the Azure SQL indexer)
             },
         "dataChangeDetectionPolicy": null,
         "dataDeletionDetectionPolicy": null,
         "encryptionKey": null,
         "identity": null
     }
    
  2. 인덱서 정의를 만들고 인덱서 실행 환경을 "private"으로 설정합니다.

    인덱서 실행은 검색 서비스와 관련된 프라이빗 환경 또는 비용이 많이 드는 여러 고객의 기술 세트 처리를 오프로드하기 위해 내부적으로 사용되는 다중 테넌트 환경에서 발생합니다. 프라이빗 엔드포인트를 통해 연결할 때 인덱서 실행은 프라이빗이어야 합니다.

     POST https://myservice.search.windows.net/indexers?api-version=2023-11-01
      Content-Type: application/json
      api-key: admin-key
        {
         "name": "indexer",
         "dataSourceName": "my-sql-datasource",
         "targetIndexName": "my-search-index",
         "parameters": {
             "configuration": {
                 "executionEnvironment": "private"
             }
         },
         "fieldMappings": []
         }
    
  3. 인덱서를 실행합니다. 인덱서 실행에 성공하고 검색 인덱스가 채워지면 공유 프라이빗 링크가 작동합니다.

Azure Portal에서 또는 인덱서 상태 API를 사용하여 인덱서의 상태를 모니터링할 수 있습니다.

Azure Portal에서 검색 탐색기를 사용하여 인덱스의 내용을 확인할 수 있습니다.

이전 단계에서 인덱서가 실행되고 관리되는 인스턴스의 콘텐츠를 성공적으로 인덱싱했다면 테스트가 성공한 것입니다. 그러나 인덱서가 실패하거나 인덱스에 콘텐츠가 없는 경우 인덱서에서 아웃바운드 요청을 호출할 수 있는 클라이언트를 선택하여 개체를 수정하고 테스트를 반복할 수 있습니다.

쉬운 선택지는 Azure Portal에서 인덱서를 실행하는 것이지만 더 정밀한 작업을 위해 REST 클라이언트 및 REST API를 사용할 수도 있습니다. 프라이빗 연결에 검색 서비스가 구성되지 않은 경우 Search에 대한 REST 클라이언트 연결은 공용 인터넷을 통해 수행할 수 있습니다.

테스트를 위한 사항을 다시 알려드립니다.

  • REST 클라이언트를 사용하는 경우 관리 REST API2021-04-01-Preview API 버전을 사용하여 공유 프라이빗 링크를 만듭니다. 검색 REST API안정적인 API 버전을 사용하여 인덱서 및 데이터 원본을 만들고 호출합니다.

  • 데이터 가져오기 마법사를 사용하여 인덱서, 데이터 원본 및 인덱스를 만들 수 있습니다. 그러나 생성된 인덱서에는 올바른 실행 환경 설정이 없습니다.

  • Azure Portal에서 데이터 원본 및 인덱서 JSON을 편집하여 실행 환경 및 연결 문자열을 포함한 속성을 변경할 수 있습니다.

  • Azure Portal에서 인덱서 다시 설정하고 다시 실행할 수 있습니다. 다시 설정은 모든 문서를 완전히 다시 처리하므로 이 시나리오에서 중요합니다.

  • 검색 탐색기를 사용하여 인덱스의 내용을 확인할 수 있습니다.

참고 항목